我有一系列 TikZ 图形需要包含在 Word 文档中(会议要求提交 Word)。允许的格式为 EPS 和 TIFF。这些图形显然是矢量图形;它们是
pgfplots.external
使用库和导出到单独的.pdf 文件\tikzexternalize
;转换为 eps 使用
pdftops -eps foo.pdf
导入到 Word 2003 中,出现不明确的错误(加载文件错误或类似情况)。
我找到了这个此主题关于这个话题,但还没有定论。奇怪的是,从使用 IPE 创建的 PDF 转换而来的 EPS 文件可以很好地导入。
我需要做哪些更改才能使导入工作正常?
答案1
我总结了我的发现。希望其他人会觉得它有用。
由于允许使用 EPS 和 TIFF 图形,因此在 Gimp 中以 600dpi 打开 EPS 文件(根据图形使用抗锯齿和颜色/黑白)并使用 LZW 压缩保存为 TIFF 后,便可生成可导入的图形。尽管位图大小为 4000x1600 左右,但文件大小与 EPS 图形相当,而且看起来不错。
由于某种原因,尝试使用 ImageMagick 实现相同功能
convert -density=600
会导致生成奇怪的文件,有时文件大小还会非常大。正如@JosephWright 所建议的,我尝试通过 dvips 来生成 eps。问题是 dvips 设置了错误的边界框:要么它生成非 EPS 文件,因此将整个页面作为边界框,要么使用 ,
-E
边界框太小(根据手册页,它仅从字形计算边界框,而不从可能出现在图中的线条和其他图形计算边界框)。解决方案是使用
dvips -E
错误边界框生成 EPS 文件,然后使用以下方法修复它:埃普斯工具(在 Debian 中,包epstool
),如 @percusse 所建议的。它需要一个临时的 EPS 文件(我使用了后缀.foo.eps
),tikz 的设置如下所示:\usetikzlibrary{pgfplots.external} \tikzexternalize[] \tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource" && dvips -E -o "\image".foo.eps "\image".dvi && epstool --copy --bbox "\image".foo.eps "\image".eps && rm "\image".foo.eps "\image".dvi }}
生成的 EPS 确实可以导入到 Word 中,但是丑陋的(可能是因为没有抗锯齿功能)并且无法使用。
结论:
编辑 - 金牌得主:在 IrfanView 中打开,复制,直接粘贴到 Word 中(感谢 Joseph 的建议;我的情况无法做到这一点)
银奖得主:使用 Gimp(ghostscript)进行渲染,保存为 TIFF 并作为位图导入到 Word 中;即使 Word 能够加载 EPS,也无法很好地渲染 EPS。
避免参加必须使用 Word 格式提交文件的会议。
答案2
不久前,我在为 Word 生成 EPS 文件时也遇到了问题(不是 TikZ 内容,但无论如何)。不记得目标版本(可能是 2003 或 2007),但我花了一些时间才找到一个成功的工作流程。最后我这样做了:
$ pdf2ps file.pdf - | ps2eps | eps2eps - file.eps
希望它对你的情况也适用。
答案3
要创建 TIFF,我建议生成一个大约是所需图形大小两倍的 PDF,然后在 IrfanView 中查看 PDF 并保存为 TIFF,这样您就可以生成高质量的图像。请注意,当您生成较大的图形时,您需要改变标记大小、文本大小、线条粗细和刻度粗细,以便 Word 中的缩放图像产生理想的图形(请参阅下面的代码示例)。这与 @JosephWright 的方法非常相似,但保存了一个图像文件,一些期刊需要该文件,该文件与文本中的图像分开。
使用你的 LaTeX 前端生成图形的 PDF,我使用如下的 .tex 文件:
\documentclass{article}
\newlength\paperSize
\newlength\figureheight
\newlength\figurewidth
\newlength\markSize
\setlength{\paperSize}{6in}
\usepackage[paperheight=1\paperSize,paperwidth=1.25\paperSize,margin=0in]{geometry}
\usepackage{siunitx}
%for .tikz figures:
\usepackage{pst-all}
\usepackage{pstricks-add}
\usepackage{pgf}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{plot coordinates/math parser=false}
\usetikzlibrary{plotmarks}
\begin{document}
\setlength\figureheight{0.65\paperSize}
\setlength\figurewidth{0.65\paperSize}
\tikzstyle{every node}=[font=\huge] %vary font size in figure
\setlength\markSize{5pt} %vary marker size
\begin{figure}
\input{sample_figure.tikz}
\end{figure}
\end{document}
输入文件如下所示,其中使用 mat2tikz(用于生成 .tikz 的 Matlab 函数文件)自动包含变量:
\begin{tikzpicture}
\begin{axis}[%
major tick style={draw=black, thick},
width=\figurewidth,
height=\figureheight,
scale only axis,
xmin=0,
xmax=2,
xtick={0,0.5,...,2},
xlabel={x label text},
ymin=0,
ymax=2,
ytick={0,0.5,...,2},
ylabel={y label text},
legend style={at={(1.03,0.5)},anchor=west,draw=black,fill=white,legend cell align=left}
]
\addplot [
color=black,
only marks,
mark=triangle*,
mark options={mark size=1\markSize,solid}
]
table[row sep=crcr]{
0 0.75\\
1.5 1.25\\
};
\addlegendentry{Legend entry 1};
\addplot [
color=black,
only marks,
mark=square*,
mark options={mark size=0.85\markSize,solid}
]
table[row sep=crcr]{
0.25 1.0\\
0.75 1.75\\
};
\addlegendentry{Legend entry 2};
\end{axis}
\end{tikzpicture}
PDF 版本如下所示:
一旦你有了你的图形的 PDF,用IrfanView打开并执行以下操作:
- 转换为灰度(ctrl+G)
- 自动裁剪(ctrl+shift+Y)
- 将图像分辨率更改为 300 dpi (ctrl+R, 96>300)
- 另存为 TIFF(S,将“保存类型”更改为“TIF”)
右键单击并查看属性应显示 300 dpi,而不是 96 dpi。
答案4
我一直在努力尝试将standalone
LaTeX 生成的 PDF 导入 Word,找到了可接受的答案,但它没有提供比使用 IrfanView 和使用复制和粘贴选项更多的信息,但质量仍然不足以用于 Word(用于发布论文),因为当您放大图像时,它会扭曲。我也尝试使用 ImageMagick 和 Adobe Acrobat Pro DC 转换 PDF,但质量太差了。还将 LaTeX 文件导出为pdftops
EPS,但图像看起来真的很糟糕。
我standalone
使用pgfplots
和创建了一个图表tikzpicture
。
解决方案:
- 打开 IrfanView(已安装 Ghostscript 插件)
- 在“选项”-“属性/设置”-“Postscript 选项”中设置要导入的 PDF 的质量 - 将 DPI 设置为适合您的 DPI(我使用了 1000 x 1000)
- 打开 PDF 文件
- 使用文件导出图像 — 另存为...
- 将“保存类型:”更改为 EMF - 增强窗口图元文件并保存文件
- 在 Office Word 中,转到插入 — 插入图像并插入 EMF 文件
OP 需要 EPS 或 TIFF,您也可以另存为 TIF 并将图像导入 Office Word,但质量不如使用 EMF 时好。我尝试了很多次使用 EPS,但没有找到从 PDF 转换为真正高质量的图像的解决方案。