![列表:数学模式后缩进到特定的制表符位置](https://linux22.com/image/452066/%E5%88%97%E8%A1%A8%EF%BC%9A%E6%95%B0%E5%AD%A6%E6%A8%A1%E5%BC%8F%E5%90%8E%E7%BC%A9%E8%BF%9B%E5%88%B0%E7%89%B9%E5%AE%9A%E7%9A%84%E5%88%B6%E8%A1%A8%E7%AC%A6%E4%BD%8D%E7%BD%AE.png)
我在使用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}