Я хотел бы добавить заметку на полях рядом со средой 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}