这是一段用于生成 Python 代码的 latex 代码块。我希望能够将其复制并粘贴到 Python 中。
\documentclass{standalone}
\usepackage{listings} % Include the listings-package
\begin{document}
\lstset{language=Python,
columns=fullflexible,
basicstyle=\ttfamily,
showstringspaces=false
}
\begin{lstlisting}
def test(inputvariable):
if inputvariable == 4:
print("The input variable is 4 .")
print("So I'm giving this response.")
print("done with if statement.")
test(4)
test(3)
\end{lstlisting}
\end{document}
看起来正确: 不幸的是,当我复制并粘贴它时,缩进丢失了,而这正是 Python 工作方式的关键。
当我复制/粘贴时,可以显示间距吗?
答案1
无论如何,这实际上不可能以可靠的方式实现。它过于依赖 pdf 查看器。可以使用原始函数插入真实空格\pdffakespace
,但只有当我将空格(全局!)映射到 时,缩进才会在 Sumatra 中保留Unicode Character 'FIGURE SPACE' (U+2007)
,而在 Adobe Reader 中它仍然会消失。
\documentclass{article}
\usepackage{listings}
\usepackage[T1]{fontenc}
\makeatletter
\lst@AddToHook{Init}
{\def\lst@outputspace{ \pdffakespace}}
\makeatother
\input{glyphtounicode}
% saner but doesn't work
%\pdfglyphtounicode{space}{0020}
% works in sumatra:
\pdfglyphtounicode{space}{2007}
\begin{document}
\lstset{language=Python,
columns=fullflexible,
basicstyle=\ttfamily,
showspaces,
showstringspaces=false
}
\begin{lstlisting}
def test(inputvariable):
if inputvariable == 4:
print("The input variable is 4 .")
print("So I'm giving this response.")
print("done with if statement.")
test(4)
test(3)
\end{lstlisting}
\end{document}