列表、文字和行首的空格。

列表、文字和行首的空格。

>>>我正在尝试使用 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>}

列出经过文字修改的代码

相关内容