我正在尝试修复以下交换图中的一些 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}
(红线表示文字边框)
当然,您可以使用其他环境,amsmath
如aligned
,,,...gathered
split
附录(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}