Emacs、AUCTeX 和自定义命令的缩进

Emacs, AUCTeX and indentation of custom commands

我正在准备一份包含彩色 tables(使用 colortbl)的文档,为了更正这些 tables 中出现的细白线,我正在使用自定义换行宏以弥补这一点。但是,AUCTeX 无法识别新宏并尝试以一种奇怪的方式缩进 table。

\begin{table}[h]
  \centering\sffamily
  \begin{tabular}{lcc}
    \rowcolor{row1} \textbf{Nominative} & \emph{Wer?} & Who? \mynewline
                                                        \rowcolor{row2}\textbf{Accusative} & \emph{Wen?} & Who(m)? \
    \rowcolor{row1} \textbf{Dative} & \emph{Wem?} & To who(m)? \
    \rowcolor{row2} \textbf{Genitive} & \emph{Wessen?} & Whose? \mynewline
  \end{tabular}
\end{table}

如何让 AUCTeX 理解 \mynewline\ 的作用相同?

在许多情况下,如果您将 TeX-parse-selfTeX-auto-save 设置为 t,AUCTeX 应该能够自动学习您自己的命令。参见 https://www.gnu.org/software/auctex/manual/auctex/Parsing-Files.html#Parsing-Files

如果这还不够,您可以使用样式文件告诉 AUCTeX 您自己的宏和环境。有关更多信息,请参阅 https://www.gnu.org/software/auctex/manual/auctex/Style-Files.html#Style-Files。归结为正确使用函数TeX-add-symbols

请注意,我上次这样做已经有几年了。

AUCTeX 附带了一个 longtable 的样式文件,它似乎包含了您所需要的内容。参见 http://git.savannah.gnu.org/cgit/auctex.git/tree/style/longtable.el#n92

(TeX-add-symbols
    ;; Commands to end table rows
    '("endhead" 0)
    '("endfirsthead" 0)
    '("endfoot" 0)
    '("endlastfoot" 0)
    ;; Caption commands
    '("caption*" 1))