Problembefehl und tikzcd

Problembefehl und tikzcd

Wenn ich das kompiliere

 $$ \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} $$

es funktioniert perfekt. Aber wenn ich einen Befehl wie diesen definiere (beachten Sie, dass ich im obigen Code mit #-->+ eine Suche und Ersetzung vorgenommen habe, um den gesamten Text genau gleich zu lassen)

\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}}

und Verwendung

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

Ich erhalte 101 Fehler, beginnend mit

Undefinierte Steuersequenz

Was ist das Problem?Ich möchte lediglich einen Befehl definieren, der immer dasselbe kommutative Diagramm ist und den Text in den Knoten ändert.

Auch wenn ich \left \right im Befehl verwenden möchte, erhalte ich verschiedene Fehler.Wie werden sie in einem Befehl richtig verwendet?

Meine Präambel ist diese

\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}

Und bei Style-and-more habe ich die Oberhand.

Antwort1

tikz-cd&möchte explizit in seinem Textkörper sehen (wo es zu einem aktiven Zeichen wird). Immer wenn tikz-cdes im Argument eines anderen Befehls erscheint (einschließlich \newcommand), müssen Sie verwenden ampersand replacement.

Ich habe noch ein paar weitere Korrekturen vorgenommen: \lvertoder \rvertanstelle von |, sodass Klammern nicht erforderlich sind (und der Abstand stimmt).

Auch $$sollteniemalsin einer LaTeX-Umgebung verwendet werden document.

\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}

Bildbeschreibung hier eingeben

verwandte Informationen