此示例中的以下 chktex 警告是什么意思?
41:你不应该在 LaTeX 代码中使用原始 TeX。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
\bordermatrix{
& X & Y \cr
X & 0 & 0 \cr
Y & 0 & 0 \cr
} \qquad
\end{align*}
\end{document}
我该如何修复它?\cr
用替换\\
不起作用。
答案1
首先,你应该始终牢记,ChkTeX 并非万无一失(也不可能万无一失)。你有几个选择。
- 使用
\bordermatrix
@egreg 的答案中除此以外的其他内容。 - 像@egreg 的答案那样使用(多)行抑制。
- 使用(单个)文件抑制:
% chktex-file 41
在第一次使用之前的某个时间。这将完全关闭此文件。 - 关闭 chktexrc 文件中所有文件的警告。只需添加
--nowarn 41
到该CmdLine
部分即可。 \cr
从应避免的原始命令列表中 删除。
最后一个是最难的,因为 ChkTeX 目前没有办法从列表中删除,所以你必须用类似这样的部分完全覆盖列表:
Primitives = {
\above \advance \catcode \chardef \closein \closeout \copy \count
\countdef
# \cr
\crcr \csname \delcode \dimendef \dimen \divide
\expandafter \font \hskip \vskip \openout
# You might consider adding other obsolete commands which are not there by default...
\rm \it \bf \sf \tt \em
}
完全披露:我是 ChkTeX 的现任维护者。
答案2
我觉得chktex
难以忍受。无论如何,你可以将 改为accept \bordermatrix
。但你必须在两行中取消检查。\\
\cr
特别令人讨厌的是,原则上,您可以通过添加适当的注释来抑制警告,但除非您抑制所有类型 22 的警告,否则警告仍会显示。这很愚蠢,不是吗?
我还添加了 的替代方案\bordermatrix
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{blkarray} % for an alternative to \bordermatrix
\usepackage{etoolbox}
\patchcmd{\bordermatrix}{\cr}{\\}{}{} % chktex 41
\patchcmd{\bordermatrix}{\cr}{\\}{}{} % chktex 41
\begin{document}
\[
\bordermatrix{
& X & Y \\
X & 0 & 0 \\
Y & 0 & 0
}
\qquad
\begin{blockarray}{ccc}
& X & Y \\
\begin{block}{c(cc)}
X & 0 & 0 \\
Y & 0 & 0 \\
\end{block}
\end{blockarray}
\]
\end{document}
如果我打电话chktex -wall -n22 juan.tex
,我不会收到任何警告。