为了跟进我的上一个问题,我想对齐两个箭头,并在它们周围加上花括号。下面的方法可以正常工作
\documentclass{article}
\usepackage[margin=2cm,centering]{geometry}
\usepackage{amsmath}
\usepackage{mathtools}
\newcommand*{\myrightarrow}[1]{\xrightarrow{\mathmakebox[5cm]{#1}}}
\newcommand*{\myleftarrow}[1]{\xleftarrow{\mathmakebox[5cm]{#1}}}
\begin{document}
\noindent\fbox{\begin{minipage}{\dimexpr6.5in-2\fboxsep-2\fboxrule\relax}
{\bfseries Alice \hfill Bob}
\begin{align*}
&\myleftarrow{a}
\\
&\myrightarrow{}
\\
\{&\begin{array}{c}
\myleftarrow{q} \\
\myrightarrow{k}
\end{array}
\}
\\
&\myleftarrow{c}
\\
\end{align*}
\end{minipage}}
\end{document}
问题是我需要让花括号适合数组。从我读到的内容来看,\{
用\left\{
和\}
替换\right\}
应该可以。但是当我这样做时会出现错误:
\documentclass{article}
\usepackage[margin=2cm,centering]{geometry}
\usepackage{amsmath}
\usepackage{mathtools}
\newcommand*{\myrightarrow}[1]{\xrightarrow{\mathmakebox[5cm]{#1}}}
\newcommand*{\myleftarrow}[1]{\xleftarrow{\mathmakebox[5cm]{#1}}}
\begin{document}
\noindent\fbox{\begin{minipage}{\dimexpr6.5in-2\fboxsep-2\fboxrule\relax}
{\bfseries Alice \hfill Bob}
\begin{align*}
&\myleftarrow{a}
\\
&\myrightarrow{}
\\
\left\{&\begin{array}{c}
\myleftarrow{q} \\
\myrightarrow{k}
\end{array}
\right\}
\\
&\myleftarrow{c}
\\
\end{align*}
\end{minipage}}
\end{document}
有什么建议吗?谢谢!
答案1
问题出&
在 之后\left\{
。如果您只想将箭头居中,您可以尝试其他解决方案(没有显式对齐字符)或另一种方法
\documentclass{article}
\usepackage[margin=2cm,centering]{geometry}
\usepackage{amsmath}
\usepackage{mathtools}
\newcommand*{\myrightarrow}[1]{\xrightarrow{\mathmakebox[5cm]{#1}}}
\newcommand*{\myleftarrow}[1]{\xleftarrow{\mathmakebox[5cm]{#1}}}
\begin{document}
\fbox{\begin{minipage}{\dimexpr6.5in-2\fboxsep-2\fboxrule\relax}
\centering
{\bfseries Alice \hfill Bob}
$\myleftarrow{a}$
$\myrightarrow{}$
$\left\{\begin{array}{@{}c@{}}
\myleftarrow{q} \\
\myrightarrow{k}
\end{array}
\right\}$
$\myleftarrow{c}$
\end{minipage}}
\end{document}