我有一个宽交换图,我想让它位于页面中央,但它却从左边距开始,然后向右移动太远。我怎样才能让交换图位于页面中央?
我尝试过缩小尺寸,但当图表正确居中时,文本太小了。我尽可能地减少了列间距,也尝试过使用中心环境,但无济于事。提前致谢!
以下是图表:
\documentclass{report}
\usepackage[english]{babel}
\usepackage{amsmath, amssymb, tikz-cd, blindtext}
\newcommand{\C}{\mathbb{C}}
\begin{document}
\blindtext
\[
\begin{tikzcd}[column sep = 1em]
K^0_{S^1}(E_0 \times \C, p_1^*P_k)
\rar \dar
& K_{S^1}^0(U \times \C) \oplus K^0_{S^1}(V \times \C)
\rar \dar
& K_{S^1}^0(U\cap V \times \C)
\rar \dar
& K^1_{S^1}(E_0 \times \C, p_1^*P_k)
\dar
\\
K^0_{S^1}(E_0, P_k)
\rar
& K_{S^1}^0(U) \oplus K^0_{S^1}(V)
\rar
& K_{S^1}^0(U \cap V)
\rar
& K^1_{S^1}(E_0, P_k)
\end{tikzcd}
\]
\blindtext
\end{document}
答案1
居中tikz-cd
您可以使用 TikZ 函数将整个图片置于文本的中心(当使用不同的边距时,而不是页面的中心)。
这些都是trim left
和trim right
。将两者设置为相同的坐标意味着图片将没有水平宽度,并且由于\[ … \]
其内容将自行居中,因此它将使图片居中在该坐标上。如果将该坐标设置为整个图片的中心,则整个图片将以其中心为中心。
如果您经常需要它,那么最好为其定义自己的风格,这就是我center picture
为此定义风格的原因。
(\[ … \]
对于图表来说这不是必需的,tikz-cd
因为它无论如何都会使用数学模式来表示单元格,而不是使用\[ … \]
环境center
,但垂直间距可能不同。)
或者更小的图片
我不是交换图和规则方面的专家,但我添加了两个独立的例子:
- 第一个(用于
down and trim
第一行的节点)将楼梯的第一行对齐。 - 第二个(带有
downup and trim
)仅交替垂直放置。
1cm
两者均从两侧修剪节点的边界框。
我已经1.5\baselineskip
随机选择了,根据图表的设置(垂直间距和节点大小)设置此值可能更明智。
如果单元格内使用的公式非常高或非常低,则需要更多的手动控制。
这里,所有节点仍然在同一\matrix
行,但设置在不同的高度。
对于更复杂的图表,最好将这些公式分布在不同的节点上,再次使用trim node
或负数计算column sep
。
代码
\documentclass{report}
\usepackage[english]{babel}
\usepackage{amsmath, amssymb, tikz-cd, blindtext}
\newcommand{\C}{\mathbb{C}}
\tikzset{
trim node/.default=1cm,
trim node/.style={
overlay,
append after command={% restore smaller bounding box
([xshift={+#1}]\tikzlastnode.north west)
([xshift={+-#1}]\tikzlastnode.south east)}},
down and trim/.default=1cm,
down and trim/.style={
yshift=-(\pgfmatrixcurrentcolumn-1)*1.5\baselineskip,
trim node={#1}},
downup and trim/.default=1cm,
downup and trim/.style={
yshift=iseven(\pgfmatrixcurrentcolumn) ? -1.5\baselineskip : 0pt,
trim node={#1}},
-|/.style={to path={-|(\tikztotarget)\tikztonodes}},
|-/.style={to path={|-(\tikztotarget)\tikztonodes}},
-| sl/.style={-|, xslant=-1},
|- sl/.style={|-, xslant= 1},
center picture/.style={
trim left=(current bounding box.center),
trim right=(current bounding box.center)}}
\begin{document}
\blindtext
\[
\begin{tikzcd}[column sep = 1em, center picture]
K^0_{S^1}(E_0 \times \C, p_1^*P_k) \rar \dar
& K_{S^1}^0(U \times \C) \oplus K^0_{S^1}(V \times \C) \rar \dar
& K_{S^1}^0(U\cap V \times \C) \rar \dar
& K^1_{S^1}(E_0 \times \C, p_1^*P_k) \dar \\
K^0_{S^1}(E_0, P_k) \rar
& K_{S^1}^0(U) \oplus K^0_{S^1}(V) \rar
& K_{S^1}^0(U \cap V) \rar
& K^1_{S^1}(E_0, P_k)
\end{tikzcd}
\]
\blindtext
\[
\begin{tikzcd}[column sep = 1em, /tikz/row 1/.append style={nodes=down and trim}]
K^0_{S^1}(E_0 \times \C, p_1^*P_k) \rar[-|] \dar
& K_{S^1}^0(U \times \C) \oplus K^0_{S^1}(V \times \C) \rar[-|] \dar
& K_{S^1}^0(U\cap V \times \C) \rar[-|] \dar
& K^1_{S^1}(E_0 \times \C, p_1^*P_k) \dar \\
K^0_{S^1}(E_0, P_k) \rar
& K_{S^1}^0(U) \oplus K^0_{S^1}(V) \rar
& K_{S^1}^0(U \cap V) \rar
& K^1_{S^1}(E_0, P_k)
\end{tikzcd}
\]
\blindtext
\[
\begin{tikzcd}[column sep = 1em, /tikz/row 1/.append style={nodes=downup and trim}]
K^0_{S^1}(E_0 \times \C, p_1^*P_k) \rar[-| sl] \dar
& K_{S^1}^0(U \times \C) \oplus K^0_{S^1}(V \times \C) \rar[|- sl] \dar
& K_{S^1}^0(U\cap V \times \C) \rar[-| sl] \dar
& K^1_{S^1}(E_0 \times \C, p_1^*P_k) \dar \\
K^0_{S^1}(E_0, P_k) \rar
& K_{S^1}^0(U) \oplus K^0_{S^1}(V) \rar
& K_{S^1}^0(U \cap V) \rar
& K^1_{S^1}(E_0, P_k)
\end{tikzcd}
\]
\blindtext
\end{document}