我正在使用这个包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}\].