>>>
我正在尝试使用 literate 选项将 python 输入中的提示符 ( ) 和延续符 ( )替换...
为“悬挂”在边缘的符号。我几乎可以使用类似literate=*{>>>}{\llap{$\ggg$\hspace{5pt}}}{0}
etc 的方法来做到这一点,但遇到了一些问题:如果我使用0
如上所述的长度,我会得到错误,并且在列表之前会插入额外的空格,从而产生不必要的缩进(尽管如下所示,我认为将长度设置为0
不会有帮助,即使我可以避免错误)。
我将非常感激任何建议。这是一个几乎可以正常工作的最小示例:
\documentclass{article}
\usepackage{MnSymbol}
\usepackage{listings}
\lstset{%
language=python,
columns=flexible,
frame=leftline,
framexleftmargin=0pt,
framesep=4pt,
xleftmargin=5pt,
literate=*{>>>}{\llap{\footnotesize$\ggg$\hspace{8pt}}}{1}
{...}{\llap{$\cdots$\hspace{8pt}}}{1}}
\begin{document}
\noindent
Here is some python code:
\begin{lstlisting}
def f():
"""This is a function."""
return 1
f()
\end{lstlisting}
This uses the doctest format, but has extra indentation:
\begin{lstlisting}
>>> def f():
... """This is a function."""
... return 1
>>> f()
1
\end{lstlisting}
This is even a problem without any output:
\lstset{%
literate=*{>>>}{}{0}
{...}{}{0}}
\begin{lstlisting}
>>> def f():
... """This is a function."""
... return 1
>>> f()
1
\end{lstlisting}
\end{document}
答案1
解决方法如下:
...
literate=*{>>>}{\llap{\footnotesize$\ggg$\hspace{8pt}}}{-1}
{...}{\llap{$\cdots$\hspace{8pt}}}{-1}}
...
使用负空间作为的第三个参数literate={<replace>}{<replacement text>}{<width>}
。