最小工作示例

最小工作示例

我正在尝试将Verbatim环境从fancyvrb包中取出,并将激活的接口放入listings包中,放入enumerate环境内部。

Verbatim环境是中的第一个元素时\item,项目的标签会神秘地移到左边距。对于lstlisting没有Verbatim界面 listings的情况,一切都按预期工作。

listings这是接口中的一个错误fancyvrb,还是我以某种方式误用了这些包?

我正在使用这两个软件包的最新版本:fancyvrb2.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}

相关内容