在amsmath
的aligned
环境中,每个“单元格”或每个“列”的对齐方式都是预先确定的,并且似乎按以下方式工作:第一个“列”向右对齐,第二个向左对齐,第三个再次向右对齐,依此类推。
我的问题是,有什么方法可以调整每个“单元格”的对齐方式(左对齐、居中对齐或右对齐)?例如,我尝试使用以下内容创建图表aligned
:
\[
\begin{aligned}
\sigma & \colon & F(\alpha) & \overset{\sim}{\to} & F'(\beta)\\
& & | & & |\\
\varphi & \colon & F & \overset{\sim}{\to} & F'
\end{aligned}
\]
期望的行为非常明显,但实际输出是
答案1
您可能更适合使用tikz-cd
或.....但是在这里,您可以使用newcommand
:
\newcommand*{\mbc}[2]{\makebox[\widthof{$F(\alpha)$}][#1]{$#2$}}
这使得盒子的宽度与包装$F(\alpha)$
的宽度相同calc
。
\documentclass{article}
\usepackage{amsmath,calc}
\newcommand*{\mbc}[2]{\makebox[\widthof{$F(\alpha)$}][#1]{$#2$}}
\begin{document}
\[
\begin{aligned}
\mbc{r}{\sigma} & \colon & \mbc{c}{F(\alpha)} & \overset{\sim}{\to} & F'(\beta)\\
& & \mbc{c}{|} & & \mbc{c}{|}\\
\phi & \colon & \mbc{c}{F} & \overset{\sim}{\to} & \mbc{c}{F'}
\end{aligned}
\]
\end{document}
用于c
中心、l
左对齐和r
右对齐。
答案2
一次tikz-cd
尝试
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
\sigma\colon\hspace*{-4.5em} & F(\alpha) \arrow{r}{\sim} \arrow[dash]{d}
& F'(\beta) \arrow[dash]{d} \\
\varphi\colon\hspace*{-4.5em} & F \arrow{r}{\sim}
& F'
\end{tikzcd}
\end{document}
代码肯定可以改进,我tikz
根本不是专家......
dash
这是用以下方法替换的结果equal
答案3
对于这种简单的构造,您可以使用旧的CD
环境:
\documentclass{article}
\usepackage{amsmath,amscd}
\begin{document}
\[
\begin{CD}
\sigma\colon @. F(\alpha) @>\sim>> F'(\beta) \\
@. @| @| \\
\varphi\colon @. F @>\sim>> F'
\end{CD}
\]
\end{document}
然而,最好还是切换到tikz-cd
更灵活、更强大的现代软件包。