我尝试chktex
在 Ubuntu 中使用,但它似乎无法正确读取行。当我在包含此行(以及任何其他类似行)的文件上运行它时:
\include{glossary}
它发送一个错误提示(请注意,它将文件名中倒数第二个字符替换为最后一个字符!-词汇量)
chktex: WARNING -- Unable to open the TeX file `glossayy'.
Warning 27 in book.tex line 158: Could not execute LaTeX command.
\include{glossary} % Glossary
^^^^^^^^
知道为什么会发生这种情况吗?
答案1
在 Ubuntu 11.04 上使用chktex
v1.6.4 时,拼写错误没有重现(见下文)。此外,此版本仅在有效时才发出警告。我建议您使用此版本再次尝试。
如果问题仍然存在最小工作示例将会很有帮助,因为有关警告是否只是拼写错误或者是虚假的信息(例如有关存在的文件的警告)也会很有帮助。
细节
在生成警告但没有行的小示例文件上运行的结果\include
:
mas@ents:~/LaTeX/scratch$ chktex fr.tex
ChkTeX v1.6.4 - Copyright 1995-96 Jens T. Berger Thielemann.
Warning 36 in fr.tex line 5: You should put a space in front of parenthesis.
\textit{(Choose one option)}\\
^
No errors printed; One warning printed; No user suppressed warnings printed.
编辑测试文件以解决警告,包括\include{glossary}
类似于问题中的一行。glossary.tex
不存在。重新运行chktex
:
mas@ents:~/LaTeX/scratch$ vi fr.tex
mas@ents:~/LaTeX/scratch$ chktex fr.tex
ChkTeX v1.6.4 - Copyright 1995-96 Jens T. Berger Thielemann.
chktex: WARNING -- Unable to open the TeX file `glossary'.
Warning 27 in fr.tex line 10: Could not execute LaTeX command.
\include{glossary} % Glossary
^^^^^^^^
No errors printed; One warning printed; No user suppressed warnings printed.
mas@ents:~/LaTeX/scratch$
警告是正确的,并且不包含glossayy
文本错误。
创建后glossary.tex
,chktex
不会返回任何警告:
mas@ents:~/LaTeX/scratch$ mv glossary.texxx glossary.tex
mas@ents:~/LaTeX/scratch$ chktex fr.tex
ChkTeX v1.6.4 - Copyright 1995-96 Jens T. Berger Thielemann.
No errors printed; No warnings printed; No user suppressed warnings printed.
mas@ents:~/LaTeX/scratch$
答案2
这是一个问题调用strcpy
重叠字符串。对于某些版本的 glibc,这会导致问题,而对于其他版本则不会。此问题已在 svn 版本中修复memmove
。我最近获得了 svn 访问权限,因此我希望我们可以发布一个修复此问题(以及其他一些错误)的新版本。无论如何,最重要的是,如果您自己从 svn 构建它,那么它将得到修复(版本为1.6.5svn
)。