问题已解决,请参阅问题末尾了解详细信息
我将文件路径作为参数传递给 tex 脚本,由 Windows 上的 pdflatex 运行。
以下是命令的示例:
pdflatex -interaction=nonstopmode -halt-on-error -job-name=c:/target/job1 "\newcommand{\inputFileParam}{c:/Source/job1}\input{c:/Scripts/somescript.tex}"
请注意,路径使用正斜杠分隔。Windows 无法识别此符号。因此在 Windows 上我需要使用反斜杠。但是,我找不到正确转义属于路径的反斜杠的方法。
除非正确转义,否则 pdflatex 会将以反斜杠开头的序列视为命令,并出现未定义的命令错误。
总而言之,如何在以下位置转义路径反斜杠:
\newcommand{\inputFileParam}{c:\Source\job1}\input{c:\Scripts\somescript.tex}
编辑-解决方案
下面的答案有助于分离上述命令的多个问题。
正斜杠在 Windows 中工作正常
可以通过在每个路径部分前面添加以下内容来转义反斜杠(如果需要)
\string
:(例如:
C:\string\dirname\string\filename.ext
)-job-name
不应包含完整路径。-output-directory
应与一起使用来-job-name
指定路径,否则会发出错误。“文件未找到”错误实际上是由于另一个问题引起的。如您所见,
C:\Source\job1
没有提供扩展名。指定目录中确实存在这样的没有扩展名的文件。但是,如果没有提供,pdflatex 似乎会假定 PDF 扩展名。因此,当我添加文件时,C:\Source\job1.pdf
命令可以完美运行。需要注意的是,控制台和日志中的错误字符串都引用了“c:\Source\job1”,没有扩展名。
答案1
TeX(和大多数 Windows API 都乐意用作/
文件分隔符,因此您可以使用
\newcommand{\inputFileParam}{c:/Source/job1}\input{c:/Scripts/somescript.tex}