xelatex 文件名包含 $ 且后跟其他字符的错误

xelatex 文件名包含 $ 且后跟其他字符的错误

我在从命令行运行 xelatex 时遇到一个问题,例如,当我运行这个时,我得到输出 pdf 名称的意外行为(注意“$”和“T”之间没有空格):

xelatex Doc\ -\ Test\ Customer\ J\ Doe\ \&\$T\ \(None\).tex

输出的 PDF 名称为(缺少“$T”):

Doc - Test Customer J Doe & (None).pdf

但是,当我运行这个(注意“$”和“T”之间的空格)时,我得到了我期望的输出文件名:

xelatex Doc\ -\ Test\ Customer\ J\ Doe\ \&\$\ T\ \(None\).tex

输出的 PDF 名称为:

Doc - Test Customer Bren Teslyt &$ T (None).pdf

我的 texlive / xelatex 版本如下:

XeTeX 3.14159265-2.6-0.99998 (TeX Live 2017) kpathsea version 6.2.3 Copyright 2017 SIL International, Jonathan Kew and Khaled Hosny. There is NO warranty. Redistribution of this software is covered by the terms of both the XeTeX copyright and the Lesser GNU General Public License. For more information about these matters, see the file named COPYING and the XeTeX source. Primary author of XeTeX: Jonathan Kew. Compiled with ICU version 58.2; using 58.2 Compiled with zlib version 1.2.11; using 1.2.11 Compiled with FreeType2 version 2.7.1; using 2.7.1 Compiled with Graphite2 version 1.3.9; using 1.3.9 Compiled with HarfBuzz version 1.4.6; using 1.4.6 Compiled with libpng version 1.6.29; using 1.6.29 Compiled with poppler version 0.52.0 Using Mac OS X Core Text and Cocoa frameworks

答案1

命令行上是否需要引用空格和特殊字符完全取决于您所使用的 shell(命令行处理器)。

在 bash 中

 xelatex  --no-pdf  Doc\ -\ Test\ Customer\ J\ Doe\ \&\$T\ \(None\).tex

将把字符串传递Doc - Test Customer J Doe &$T (None).tex给应用程序并生成以下文件:

$ ls Doc\ -\ Test\ Customer\ J\ Doe\ \&*
'Doc - Test Customer J Doe &$T (None).aux'
'Doc - Test Customer J Doe &$T (None).log'
'Doc - Test Customer J Doe &$T (None).tex'
'Doc - Test Customer J Doe &$T (None).xdv'

然后你可以制作 pdf

  xdvipdfmx  Doc\ -\ Test\ Customer\ J\ Doe\ \&\$T\ \(None\).xdv

导致:

ls Doc\ -\ Test\ Customer\ J\ Doe\ \&*pdf
'Doc - Test Customer J Doe &$T (None).pdf'

因此,唯一的问题是,如果--no-pdf您不使用 xetex 而是允许其内部调用,xdvipdfmx则会在某处删除一层引用,并丢失$

xelatex    Doc\ -\ Test\ Customer\ J\ Doe\ \&\$T\ \(None\).tex

你得到

ls Doc\ -\ Test\ Customer\ J\ Doe\ \&*pdf
'Doc - Test Customer J Doe & (None).pdf'

没有$T

我认为这可能是 xetex 的一个错误,但由于文件名非常奇怪,我认为单独使用 xetex 和 dvi 到 pdf 的转换并不是什么大问题。

相关内容