余白ノートと 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}

ここに画像の説明を入力してください

関連情報