如果使用 texcsstyle 星号,则打开(关闭)方括号和以反斜杠开头的方括号与列表的分隔符无法区分

如果使用 texcsstyle 星号,则打开(关闭)方括号和以反斜杠开头的方括号与列表的分隔符无法区分

以下 MCE 指出,如果用作listings' 分隔符:

  • [](开方括号和闭方括号),
  • \[\](前面带有反斜杠)

无法区分(指令的顺序无关紧要)。

更新

texcsstyle正如 Schweinebacke 所指出的,用反斜杠转义反斜杠就足够了。但是,如果还使用可选的星号来突出显示控制序列名称前面的反斜杠,则此技巧不起作用。请参阅更新的示例。

你知道吗:

  1. 为什么?
  2. 如何区分它们?

辅助问题(但可能相关):如何为整个\[分隔符着色(目前,仅有[颜色)?

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
%
\lstset{
  language=[AlLaTeX]TeX, %
  basicstyle=\ttfamily,%
  moredelim=*[s][\color{blue}]{[}{]},%
  moredelim=*[s][\color{red}]{\\[}{\\]},%
}
%
\begin{document}

\begin{lstlisting}
\documentclass[fleqn]{article}
\usepackage{amsmath}
\begin{document}
\[x=0\]
\end{document}
\end{lstlisting}

\lstset{texcsstyle=*\color{green}}

\begin{lstlisting}
\documentclass[fleqn]{article}
\usepackage{amsmath}
\begin{document}
\[x=0\]
\end{document}
\end{lstlisting}

\end{document}

在此处输入图片描述

答案1

texcsstyle=*...从更新的问题来看,选项与选项之间交互的问题moredelim似乎是一个单独的问题,而不是原始问题中缺少反斜杠的问题,该问题已经由Schweinebacke 的答案

更新中出现的问题类似于texcsstyle=*...选项与literate选项交互的问题,如我的回答“lstlisting:颜色 LaTeX 命令类似\\\!”问题

tex加载方面时,它会将代码添加到SelectCharTable钩子中,该代码可以覆盖使用其他方面定义的反斜杠的行为。要恢复正确行为,可以SelectCharTable在加载tex方面后将相关代码添加到钩子中。如果是moredelim选项,相关代码是\lst@DefDelims宏。

“重新挂钩”分隔符字符表的完整示例是:

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}

\lstset{
  language=[AlLaTeX]TeX, %
  basicstyle=\ttfamily,%
  texcsstyle=*\color{green},%
  moredelim=*[s][\color{blue}]{[}{]},%
  moredelim=*[s][\color{red}]{\\[}{\\]},%
}

% "Rehook" delimiters char table.
\makeatletter
\lst@AddToHook{SelectCharTable}{\lst@DefDelims}
\makeatother

\begin{document}

\begin{lstlisting}
\documentclass[fleqn]{article}
\usepackage{amsmath}
\begin{document}
\[x=0\]
\end{document}
\end{lstlisting}

\end{document}

PDF 的打印屏幕

答案2

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
%
\lstset{%
  basicstyle=\ttfamily,%
  moredelim=*[s][\color{blue}]{[}{]},%
  moredelim=*[s][\color{red}]{\\[}{\\]},%
}
%
\begin{document}
\begin{lstlisting}
\documentclass[fleqn]{article}
\usepackage{amsmath}
\begin{document}
\[x=0\]
\end{document}
\end{lstlisting}
\end{document}

在此处输入图片描述

{您需要为、}#%加上这个额外的反斜杠\。请参阅手册第 4.1 节中的注释 5 listings

相关内容