我在方程环境中使用了 tikzcd,这样图表应该放在新行上并居中,但我不知道为什么它没有完全居中。这是我的代码:
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-cd}
\usetikzlibrary{matrix,arrows}
\begin{document}
The diagram is not perfectly centered:
\[
\begin{tikzcd}
H^0(U\cup V) \rar & H^0(U)\oplus H^0(V) \rar & H^0(U\cap V)
\ar[out=-20, in=160]{dll} \\
H^1(U\cup V) \rar & H^1(U)\oplus H^1(V)\rar & H^1(U\cap V)
\ar[out=-20, in=160]{dll} \\
H^2(U\cup V) \rar & H^2(U)\oplus H^2(V)\rar & H^2(U\cap V)
\end{tikzcd}
\]
\end{document}
图表稍微偏向页面右侧。有人知道如何修复这个问题吗?
答案1
原因是弯曲的箭头定义了辅助坐标,这些坐标位于图表绘制部分之外很远的地方,因此图表包含大量空白,其宽度实际上比文本块的宽度更宽。查看日志,您会看到有关 的警告。Overfull \hbox (72.53682pt too wide)
要可视化这一点,请添加backgrounds
TikZ 库,并将其添加[show background rectangle]
到环境选项中tikzcd
。(请参阅下面的代码。)
要修复此问题,请将绘制箭头overlay
的命令添加到选项中\ar
。此选项意味着在定义图表的边界框时不会考虑这些命令。
\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{matrix,arrows,backgrounds}
\begin{document}
The diagram is not perfectly centered:
\[
\begin{tikzcd}[show background rectangle]
H^0(U\cup V) \rar & H^0(U)\oplus H^0(V) \rar & H^0(U\cap V)
\ar[out=-20, in=160]{dll} \\
H^1(U\cup V) \rar & H^1(U)\oplus H^1(V)\rar & H^1(U\cap V)
\ar[out=-20, in=160]{dll} \\
H^2(U\cup V) \rar & H^2(U)\oplus H^2(V)\rar & H^2(U\cap V)
\end{tikzcd}
\]
The diagram is centered:
\[
\begin{tikzcd}[show background rectangle]
H^0(U\cup V) \rar & H^0(U)\oplus H^0(V) \rar & H^0(U\cap V)
\ar[overlay,out=-20, in=160]{dll} \\
H^1(U\cup V) \rar & H^1(U)\oplus H^1(V)\rar & H^1(U\cap V)
\ar[overlay,out=-20, in=160]{dll} \\
H^2(U\cup V) \rar & H^2(U)\oplus H^2(V)\rar & H^2(U\cap V)
\end{tikzcd}
\]
\end{document}
答案2
使用 制作的交换图不存在这样的问题pstricks
。加载auto-pst-pdf
使您能够使用 进行编译pdflatex
,前提是使用-shell-escape
开关 (TeX Live、MacTeX) 或启动它--enable-write18
。
\documentclass{article}
\usepackage[showframe]{geometry}%
\usepackage{pst-node, auto-pst-pdf}%
\begin{document}
\[\begin{psmatrix}[rowsep =5ex]
H^0(U \cup V) & H^0(U) \oplus H^0(V) & H^0(U \cap V)\pnode[0,0.15]{S1}\\
\pnode[0,0.08]{S2}H^1(U \cup V) & H^1(U) \oplus H^1(V) & H^1(U \cap V)\pnode[0,0.15]{S3} \\
\pnode[0,0.08]{S4}H^2(U \cup V) & H^2(U) \oplus H^2(V) & H^2(U \cap V)
\psset{arrows=->, linewidth=0.5pt, nodesep=4pt, arrowinset=0.12}
\ncline{1,1}{1,2}\ncline{1,2}{1,3}
\ncline{2,1}{2,2}\ncline{2,2}{2,3}
\ncline{3,1}{3,2}\ncline{3,2}{3,3}
\psset{angleA=-15,angleB=165, ncurv=0.8, nodesepB=2pt}
\nccurve[angleA=-15,angleB=165, ncurv=0.8, nodesepB=2pt]{S1}{S2}%{1,3}{2,1}
\nccurve{S3}{S4}
\end{psmatrix}\]
\end{document}