肉眼看来,minted(Konrad Rudolph的LaTeX包用于使用Pygments库进行代码突出显示)忠实地呈现传递给它的代码块,并使用源代码中包含的任何缩进显示它们。
但是,如果您尝试从其中一个块复制并粘贴代码,您会注意到它们的可见缩进是使用不可复制的 空格,使粘贴的代码丢失每一行的前导空格。这是 Python代码块特别有问题,因为在Python中 缩进作为代码的一部分具有实际意义。
所以,这是我的问题:有没有办法让铸造来渲染代码块, 复制粘贴,保留它们显示的源代码的缩进?
有关我的意思的示例,请参阅中的任何几个缩进代码块 铸造手册(found here)或编译 以下minimal-ish可重复的例子:
\documentclass{article}
\usepackage{minted}
\newminted[python]{python}{frame=single}
\begin{document}
\begin{python}
def example1():
if verbose:
print 'Running example1'
verbose = True
example1()
\end{python}
\end{document}
答案 0 :(得分:2)
这适用于Acrobat Reader,至少在我的系统上,但不适用于SumatraPDF和其他一些程序。可能还有其他更好的解决方案。
\usepackage{color}
\usepackage{minted}
\newminted[python]{python}{frame=single}
\fvset{showspaces}
\renewcommand\FancyVerbSpace{\textcolor{white}{\char32}}
这将Pygments用于格式化输出的fancyvrb
设置为使用可见空格字符(␣
),然后通过将其设为白色来使字符“不可见”。最终,这最终成为一个TeX问题,因为Pygments正在使用fancyvrb
包来输出,而诀窍是让fancyvrb
创建(领先)可以复制的空格。