TeX 列表:如何将每个 tex 命令添加为关键字?

TeX 列表:如何将每个 tex 命令添加为关键字?

我正在寻找一种方法来为列表中的所有 LaTeX 命令着色。我目前正在使用一种糟糕的方法来做到这一点:

\lstset{
  language=TeX,
  morekeywords={caption,label,documentclass,some,latex,commands,name,...},
  morekeywords=[2]{begin,end},
  keywordstyle=\color{blue},
  keywordstyle=[2]\color{red},
  morestring=[s]{[}{]},
  morestring=[s]{\{}{\}},
  stringstyle=\color{red},
  % some other confs
}

我认为添加每个命令是一种糟糕的处理方式。也许有一种方法可以使用正则表达式?

要着色的内容示例:

\begin{lstlisting}[caption={An example}]
\begin{document}

This is a short example to colorate.

\begin{itemize}
  \item an item
  \item another item
\end{itemize}
\end{lstlisting}

答案1

minted 包支持 tex/latex 的语法高亮。

平均能量损失

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

\usepackage{minted}

\begin{document}
\begin{minted}
[
frame=lines,
framesep=2mm,
baselinestretch=1.2,
linenos
]{latex}
\begin{align}
        T_{\eta,s}(x)=F^{\eta'^{-1}}(F^{\eta}(x\mid s)\mid s)
        \label{eq:acuracy tranformation}
\end{align}
\end{minted}
\end{document}

编译时必须使用 shel escape 选项

pdflatex -shell-escape texsource.tex

相关内容