我尝试查找这个问题,但还没有找到同时完成这两项操作的方法。
我希望在逐字环境中编写数学符号,为此我使用alltt
。但我还希望将我的代码放在一个框中,为此我曾经使用\usepackage{fancyvrb}
和Verbatim
环境。
有没有办法将两者结合起来?
答案1
是的,您可以这样做,如文档第 16 页所述fancyvrb
:
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{Verbatim}[commandchars=\\\{\},
codes={\catcode`$=3\catcode`^=7\catcode`_=8},frame=single]
some code test
$\sum a_i$
\end{Verbatim}
\end{document}
我建议你改用listings
并使用其mathescape=true
功能:
\documentclass{article}
\usepackage{listings}
\lstset{
basicstyle=\ttfamily,
columns=fullflexible,
mathescape=true,
frame=single
}
\begin{document}
\begin{lstlisting}
some code test
$\sum a_i$
\end{lstlisting}
\end{document}
如果你想要更漂亮的盒子,那么你可以使用tcolorbox
及其与的相互作用listings
。
答案2
下面的例子来自文档的fancyvrb
,“4.1.6 Catcode 字符”。
\documentclass[a5paper]{article}
\usepackage{fancyvrb}
\begin{document}
\begin{Verbatim}[
frame=single,
commandchars=\\\{\},
codes={%
\catcode`$=3\relax
\catcode`^=7\relax
\catcode`_=8\relax
},
]
x\string_0=1/sqrt(z\string^2) ! $x_0=\frac{1}{\sqrt{z^2}}$
\end{Verbatim}
\begin{Verbatim}[
frame=single,
commandchars=\\\{\},
codes={%
\catcode`$=3\relax
},
]
x_0=1/sqrt(z^2) ! $x\sb{0}=\frac{1}{\sqrt{z\sp{2}}}$
\end{Verbatim}
\end{document}
当_
和^
具有正常类别代码时,\string
如果要以逐字模式设置它们,则需要以 为前缀。
或者,_
和^
保持不变,而\sb
和\sp
则用于数学模式。