我使用 Inkscape 创建图形,然后将其导出为 PDF,以便将它们包含在 LaTeX 文档中(使用 \includegraphics 和 pdflatex)。直到有人告诉我我的图形在 Mac OS X 上无法正确显示时,我才注意到有问题。基本图形部分(例如不透明度设置小于 100% 的框或圆圈)根本不显示。
问题似乎出在 pdflatex 上,因为从 inkscape 导出的 PDF 在 Mac 上显示正常。由于我使用的是 Linux,有时也使用 Windows,所以我从未意识到存在问题!
在试图找出问题的原因后,我偶然发现了
\includegraphics PDF,颜色问题 和 Inkscape → PDF → includegraphics → XeLaTeX → 更改颜色
但这并没有解决我的问题。
类似的问题被问到嵌入的 PDF 图形中不透明到透明的渐变丢失但现在答案已经真的给出了。
我发现将导出的 PDF 转换为 PS 然后再转换回 PDF 可以解决问题,但之后图形质量会很差。
我错过了什么?感谢您的任何建议。
以下是一个最小的工作示例:
\documentclass[a4paper]{article}
\usepackage[pdftex]{color,graphicx}
\begin{document}
\begin{figure}[htb]
\begin{center}
\includegraphics[width=\columnwidth]{test_diagram}
\caption{Block diagram created with Inkscape 0.48}
\end{center}
\end{figure}
\end{document}
所含图形可在此处下载:https://www.dropbox.com/s/mrtj0c3u0ng6a39/test_diagram.pdf
Inkscape:0.48.3.1 r9886
pdfTeX,版本 3.1415926-2.4-1.40.13(TeX Live 2012/Debian)
答案1
如果通过基于 PDFKit 的查看器嵌入 Inkscape 图像pdflatex
并显示在该查看器上,我也看到了这个问题。(PDFKit 是 OS X 的内置 PDF 渲染引擎,并被 Skim、Preview 和许多其他程序使用)。
显然,Inkscape 有一种“不寻常”的方式来指定透明度,这些透明度无法在嵌入后保留下来pdflatex
。
对我来说唯一可靠的解决方法是通过压平透明胶片来“净化”PDF。我使用 ghostscript(通过脚本ps2pdfwr
)和dHaveTransparencies=false
开关来实现此目的:
ps2pdfwr -dCompatibilityLevel=1.4 -dHaveTransparency=false test_diagram.pdf sanitized.pdf
缺点是这最终会将图像栅格化。默认分辨率为 720 dpi,对于大多数用例来说应该没问题。但是,如果您需要更好(或更低)的质量,您也可以指定分辨率:
ps2pdfwr -dCompatibilityLevel=1.4 -r1200 -dHaveTransparency=false test_diagram.pdf sanitized.pdf
在 1200 dpi 下,您的约 5 KiB 图像在其光栅化版本中会增加到约 78 KiB。但是,PDF 透明胶片是许多如果涉及到输出设备,就会出现奇怪的问题——不仅仅是由 Inkscape 生成的。例如: 在 TikZ 中使用不透明度会使整个页面在打印时变得“更粗糙”。因此,我认为这是必须付出的代价。
答案2
它似乎在这里起作用,调整 alpha 不透明度而不是一般不透明度。
http://www.inkscapeforum.com/viewtopic.php?f=28&t=15739&p=65180#p65180
我正在使用 pdftex 和 Inkscape 0.91
答案3
我在使用 Inkscape/Mac OS/LaTeX 时也遇到了同样的问题。我可以通过只对图像中有问题的部分进行栅格化,而将其余部分矢量化来解决这个问题。为此,我打开了 SVG 文件,在 Inkscape 中选择了有问题的对象,然后执行了“编辑”-->“制作位图副本”,然后保存为 PDF。我在 Inkscape 0.91 中无法解决这个问题,但在 Inkscape 0.48 中却可以。