我想在 Verbatim 环境旁边添加边注,但出现错误“不在外部 par 模式中”。虽然这在 lstlisting 环境中运行良好。有什么解决办法吗?
\documentclass{article}
\usepackage{listings}
\lstset{
frame=single,
escapechar=!,
}
\usepackage{fancyvrb}
\begin{document}
\begin{lstlisting}
text inside listings... !\marginpar{Working well}!
\end{lstlisting}
\begin{Verbatim}[frame=single, commandchars=\\\{\}]
text inside Verbatim... \marginpar{Not working}
\end{Verbatim}
\end{document}
答案1
Verbatim
将每一行排版在一个框中,所以\marginpar
不存在问题。
您可以使用marginnote
;\normalfont
这是必要的,否则您将得到打字机类型。
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{marginnote}
\newcommand{\vmnote}[1]{\marginnote{\normalfont#1}}
\begin{document}
\begin{Verbatim}[frame=single, commandchars=\\\{\}]
text inside Verbatim... \vmnote{Working}
\end{Verbatim}
\end{document}
对于更复杂的文本,您需要使用标准类别代码重新扫描参数:
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{marginnote}
\ExplSyntaxOn
\NewDocumentCommand{\vmnote}{m}
{
\marginnote
{
\normalfont % override verbatim font
% rescan the argument with normal category codes
\tl_rescan:nn { \cctab_select:N \c_document_cctab} { #1 }
}
}
\ExplSyntaxOff
\begin{document}
\begin{Verbatim}[frame=single, commandchars=\\\{\}]
text inside Verbatim... \vmnote{Working $\alpha^2$}
\end{Verbatim}
\end{document}