将交换图放入页面的建议

将交换图放入页面的建议

我正在尝试修复以下交换图中的一些 hbox 错误。请注意,此处简化了符号字符串,但写的是实际长度:

\documentclass{amsart}
\usepackage{tikz-cd}
\begin{document}
\begin{eqnarray*}
\begin{tikzcd}
BAAAAAAAAAAAAAAAAAAAAAAAAAAAA \ar{r} \ar{rd}  & CAAAAAAAAAAAAAAAAAAAAAAAAAAAA   \\
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA  \ar{u}  \ar{r}  &DAAAAAAAAAAAAAAAAAAAAAAAAAAAA \ar{u}
\end{tikzcd}
\end{eqnarray*}
\end{document}

这会导致 hbox 错误(140p 左右),我正在尝试修复它。我的第一次尝试如下:

\documentclass{amsart}
\usepackage{tikz-cd}
\begin{document}
\begin{eqnarray*}
\begin{tikzcd}
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA  \ar{d} 
\\
BAAAAAAAAAAAAAAAAAAAAAAAAAAAA  \ar{d}  \arrow[bend left=60]{dd} \\
CAAAAAAAAAAAAAAAAAAAAAAAAAAAA  \\
DAAAAAAAAAAAAAAAAAAAAAAAAAAAA  \ar{u}
\end{tikzcd}
\end{eqnarray*}
\end{document}

这里弯曲的箭头穿过另一个条目,我不确定如何修复它。但无论如何,可能有一个更好的建议。(我真的不想为这四个条目定义四个新符号。)

答案1

一种可行的方法是将长表达式分成两行。例如,使用包multlined中定义的数学环境mathtools

\documentclass{article}
\usepackage{mathtools}
\usepackage{tikz-cd}
%---------------- Show page layout. Don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
\[
\begin{tikzcd}[sep=large]
\begin{multlined}
    BAAAAAAAAAAAAA \\
    AAAAAAAAAAAAAAA
\end{multlined} \ar{r} \ar{rd} & \begin{multlined}
                                    BAAAAAAAAAAAAA \\
                                    AAAAAAAAAAAAAAA
                                \end{multlined}   \\
\begin{multlined}
    AAAAAAAAAAAAAA \\
    AAAAAAAAAAAAAAA
\end{multlined} \ar{u} \ar{r}  & \begin{multlined}
                                    BAAAAAAAAAAAAA \\
                                    AAAAAAAAAAAAAAA
                                \end{multlined} \ar{u}
\end{tikzcd}
\]
\end{document}

在此处输入图片描述

(红线表示文字边框)

当然,您可以使用其他环境,amsmathaligned,,,...gatheredsplit

附录(1): 对您的评论的备注/回复:

抱歉,但我们没有关于您图表实际内容的任何信息。但是,根据我对数学的了解(数学只是我日常使用的工具),任何数学表达式都可以分成两行。如果这对您来说不是一个选择,那么您有以下选择:

  • 使用较小的字体,
  • 局部放大文本宽度,
  • 旋转图表至横向。

无论如何,我会坚持建议的解决方案。

附录(2): 没有分割数学表达式的丑陋图表示例:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
                positioning}
%---------------- Show page layout. Don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
\[
\begin{tikzpicture}[
node distance = 8mm and 1mm,
every edge/.style = {draw, -{Straight Barb[scale=0.8]}, semithick}
                    ]
\node (a) {AAAAAAAAAAAAAAAAAAAAAAAAAAAAA};
\node (b) [below right=of a.south] {BBBBBBBBBBBBBBBBBBBBBBBBBBBBB};
\node (c) [below left=of b.south]{CCCCCCCCCCCCCCCCCCCCCCCCCCCCC};
\node (d) [below right=of c.south] {DDDDDDDDDDDDDDDDDDDDDDDDDDDDD};
%
\path   (a) edge    (b)
        (a) edge[out=0, in=15, looseness=3.4]     (d)
        (c) edge[bend left]     (a)
        (c) edge    (d)
        (d) edge[bend right]    (b);
 \end{tikzpicture}
\]
\end{document}

在此处输入图片描述

相关内容