![Comando problemático y tikzcd](https://rvso.com/image/475743/Comando%20problem%C3%A1tico%20y%20tikzcd.png)
Cuando compilo esto
$$ \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} $$
Funciona perfectamente. Pero cuando defino un comando como este (tenga en cuenta que hice una búsqueda y lo reemplacé en el código anterior con #-->+ para mantener todo el texto exactamente igual)
\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}}
y use
$$\tfour{a}{b}{c}{d} $$
Recibo errores 101, comenzando con
Secuencia de control Indefinido
¿Cuál es el problema?Solo quiero definir un comando que sea el mismo diagrama conmutativo todo el tiempo cambiando el texto en los nodos.
Además, si quiero usar \left \right en el comando, obtengo errores diferentes.¿Cuál es la forma correcta de usarlos en un comando?
Mi preámbulo es este
\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}
Y en Style-and-more tengo mi mando.
Respuesta1
tikz-cd
quiere ver explícito &
en su cuerpo (donde se convierte en un personaje activo). Siempre que tikz-cd
aparezca en el argumento de otro comando (incluido \newcommand
), debe usar ampersand replacement
.
Hice algunas correcciones más: \lvert
o \rvert
en lugar de |
, por lo que las llaves no son necesarias (y el espaciado será el correcto).
También $$
deberíanuncaser utilizado en un document
entorno LaTeX.
\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}