Graphics Latex
Build Graphics
以為解決了png的問題,gif格式的圖檔應該是水到渠成,自然也是沒問題才對,但是想錯了,因為仍然無法在我的系統中,放入TeX文件內,既使是轉成eps的圖檔,仍然會出錯,在latex編譯的時候,就己經是無法處理了,我想是否是latex的版本不能夠處理,還得查證,所以最後只能用jpg格式來解決這個問題了。
找了好久才知道,原來dvipdfmx對於png的支援,還不太完整,原本加入
\usepackage[dvips]{graphicx} \includegraphics[width=.3\textwidth]{images/MagicSquare.png}
然後用bmeps作出bb檔,編譯即可,但是一直都編譯不過,後來才知道,只要是png的圖檔,dvipdfmx的支援就很差,最好是用jpg的格式,比較沒有問題,dvipdfmx的支援也較完整。
為了要將jpeg的圖檔,放入tex檔案之中,選擇使用\usepackage[dvips]{graphicx}的呼叫方式,但是即使是將jpeg的圖檔,己經轉成了eps,還是無法放入tex文檔之中,在編譯時會出錯,找了好久才知道問題出來沒有bounding box,上網查詢才得知需要bmeps這個utils來作出bb檔。
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/bmeps login cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/bmeps co -P modulename
無法使用cvs的方式下載,所以只好在中心下載tarball,並且configure/make作出bmeps的執行檔,使用方式如下:
Usage: env LD_LIBRARY_PATH=~/Bmeps ./bmeps FarmGrid.jpg FarmGrid.bb
因為bmeps會呼叫libbmeps.so.1.2,所以將路徑指出來,餵給它自己去尋找此so檔,可以在Usage找到更多使用的方式。
這樣一來,不管格式是PNG/JPEG/NetPBM,都可以先作出Bounding Box,讓latex計算作出dvi檔。
http://png2pdf.sourceforge.net/usage.html 如果要直接使用png,來放入tex文件之中,通常是使用makebb,來作出Bounding Box的訊息,讓latex可以知道大小,之後才放整個版面的計算。但是png2pdf這個style,可以直接使用png,來放入tex文件中。\documentclass[12pt,a4paper,titlepage]{article} \usepackage{ifpdf} % LaTeX or pdfLaTeX \usepackage{color} % we want to use background color \usepackage{graphicx} \ifpdf \usepackage{background} % for the background effects, PPower4 necessary \fi \definecolor{bgred}{rgb}{1.0,0.501961,0.501961} ... \begin{document} ... \begin{figure} {\centering \includegraphics[width=5cm]{stefan_255_rgba.png} \caption{Some caption} \label{fig:some-label} } \end{figure} ... \end{document}圖形的支援 http://www.ctex.org/documents/latex/graphics/graphics.html 13.3 非EPS圖形文件 EPS 格式的圖形文件可以很容易的插入到 LATEX 文件中, 而非 EPS 格式的圖形文件則不是將插圖命令中的文件名替換一下就可以的。 對於不同的圖形驅動來說,所支持的圖形格式也不盡相同。而不同版本的 TEX 軟件也有各自支持的非 EPS 格式圖形。一般來說,除了 .png 格式的圖形文件外,其它的非 EPS 格式圖形基本上只有一兩種圖形驅動 支持直接使用它們。更多的情況是需要先轉換為 EPS 格式的圖形文件 13.2再插入到 LATEX 文件中。 這樣就要求有相應的圖形格式轉換工具。儘管使用非 EPS 格式的圖形文件 不如 EPS 圖形文件簡單方便,但由於它們可能比 EPS 文件要小,而一些 繪圖軟件也不能生成 EPS 文件,所以有時還是希望在 DVI 文件轉換為 PS 文件時再對其進行格式轉換。如果使用 dvips,這種即時轉換的命令可用 \DeclareGraphicsRule來給出。例如用這種方法將 file2.gif 加 到 LATEX 文檔中需要以下幾步: 1. 找到一個支持命令行方式的 GIF 到 EPS 的轉換工具(假設 為 gif2eps)。 2. 建立一個註明 file2.gif 自然大小的 BoundingBox 文件。為此, 1. 用 ebb file2.gif 直接得到 BoundingBox 文件13.3。 2. 將 file2.gif 轉為 PostScript 文件,若其中有 BoundingBox 行, 則將此行存放到文件 file2.gif.bb 中,否則,可按照 第 3.3 節的方法來計算 BoundingBox 並將所得 到的結果放在 file2.gif.bb 中的 %%BoundingBox: 後。然後將 PostScript 文件刪除。 3. LATEX 文件中,在 \includegraphics 命令前,加入圖形規則: \DeclareGraphicsRule{.gif}{eps}{.gif.bb}{`gif2eps #1} 當遇到 \includegraphics{file.gif} 時, LATEX 從 file.gif.bb 中讀取 BoundingBox 並告訴 dvips 使用 gif2eps 來將 file2.gif 轉為 EPS 文件。 Subsections * 13.3.1 GIF 的例子 * 13.3.2 對非 EPS 圖形的直接支持 13.3.1 GIF 的例子 由于插入非 EPS 格式的图形所需的命令依赖于操作系统和图形格式转换程序, 在此提供两个 Unix 系统下常用的转换程序的例子。 \DeclareGraphicsRule{.gif}{eps}{.gif.bb}{`convert #1 'eps:-' } \begin{figure} \centering \includegraphics[width=3in]{file2.gif} \caption{GIF Graphic} \end{figure} 这里使用 convert(包含在 ImageMagick 中)来 将 GIF 转为 EPS。而命令: convert file2.gif 'eps:-' 将 file2.gif 转为 EPS 格式的图形并输出到标准输出。 另一方法是使用 giftoppm, ppmtopgm 和 pgmtops 来 将 GIF 转为 EPS。只需在上例中将图形规则改为: \DeclareGraphicsRule{.gif}{eps}{.gif.bb}% {`giftoppm #1 | ppmtopgm | pgmtops} 13.3.2 对非 EPS 图形的直接支持 虽然 LATEX 和 dvips 不断地被要求直接支持非 EPS 图形并使 得如同 EPS 图形一样简单方便。的确,这样做会带来不少方便,但却存在 着不少问题。 * 因为 LATEX 是通过从 EPS 文件中读取 BoundingBox 来确定图形 文件的大小的,加上 LATEX 只能读取 ASCII 文件,所以其它的非 EPS 图形 文件(绝大多数是二进制文件)会阻碍 LATEX 获取图形大小的信息。 * 进一步讲,支持非 EPS 图形要求 dvips 具有图形格式转换的 能力(GIF-to-PS, TIFF-to-PS, 等)。这需要大量的编程和维护工作。 有鉴于此, dvips 提供调用外部图形转换程序的机制而不是 直接支持非 EPS 图形文件。这种机制允许 LATEX 通过设置 \DeclareGraphicsRule 来使 dvips 调用指定的外部图形转换程序。 这样使用者可自己选择图形转换程序, dvips 也不用捆绑 一些图形转换功能,从而比直接支持非 EPS 图形文件更具灵活性。 仅管 LATEX 和 dvips 一般不支持直接插入非 EPS 的图形, 也还是有几个例外: 1. 如果 dvips 编译时用了参数 -Demtex,它将支持 一些 EmTEX 的 \special 命令,允许直接插入 PCX, BMP 或 MSP 位图。 2. Macintosh 下的共享 TEX/LATEX 软件 Oztex2.1 中, DVI 到 PS 的 转换程序 OzDVIPS 允许通过 \special 命令来使用 MacPaint 和 PICT 文件。详见 http://www.kagi.com/authors/akt/oztex.html 3. 一些商业版本的 LATEX 支持非 EPS 的图形。 1. Macintosh 下的 Textures 支持 PICT 图形。详见 http://www.bluesky.com/ 2. Y&Y 的 Windows 版本的 TEX 中, DVI 到 PS 的转换程序 DVIPSONE 支持 TIFF 图形。详见 http://www.YandY.com/ 即使上述方法中, TEX 仍然无法直接从二进制的图形文件中获得 其图形的大小。为使 LATEX 能正确地给所插入的图形分配空间, 使用者必须用 .bb 文件或在 \includegraphics 中 用 bb 选项给出图形的大小。