我正在尝试将Verbatim
环境从fancyvrb
包中取出,并将激活的接口放入listings
包中,放入enumerate
环境内部。
当Verbatim
环境是中的第一个元素时\item
,项目的标签会神秘地移到左边距。对于lstlisting
没有Verbatim
界面
listings
的情况,一切都按预期工作。
listings
这是接口中的一个错误fancyvrb
,还是我以某种方式误用了这些包?
我正在使用这两个软件包的最新版本:fancyvrb
2.8、1.5e listings
。
最小工作示例
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{listings}
\begin{document}
\noindent
Reference text.
\begin{enumerate}
\item
\begin{lstlisting}
lstlisting first line
lstlisting second line
\end{lstlisting}
\item
\begin{enumerate}
\item
\begin{lstlisting}
lstlisting first line
lstlisting second line
\end{lstlisting}
\end{enumerate}
\end{enumerate}
\begin{enumerate}
\item
\begin{Verbatim}
Verbatim first line
Verbatim second line
\end{Verbatim}
\item
\begin{enumerate}
\item
\begin{Verbatim}
Verbatim first line
Verbatim second line
\end{Verbatim}
\end{enumerate}
\end{enumerate}
\lstset{fancyvrb}
\begin{enumerate}
\item
\begin{Verbatim}
Verbatim + listings first line
Verbatim + listings second line
\end{Verbatim}
\item
\begin{enumerate}
\item
\begin{Verbatim}
Verbatim + listings first line
Verbatim + listings second line
\end{Verbatim}
\end{enumerate}
\end{enumerate}
\end{document}
解决方法
我认为我有一个解决我的问题的方法,包括添加\hskip
到环境\@labels
中的盒子中。Verbatim
我想知道这是否存在一些潜在的危险,以及是否有更好的解决方案。
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{listings}
\lstset{fancyvrb=false}
\makeatletter
\protected\def\MyFixVerbatimLabels%
{%
\lst@iffancyvrb%
\setbox\@labels\hbox{\hskip\@totalleftmargin \unhbox\@labels}%
\fi%
}
\makeatother
\begin{document}
\noindent
Reference text.
\fvset{formatcom=\MyFixVerbatimLabels}
\begin{enumerate}
\item
\begin{Verbatim}
Verbatim first line
Verbatim second line
\end{Verbatim}
\item
\begin{enumerate}
\item
\begin{Verbatim}
Verbatim first line
Verbatim second line
\end{Verbatim}
\end{enumerate}
\end{enumerate}
\lstset{fancyvrb}
\begin{enumerate}
\item
\begin{Verbatim}
Verbatim + listings first line
Verbatim + listings second line
\end{Verbatim}
\item
\begin{enumerate}
\item
\begin{Verbatim}
Verbatim + listings first line
Verbatim + listings second line
\end{Verbatim}
\end{enumerate}
\end{enumerate}
\end{document}