chktex 警告:你不应该在 LaTeX 代码中使用原始 TeX

chktex 警告:你不应该在 LaTeX 代码中使用原始 TeX

此示例中的以下 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 并非万无一失(也不可能万无一失)。你有几个选择。

  1. 使用\bordermatrix@egreg 的答案中除此以外的其他内容。
  2. 像@egreg 的答案那样使用(多)行抑制。
  3. 使用(单个)文件抑制:% chktex-file 41在第一次使用之前的某个时间。这将完全关闭此文件。
  4. 关闭 chktexrc 文件中所有文件的警告。只需添加--nowarn 41到该CmdLine部分即可。
  5. \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,我不会收到任何警告。

在此处输入图片描述

相关内容