宽 tikz-cd 图未居中(向右移动)

宽 tikz-cd 图未居中(向右移动)

我有一个宽交换图,我想让它位于页面中央,但它却从左边距开始,然后向右移动太远。我怎样才能让交换图位于页面中央?

我尝试过缩小尺寸,但当图表正确居中时,文本太小了。我尽可能地减少了列间距,也尝试过使用中心环境,但无济于事。提前致谢!

以下是图表:

\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 lefttrim right。将两者设置为相同的坐标意味着图片将没有水平宽度,并且由于\[ … \]其内容将自行居中,因此它将使图片居中在该坐标上。如果将该坐标设置为整个图片的中心,则整个图片将以其中心为中心。

如果您经常需要它,那么最好为其定义自己的风格,这就是我center picture为此定义风格的原因。

\[ … \]对于图表来说这不是必需的,tikz-cd因为它无论如何都会使用数学模式来表示单元格,而不是使用\[ … \]环境center,但垂直间距可能不同。)

或者更小的图片

我不是交换图和规则方面的专家,但我添加了两个独立的例子:

  1. 第一个(用于down and trim第一行的节点)将楼梯的第一行对齐。
  2. 第二个(带有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}

输出

在此处输入图片描述

相关内容