有没有办法“缩小”这个 tikzpicture?

有没有办法“缩小”这个 tikzpicture?

我使用图形编辑器构建了一些 tikzcd 图表,但我正在寻找一种方法来“缩小”图表,因为它们太宽了,不太适合我的页面。任何帮助都将不胜感激。

此类图表的示例如下:

\documentclass[margin=3mm,varwidth]{standalone}
\usepackage{tikz-cd}
\begin{document}

  \[ \begin{tikzcd}
{k[x,y,t]/(ab-c,d-e)} &  &  &  &  &  \\
& {k[x,y,t]/(ab-c,d-e) \otimes_{k[t]} k[t]/(d-e)} \arrow[lu, "\sigma", dotted] &  &  &  &  \\
&  &  & {k[x,y,t]/(ab-c,d-e)} \arrow[llu, "\theta", dotted] &  & {k[x,y,t]} \arrow[ll, "\varphi"] \arrow[llllu, "\psi", bend right] \arrow[llllluu, "g", bend right] \\
&  &  &  &  &  \\
&  &  & 0 \arrow[uu, "\epsilon"] \arrow[llluuuu, "h", bend left] \arrow[lluuu, "\zeta", bend left] &  & {(ab-c,d-e)} \arrow[uu, "\iota"] \arrow[ll, "\rho"', no head] \end{tikzcd} \]

答案1

我会:

  • 减少柱间距离(column sep=small
  • 减少列数和行数
  • 使用重写数学表达式\frac

在此处输入图片描述

\documentclass[margin=3mm,varwidth]{standalone}
\usepackage{tikz-cd}

\begin{document}
\[
\begin{tikzcd}[column sep=small]
\frac{k[x,y,t]}{(ab-c,d-e)}
    &   &   &                                           \\
    & \frac{k[x,y,t]}{(ab-c,d-e)} \otimes_{k[t]} \frac{k[t]}{(d-e)}
        \ar[lu,"\sigma",dotted]
        &   &                                           \\
    &   & \frac{k[x,y,t]}{(ab-c,d-e)} \ar[lu, "\theta", dotted]
            & k[x,y,t] \ar[l, "\varphi"]
                       \ar[llu, "\psi", bend right=45]
                       \ar[llluu, "g",  bend right=45]  \\
    &   & 0 \ar[u, "\epsilon"]
            \ar[luu, "\zeta", bend left]
            \ar[lluuu, "h", bend left]
             &  (ab-c,d-e) \ar[u, "\iota"]
                           \ar[l, "\rho"', no head]
\end{tikzcd}
\]
\end{document}

答案2

关键cramped在于以方便的方式删除一些空白,同时保留图表的结构。

但我认为你会面临页面长度大于宽度的问题。图表流必须以对角线形式贯穿整个页面,这有什么特别的原因吗?我建议重新调整方向:

\documentclass[margin=3mm,varwidth]{standalone}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
 % \begin{tikzcd}[cramped] % Remove some of the whitespace
&&&
{(ab-c,d-e)} \arrow[ld, "\rho"', no head]   \arrow[rd,  "\iota"]&&&\\
&&
0 \arrow[rd, "\epsilon"]  \arrow[dddr, "\zeta", end anchor={[xshift=-1.5cm, yshift=0.3cm]}, bend right=15]
\arrow[dddddr,swap, "h", end anchor={[xshift=0cm, yshift=0.2cm]}, bend right=60]
&&
{k[x,y,t]} \arrow[dl, "\varphi"]    \arrow[dddl, "\psi", end anchor={[xshift=1.5cm, yshift=0.3cm]}, bend left=10] 
\arrow[dddddl, "g", end anchor={[xshift=0.8cm, yshift=-0.1cm]}, bend left=40]&&\\
&&& {k[x,y,t]/(ab-c,d-e)}  \arrow[dd, "\theta", dotted] &&&\\
&&&&&&\\
&&& \makebox[1em][c]{$k[x,y,t]/(ab-c,d-e) \otimes_{k[t]} k[t]/(d-e)$}  \arrow[dd, "\sigma", dotted] &&&\\
&&&&&&\\
&&& {k[x,y,t]/(ab-c,d-e)} &&&\\
\end{tikzcd}
\end{document}

(我还想知道为什么整个图表都处于显示的数学环境中)。

输出: 在此处输入图片描述

答案3

稍微作弊一下,你可以将你的图表转换为

\documentclass[margin=3mm,varwidth]{standalone}
\usepackage{tikz-cd}
\begin{document}
\[ \begin{tikzcd}[row sep=2em,column sep=1em]
{k[x,y,t]/(ab-c,d-e)} &  &  &  &  &  \\
& \makebox[1em][c]{$k[x,y,t]/(ab-c,d-e) \otimes_{k[t]} k[t]/(d-e)$} \arrow[lu, "\sigma", dotted] &  &  &  &  \\
&  &  & {k[x,y,t]/(ab-c,d-e)} \arrow[llu, "\theta", dotted] &  & {k[x,y,t]} \arrow[ll, "\varphi"] \arrow[llllu, "\psi", bend right] \arrow[llllluu, "g", bend right] \\
&  &  &  &  &  \\
&  &  & 0 \arrow[uu, "\epsilon"] \arrow[llluuuu, "h",
out=180,in=-120,looseness=1.5,overlay] \arrow[lluuu, "\zeta", bend left] &  & {(ab-c,d-e)} \arrow[uu, "\iota"] \arrow[ll, "\rho"', no head] 
\end{tikzcd} \]
\end{document}

在此处输入图片描述

相关内容