列表:数学模式后缩进到特定的制表符位置

列表:数学模式后缩进到特定的制表符位置

我在使用lstlistingwith 格式化嵌入数学的代码列表时遇到了mathescape=true困难。特别是当我想要缩进的代码左侧有数学时,我发现很难使用缩进来布局代码。

下面,我想对齐=每个方程块中的符号:

在此处输入图片描述

在第一个块中我尝试使用空格,但数学字体似乎导致后续的固定宽度文本不再与列边界对齐。

在第二个方程式块中我使用了标签,这似乎有帮助。

第三个块显示制表符并不像人们希望的那样可靠:存在数学模式片段导致后续制表符无法与制表位正确对齐。

有没有办法lstlisting在存在数学的情况下实现可靠​​的缩进,无论是使用制表符还是某种绝对制表位?

\documentclass{article}
\usepackage{listings}

\lstset{basicstyle=\ttfamily, mathescape=true, columns=fixed, tabsize=2}

\begin{document}
\begin{lstlisting}
    ab = d
    $[c]^\triangleright$ = d

        ab  = d
    $[c]^\triangleright$        = d

    ab                  = d
    $[c]^\triangleright$                        = d
        $[(x_1, .., x_n): \kappa]^\triangleright$       = d
    \end{lstlisting}
\end{document}

答案1

您可以\mathmakebox使用mathtools

\documentclass{article}
\usepackage{listings}
\usepackage{mathtools}

\lstset{basicstyle=\ttfamily, mathescape=true, columns=fixed, tabsize=2}

\begin{document}
\begin{lstlisting}
    $\mathmakebox[1in][l]{\text{ab}}$ = d
    $\mathmakebox[1in][l]{[c]^\triangleright}$ = d
    $\mathmakebox[1in][l]{[(x_1, .., x_n): \kappa]^\triangleright}$ = d
\end{lstlisting}
\end{document}

在此处输入图片描述

相关内容