查看中間“.ps”檔案會有所幫助

查看中間“.ps”檔案會有所幫助

我使用 Inkscape 建立圖形並將其匯出為 PDF,以便將它們包含到 LaTeX 文件中(使用 \includegraphics 並使用 pdflatex)。我沒有註意到有什麼問題,直到有人告訴我我的圖形在 Mac OS X 上無法正確顯示。

問題似乎出在 pdflatex 中,因為單獨從 inkscape 匯出的 PDF 在 Mac 上顯示得很好。由於我使用 Linux,有時也使用 Windows,所以我從來沒有意識到有問題!

在試圖找出可能導致問題的原因後,我偶然發現

\包括圖形PDF,顏色問題Inkscape → PDF → 包含圖形 → 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

pdflatex如果 Inkscape 圖像通過嵌入然後顯示在基於 PDFKit 的檢視器上,我也遇到過這個問題。 (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 中有效。

答案4

查看中間“.ps”檔案會有所幫助

和 RalfB 一樣,我發現先轉換為 PS,然後再轉換成 PDF 會讓 Latex 更滿意。使用這個腳本有幫助:

inkscape foo.svg --export-ps=foo.ps
pstopdf foo.ps -o foo.pdf

然後像平常一樣編譯你的乳膠檔。

正如丹尼爾所提到的,與轉換為“.ps”相比,inkscape 轉換為“.pdf”的情況一定是混亂的。

結果

以下是之前/之後的圖片,顯示透過 ps 呈現所需的透明度:

之前 (svg -> pdf)

中間ps之前

之後(svg -> ps -> pdf)

中間ps後

相關內容