マクロ引数を部分的に拡張
Aug 18 2020
私はtikz写真のライブラリを持っています。
\newcommand*{\mypic}[1]{
\begin{tikzpicture}
%...
\end{tikzpicture}
}
名前(引数を含む)と一緒に印刷したいと思います。しかしながら、
\renewcommand{\show}[1]{\verb|#1|\quad #1}
\show{\mypic{a}}
を生成します
パッケージtikzエラー:申し訳ありませんが、一部のパッケージで数学モードのドル記号の意味が再定義されています。これはtikzおよびそのcalcライブラリと互換性がなく、回復不能なエラーを引き起こす可能性があります。
\ showは\ verb内で引数を拡張しようとしていると思います。\ expandafterを試してみましたが、役に立ちませんでした。\ verb |を置き換えたとき | \ texttt {}を使用すると、\ showはマクロ名をまったく出力しませんでした。
回答
3 muzimuzhiZ Aug 18 2020 at 12:15
まず、たとえば、プリミティブを再定義しない方がよいでしょう\show
。別のコマンド名を選択するだけです。次に、\Verb
fromfvextra
パッケージは\verb
、別のマクロ内で使用した場合よりも堅牢です。
\documentclass{article}
\usepackage{fvextra}
\usepackage{tikz}
\newcommand*{\mypic}[1]{
\begin{tikzpicture}
\node[draw, circle] {text};
\end{tikzpicture}
}
\newcommand{\showTikzPic}[1]{\Verb|#1|\quad #1}
\begin{document}
\showTikzPic{\mypic{}}
\end{document}
