Заметка на полях и среда Verbatim (fancyvrb)

Заметка на полях и среда Verbatim (fancyvrb)

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

введите описание изображения здесь

Связанный контент