我正在尝试使用包将 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
完成:\Verbdef
newverbs
\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}