![例子](https://rvso.com/image/281557/%E4%BE%8B%E5%AD%90.png)
解決方法是單獨使用pdfcrop
(在終端機中)裁剪我們要匯入的 PDF 檔案。
但是 - 從文件內部匯入 PDF 文件時有沒有辦法刪除白邊距tex
?
導入 PDF 文件的兩個常見包是pdfpages
或graphicx
。我可以使用文件pdfcrop
內為他們「預處理」文件嗎?tex
答案1
一個新命令,其工作方式類似於\includegraphics
,但會裁剪 pdf 圖像:
\newcommand{\includeCroppedPdf}[2][]{%
\immediate\write18{pdfcrop #2}%
\includegraphics[#1]{#2-crop}}
記住: \write18
需要啟用。對於大多數 TeX 發行版,--shell-escape
在運行latex
/pdflatex
等時設定標誌。
例子
\documentclass{article}
\usepackage{graphicx}
\newcommand{\includeCroppedPdf}[2][]{%
\immediate\write18{pdfcrop #2}%
\includegraphics[#1]{#2-crop}}
\begin{document}
\includeCroppedPdf[width=\textwidth]{test}
\end{document}
避免每次編譯時進行裁剪
為了避免在每個文件編譯時進行裁剪,您可以檢查裁剪的文件是否已存在。 (一些校驗和會更好)
\documentclass{article}
\usepackage{graphicx}
\newcommand{\includeCroppedPdf}[2][]{%
\IfFileExists{./#2-crop.pdf}{}{%
\immediate\write18{pdfcrop #2 #2-crop.pdf}}%
\includegraphics[#1]{#2-crop.pdf}}
\begin{document}
\includeCroppedPdf[width=\textwidth]{test}
\end{document}
MD5 校驗和範例
想法是保存影像的MD5並在下次運行時進行比較。這需要\pdf@filemdfivesum
巨集(僅適用於PDFLaTeX
或LuaLaTeX
)。對於您可以與實用程式一起XeLaTeX
使用或進行文件比較。\write18
md5sum
\documentclass{article}
\usepackage{graphicx}
\usepackage{etoolbox}
\makeatletter
\newcommand{\includeCroppedPdf}[2][]{\begingroup%
\edef\temp@mdfivesum{\pdf@filemdfivesum{#2.pdf}}%
\ifcsstrequal{#2mdfivesum}{temp@mdfivesum}{}{%
%file changed
\immediate\write18{pdfcrop #2 #2-crop.pdf}}%
\immediate\write\@auxout{\string\expandafter\string\gdef\string\csname\space #2mdfivesum\string\endcsname{\temp@mdfivesum}}%
\includegraphics[#1]{#2-crop.pdf}\endgroup}
\makeatother
\begin{document}
\includeCroppedPdf[width=\textwidth]{abc}
\end{document}
答案2
如果有人因檔案名稱路徑中的空格而遇到問題,則可以透過以下方法解決該問題:
\documentclass{article}
\usepackage{graphicx}
\usepackage{etoolbox}
\makeatletter
\newcommand{\includeCroppedPdf}[2][]{\begingroup%
\edef\temp@mdfivesum{\pdf@filemdfivesum{"#2.pdf"}}%
\ifcsstrequal{#2mdfivesum}{temp@mdfivesum}{}{%
%file changed
\immediate\write18{pdfcrop "#2.pdf" "#2-crop.pdf"}}%
\immediate\write\@auxout{\string\expandafter\string\gdef\string\csname\space #2mdfivesum\string\endcsname{\temp@mdfivesum}}%
\includegraphics[#1]{"#2-crop"}\endgroup}
\makeatother
\begin{document}
\includeCroppedPdf[width=\textwidth]{./path to file with spaces/abc efg}
\end{document}
\graphicspath
注意:更改後不起作用