我在从命令行运行 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 的转换并不是什么大问题。