LuaLaTeX、lstinputlisting 和无扩展名文件的错误

LuaLaTeX、lstinputlisting 和无扩展名文件的错误

我在使用 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}}

答案2

我用微特克斯

为了解决这个问题,我在文件名后添加了一个点Makefile

\lstinputlisting{Makefile.} 

参考:微特克斯miktex-用户

相关内容