我使用了 TeX 的 OzTeX 实现,并且我还曾经使用纯 TeX 而不是 LaTeX 来排版我的文档,因此使用 OzTeX 插入图像没有任何问题,现在我回到了 TeX 文档,正在使用 TeXWorks 前端,但我无法插入图像.eps
文件,似乎\includegraphics
宏仅适用于 LaTeX,所以我无法使用它,关于如何在使用纯 TeX 时插入图像有什么想法吗?
答案1
到目前为止,最简单的方法是使用miniltx
允许您将 LaTeX 的graphics
包与纯 TeX 一起使用:
\input miniltx %
\input graphicx.sty %
\includegraphics{<filename>}
\bye
或者
\input graphicx.tex %
\includegraphics{<filename>}
\bye
(有关细微差别请参见此处的评论。)
您唯一需要注意的是,TeXworks 是围绕基于 PDF 的工作流程设计的。因此,您需要将.eps
文件转换为.pdf
使用格式epstopdf
,然后在 TeXworks 中使用 pdfTeX。(在 LaTeX 中,现在有从.eps
到.pdf
文件的自动转换方法,但这不适用于纯 TeX。)
答案2
epsf
您可以使用为纯 TeX 设计的简单包:
\input epsf
%optional \epsfxsize=dimen or \epsfysize=dimen
\epsfbox{filename.eps}
答案3
对于pdftex
用户来说,这种\pdfximage
方法似乎很有吸引力。该\pdfximage
命令创建一个图像对象。尺寸可以以类似于规则的方式控制,即
\pdfximage width ... height ... depth ... <general text>
<general text>
文件名在哪里。(\pdfximage
还有更多参数,可以在pdftex
手动的。对于调整边界框等高级操作也请参阅手册。)
尽管如此,\pdfximage
只会创造目的但尚未插入任何内容。因此\pdfrefximage
必须使用。命令
\pdfrefximage <integer>
<integer>
在 shipout 的输出中放置一个包含存储在 引用的对象中的图像的 whatsit 。原则上,可以输出与每个图像对象相对应的编号,写下来,然后稍后执行,例如\pdfrefximage3
。但这很乏味,而且容易出错。这就是为什么有 ,\pdflastximage
它是一个计数寄存器,始终包含最后一个 的编号\pdfximage
,因此包含图像可以归结为以下代码
\pdfximage width 3cm {example-image-a.pdf}
\pdfrefximage\pdflastximage
\bye
TL;DR: 请参阅此行正上方的代码
答案4
宏\inspic
由 提供opmac.tex
。您可以设置\picwidth
寄存器或\picheight
寄存器(或两者,但在这种情况下外观可能会变形),并且可以键入\inspic file.jpg
或\inspic file.pdf
等。
\input opmac
\picwidth=3cm \inspic file.png
\bye
您可以opmac.tex
研究一下如何在原始级别定义这个宏:
\def\inspic #1 {\hbox{%
\pdfximage \ifdim\picwidth=0pt \else width\picwidth\fi
\ifdim\picheight=0pt \else height\picheight\fi {\picdir#1}%
\pdfrefximage\pdflastximage}}
这在 pdfTeX 中有效。使用 XeTeX 时,opmac-xetex.tex
将加载附加宏文件并\inspic
重新定义宏:
\def\inspic #1 {\hbox{\def\tmp##1.pdf##2\relax{%
\ifnum\strcmp{##2}{.pdf}=0 \XeTeXpdffile \else \XeTeXpicfile \fi}%
\lowercase{\tmp #1}.pdf\relax \picdir#1
\ifdim\picwidth=0pt \else width\picwidth\fi
\ifdim\picheight=0pt \else height\picheight\fi}}
该代码的主要复杂性在于 XeTeX 需要对 PDF 使用不同的原语(包括(\XeTeXpdffile
))并且对另一个位图图像(\XeTeXpicfile`)使用不同的原语。