當我編譯這個
$$ \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}
在「風格及更多」方面,我有我的指揮權。
答案1
tikz-cd
想要&
在它的身體中看到明確的內容(在那裡它成為一個活躍的角色)。每當tikz-cd
出現在另一個命令(包括)的參數中時\newcommand
,您都必須使用ampersand replacement
.
我做了一些更多的修復:\lvert
or\rvert
代替|
,所以不需要大括號(並且間距是正確的)。
還$$
應該絕不在 LaTeX 環境中使用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}