从 amscd 调整 CD 输出的大小

从 amscd 调整 CD 输出的大小

我正在使用这个包amscd制作交换图,具有CD环境,我想知道如何改变结果的大小(特别是使其变大)。

我试试这个

\[
\scalebox{1.4}{  
\begin{CD}  
C @>\phi>> C'=\phi(C)\\  
@V\textnormal{Dual}VV\\  
C^{\perp}@>\phi>> C=\phi(C^{\perp})  
\end{CD}  
}  
\]  

它可以工作,但我收到一个错误,例如缺少$或多余},有人可以帮助我吗?

答案1

这是一种可能性:定义一个键值接口CD并修改垂直箭头的构建方式。

但是,建议使用专用包(例如xy或较新的基于 TikZ 的包)。tikz-cd

\documentclass{article}
\usepackage{amscd,keyval}

\makeatletter
\define@key{modCD}{cols}{\setlength{\minCDarrowwidth}{#1}}
\define@key{modCD}{rows}{\setlength{\modCD@rowsep}{#1}}
\newlength{\modCD@rowsep}

\renewenvironment{CD}[1][]
 {\modCD@rowsep=20\ex@ % default
  \setkeys{modCD}{#1}%
  \CDat
  \bgroup\relax\iffalse{\fi\let\ampersand@&\iffalse}\fi
  \CD@true\vcenter\bgroup\let\\\math@cr\restore@math@cr\default@tag
  \tabskip\z@skip\baselineskip20\ex@
  \lineskip3\ex@\lineskiplimit3\ex@\halign\bgroup
  &\hfill$\m@th##$\hfill\crcr}
 {\crcr\egroup\egroup\egroup}
\atdef@ V#1V#2V{\CD@check{V..V..V}{%
  \llap{$\m@th\vcenter{\hbox{$\scriptstyle#1$}}$}%
  \left\downarrow\vbox to.5\modCD@rowsep{}\right.\kern-\nulldelimiterspace
  \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}}
\atdef@ A#1A#2A{\CD@check{A..A..A}{%
  \llap{$\m@th\vcenter{\hbox{$\scriptstyle#1$}}$}%
  \left\uparrow\vbox to.5\modCD@rowsep{}\right.\kern-\nulldelimiterspace
  \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}}
\makeatother

\begin{document}
\[
\begin{CD}
A @>f>> B \\
@VxVV @AAyA\\
C @>g>> D
\end{CD}
\]
\[
\begin{CD}[rows=30ex,cols=10em]
A @>f>> B \\
@VxVV @AAyA\\
C @>g>> D
\end{CD}
\]
\end{document}

行间距大约为 中指定的值rows=,而cols=指定最小水平箭头宽度。

在此处输入图片描述

答案2

当然,如果需要调整图表的整体大小,您可以缩放它:

\documentclass{article}
\usepackage{amscd}
\usepackage{scalerel}
\begin{document}
Voila!~~~~~~~$
  \scaleto{%
    \begin{CD}
    A @>f>> B \\
    @VxVV @AAyA\\
    C @>g>> D
  \end{CD}
}{150pt}
$
\end{document}

在此处输入图片描述

答案3

切换到会更容易tikz-cd。如果你这样做,你可以使用来自这个帖子。这些\makemathbox{}命令是可选的。它们只是给每条边一个特定的宽度,以使箭头的长度相同。正如 OP 所要求的,我缩放了整个图像,例如箭头、字符和线条粗细。

% arara: pdflatex

\documentclass{article}
\usepackage{tikz-cd}
\usepackage{mathtools}

\begin{document}     
\[
\begin{tikzcd}[transform canvas={scale=5}]
\mathmakebox[1em][c]{C} \arrow{r}{\phi} \arrow{d}[swap]{\text{Dual}} & \mathmakebox[5em][c]{C^{\prime}=\phi(C)}\\
\mathmakebox[1em][c]{C^\perp} \arrow{r}{\phi}& \mathmakebox[5em][c]{C=\phi(C^{\perp})}
\end{tikzcd}
\]
\end{document}

在此处输入图片描述

答案4

您无法在内部更改 amscd 交换图的大小,但可以增加水平箭头的最小长度:

\[\minCDarrowwidth55pt\begin{CD}...\end{CD}\].

相关内容