我在使用lstlisting
with 格式化嵌入数学的代码列表时遇到了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}