我不确定这是否可行。
我希望对 中的列的水平对齐进行一些控制tikzcd
。
特别是,我希望能够模仿(在我的某些图表上)右对齐 - 左对齐交替。
因此,我希望以下 MWE 中的第一个图表与第二个图表对齐
\documentclass[a4paper,11pt,fleqn,oneside]{book}%
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix, arrows, cd, patterns}
\begin{document}
\begin{tikzcd}[baseline=(current bounding box.center), row sep = 0ex]
\text{something long} \arrow[r] & \text{something else long}\\
a \arrow[r, mapsto] & b
\end{tikzcd}
\begin{align*}
\text{something long} & \longrightarrow \text{something else long}\\
a &\longmapsto b
\end{align*}
\end{document}
有可能吗?怎么做?
我已经尝试过column 1./style={anchor=base east}
(和base west
),但没有成功。
答案1
在我思考一些更聪明的方法的同时,你可以选择
% arara: pdflatex
\documentclass[a4paper,11pt,fleqn,oneside]{book}
\usepackage{mathtools}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[row sep = 0ex, column sep=1.9em]
\text{something long} \arrow{r} & \text{something else long}\\
\makebox[\widthof{something long}][r]{$a$} \arrow[mapsto]{r} & \makebox[\widthof{something else long}][l]{$b$}
\end{tikzcd}
\begin{align*}
\text{something long} & \longrightarrow \text{something else long}\\
a &\longmapsto b
\end{align*}
\end{document}
如果你不经常需要这样做的话。
接下来是更聪明的事情:
% arara: pdflatex
\documentclass[a4paper,11pt,fleqn,oneside]{book}
\usepackage{mathtools}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[%
,row sep = 0ex
,/tikz/column 1/.append style={anchor=base east}
,/tikz/column 2/.append style={anchor=base west}
]
\text{something long} \arrow{r} & \text{something else long} \\
a \arrow[mapsto]{r} & b
\end{tikzcd}
\end{document}
希望,这就是您所需要的。