我使用图形编辑器构建了一些 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}