如何在 includepdf 文件名中使用波浪号或空格?

如何在 includepdf 文件名中使用波浪号或空格?

我正在尝试使用包将 pdf 包含在文档中pdfpages,但是当文件名包含波浪符号或空格时我遇到了麻烦。

例如

\includepdf[pages=-]{C:/Users/MYUSER~1/AppData/Local/Temp/mypdfpdf.pdf}

\includepdf[pages=-]{C:/Users/MYUSER FOO/AppData/Local/Temp/mypdfpdf.pdf}

我曾尝试通过 逃脱$\sim$但没有成功……

是否可以删除文件名中的波浪号/空格?

提前致谢

答案1

关于波浪号:显然, 是~按其通常含义理解的,而不是按字面意思理解~。我收到Package pdfpages Error: Cannot find file `test\nobreakspace {}it'文件错误。逐字逐句地理解文件名应该会有所帮助。这可以通过从包中test~it完成:\Verbdefnewverbs

\usepackage{newverbs}

% ...

\Verbdef\filename{C:/Users/MYUSER~1/AppData/Local/Temp/mypdfpdf.pdf}
\includepdf[pages=-]{\filename}

也可以写成\string~而不是~每次都是这样。您不应该使用数学符号来“转义”文件名中的这些字符。排版和文件读取是两件完全不同的事情。

最后,您可以使用 e-TeX 原语\detokenize{...}来清理文件名:

\includepdf[pages=-]{\detokenize{C:/Users/MYUSER~1/AppData/Local/Temp/mypdfpdf.pdf}}

要允许空格,您需要将文件名包装在 中" "。最好避免在文件名中使用任何空格、波浪号或任何其他特殊字符。

答案2

注意:由于较新版本的 LaTeX 和graphicx(因此也pdfpages)确实支持带有空格的文件名,因此此答案仅具有历史意义。从 2019 年 11 月起,仅grffile出于兼容性考虑,它是一个空存根。

PDF 文件的文件名中有\includegraphics空格\includepdf如果您使用包,图形文件

\usepackage{grffile}
\usepackage{pdfpages}
% …
\includepdf[pages=-]{test this.pdf}

为了更逐字解释文件名,您可以使用\detokenize

\usepackage{grffile}
\usepackage{pdfpages}
% …
\includepdf[pages=-]{\detokenize{test~this.pdf}}

答案3

如果您在上传名称中带有空格的文件时遇到问题(例如 test 1.pdf、test 2.jpg 等)。

在 includepdf 函数中使用文件之前,您需要在文件名前后添加双引号(即“test 1”.pdf,“test 2”.jpg 等)。

\usepackage{grffile}

\usepackage{pdfpages}

\includepdf[pages=-]{"test this".pdf}

相关内容