我在使用 LuaLaTeX 和包时遇到了麻烦listings
:前者似乎不接受我\lstinputlisting
对没有扩展名的文件名进行执行。
最小示例:
Makefile
:
hello: hello.c
cc -o hello hello.c
test.tex
:
\documentclass[a4paper]{article}
\usepackage{listings}
\begin{document}
\lstinputlisting{Makefile}
\end{document}
pdfLaTeX 成功,LuaLaTeX 显示以下错误:
! Package Listings Error: File `Makefile(.tex)' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)
Enter file name:
我正在使用 TeXLive 2012 的最新版本(pdfTeX 3.1415926-2.4-1.40.13、LuaTeX beta-0.70.2-2012052410)。
有什么问题?
答案1
luatex 邮件列表中已经提到了这个问题: http://tug.org/mailman/htdig/luatex/2013-February/004042.html
问题在于 LaTeX 使用\openin
和\ifeof
来测试文件是否存在,并且对于没有扩展名的文件,此测试会失败(尽管(原始)\input
本身可以工作)。
问题不仅限于 luatex:在 miktex 中,您的示例也会因 pdflatex 而失败。
使用 luatex 有一个解决方法:\openin
接受带括号的参数,这似乎可以保护文件名。因此您可以使用\lstinputlisting{{Makefile}}
。