問題コマンドとtikzcd

問題コマンドとtikzcd

これをコンパイルすると

 $$ \begin{tikzcd}[column sep={small},nodes={inner sep=2pt}]
 {| +1 \rangle} & {\langle +2|} \\
{\langle +3 |} & {| +4 \rangle}
\arrow[no head, from=1-1, to=2-2]
\arrow[no head, from=1-2, to=2-1]
\end{tikzcd} $$

完璧に動作します。しかし、次のようにコマンドを定義すると(上記のコードでは、すべてのテキストをまったく同じに保つために、#-->+を使用して検索と置換を行ったことに注意してください)

\newcommand{\tfour}[4]{\begin{tikzcd}[column sep={small},nodes={inner sep=2pt}]
 {| #1 \rangle} & {\langle #2|} \\
{\langle #3 |} & {| #4 \rangle}
\arrow[no head, from=1-1, to=2-2]
\arrow[no head, from=1-2, to=2-1]
\end{tikzcd}}

使用して

$$\tfour{a}{b}{c}{d} $$

101個のエラーが発生します。

未定義の制御シーケンス

何が問題ですか?ノード内のテキストを変更しながら、常に同じ交換図となるコマンドを定義したいだけです。

また、コマンドで \left \right を使用したい場合、異なるエラーが発生します。コマンド内でこれらを使用する適切な方法は何ですか?

私の前置きはこれです

\documentclass[a4paper,12pt]{amsart}
\usepackage{amsmath,amsthm,amsfonts,amssymb,mathtools,mathrsfs,bm}
\usepackage{nicefrac}
\usepackage{tikz-cd}
\usetikzlibrary{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{float}
\usepackage{subfigure}
\usepackage{xcolor}% xcolor>color
\definecolor{colordelink}{rgb}{0,0,0.50}
\definecolor{colordecite}{rgb}{0,0.5,0}
\definecolor{colordeurl}{rgb}{0,0.41,0.5}

\usepackage[pagebackref=true]{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=colordelink,
citecolor=colordecite,
    urlcolor=colordeurl,
    }

\usepackage[capitalize,nameinlink,noabbrev]{cleveref}
\usepackage[all]{hypcap}

\usepackage{todonotes}



\input{Style-and-more}

そして、Style-and-more では、私は自分の指揮権を持っています。

答え1

tikz-cdは、その本体で明示的に表示する必要があります&(ここでアクティブ文字になります)。 がtikz-cd別のコマンド (を含む) の引数に現れるときは常に\newcommand、 を使用する必要がありますampersand replacement

さらにいくつか修正を加えました:\lvertまたは\rvertの代わりに なので|、中括弧は不要です (間隔も適切になります)。

また$$一度もないLaTeXdocument環境で使用できます。

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}

\newcommand{\tfour}[4]{%
  \begin{tikzcd}[
    column sep=small,
    nodes={inner sep=2pt},
    ampersand replacement=\&,
  ]
  \lvert #1 \rangle \& \langle #2\rvert \\
  \langle #3 \rvert \& \lvert #4 \rangle
  \arrow[no head, from=1-1, to=2-2]
  \arrow[no head, from=1-2, to=2-1]
  \end{tikzcd}%
}

\begin{document}

\[
\tfour{a}{b}{c}{d}
\]

\end{document}

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

関連情報