在命令行中转义反斜杠

在命令行中转义反斜杠

问题已解决,请参阅问题末尾了解详细信息

我将文件路径作为参数传递给 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}

编辑-解决方案

下面的答案有助于分离上述命令的多个问题。

  1. 正斜杠在 Windows 中工作正常

  2. 可以通过在每个路径部分前面添加以下内容来转义反斜杠(如果需要)\string

    (例如: C:\string\dirname\string\filename.ext

  3. -job-name不应包含完整路径。-output-directory应与一起使用来-job-name指定路径,否则会发出错误。

  4. “文件未找到”错误实际上是由于另一个问题引起的。如您所见,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}

相关内容