例如,我有以下Verbatim
来自fancyvrb
包的环境:
\begin{Verbatim}
>>> 1+1
2
>>>
\end{Verbatim}
每当出现“>>>”时,我都想将其涂成蓝色。我可以自动完成着色工作,而不是手动为它们着色吗?
答案1
适合您用例的工具是列表包:除了给提示着色之外,它还会做很多其他适合编码的事情。默认情况下,它不会给 Python 提示着色,但很容易自定义。
它可以像这样简单:
\usepackage{listings}
\usepackage{xcolor}
\lstset{
otherkeywords={>>>}, % used only because >>> is not an identifier
morekeywords=[3]{>>>},
keywordstyle={[3]\color{blue}}
}
\begin{document}
\begin{lstlisting}
>>> 1+1
2
>>>
\end{lstlisting}
但您可能需要进行一些调整才能使其更像 Python。如果您喜欢语法着色,请添加到style={python-idle-code}
以\lstset{}
获得类似 IDLE 的配色方案。(它在中定义listings-python.prf
,必须单独包含。笨拙……)或者您可以使用language={python}
,以获得黑白基本方案。无论哪种方式,我都会推荐showstringspaces=false
和tabsize=4
。所以这是一个完整的几乎 MWE:
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
% Optional:
\input{listings-python.prf}
\lstset{
style={python-idle-code},
showstringspaces=false, % true by default for python
% tabsize=4,
}
% Blue prompts
\lstset{
otherkeywords={>>>}, % used only because >>> is not an identifier
morekeywords=[3]{>>>},
keywordstyle={[3]\color{blue}},
}
\begin{document}
\begin{lstlisting}
>>> 1+1
2
>>> def hello():
print("Hello, world!")
\end{lstlisting}
\end{document}
输出:
答案2
VerbatimOut
这里有一种方法,只需在环境中插入逐字文本
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{xcolor}
\begin{document}
\begin{VerbatimOut}{file.txt}
>>> 1+1
2
>>>
\end{VerbatimOut}
{
\def\greater{\char62}
\catcode`>=\active
\VerbatimInput[defineactive={\def>{\textcolor{blue}{\greater}}}]{file.txt}
}
\end{document}
结果