tikzcd 中的列对齐

tikzcd 中的列对齐

我不确定这是否可行。
我希望对 中的列的水平对齐进行一些控制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}

希望,这就是您所需要的。

在此处输入图片描述

相关内容