我有以下形式的图表:
\begindc
\obj(1,1){$A$}
\obj(3,1){$B$}
\obj(3,3){$C$}
\mor(1,1)(3,1) {$f$ }[\atright,\solidarrow]
\mor(1,1)(3,3) {$g$ }
\mor(3,1)(3,3) {$h$ }[\atright,\solidarrow]
\enddc
我想知道“对象” A、B、C 是否必须仅使用普通数学字体,即我们不能A
用\mathsf{A}
或\mathfrak{A}
或替换它们\mathbf{A}
。如果这真的是一个限制,是否有其他包允许使用特殊数学字体作为“对象”?
答案1
您可以使用
\obj(1,1)[A]{$\mathsf{A}$}
因此可选参数设置节点名称。但是,有比dcpic
任何类型的交换图都更现代、更强大的软件包。我使用过 XY-pic ( \usepackage[all,cmtip]{xypic}
),但较新的软件包tikz-cd
似乎非常有前途且易于使用。
答案2
正如 egreg 所建议的,更现代的软件包将使这些事情变得更容易。目前最好的学习软件包应该是tikz-cd
(我的建议)。这是您使用此软件包的图表。
% arara: pdflatex
\documentclass{article}
\usepackage{tikz-cd}
\usepackage{amsfonts}
\begin{document}
\begin{tikzcd}
& C \\
A\mathsf{A}\mathfrak{A}\mathbf{A} \arrow{r}[swap]{f} \arrow{ur}{g} & B \arrow{u}[swap]{h}
\end{tikzcd}
\end{document}
在 DCpic 的新版本 (5.1) 中,这个问题已得到修复。您现在可以这样写:
% arara: pdflatex
\documentclass{article}
\usepackage{pictexwd,dcpic}
\usepackage{amsfonts}
\begin{document}
\begindc{\commdiag}[500]
\obj(1,1){$A\mathsf{A}\mathfrak{A}\mathbf{A}$}
\obj(3,1){$A\mathsf{B}\mathfrak{B}\mathbf{B}$}
\obj(3,3){$A\mathsf{C}\mathfrak{C}\mathbf{C}$}
\mor(1,1)(3,1)[200,200]{$f$ }[\atright,\solidarrow]
\mor(1,1)(3,3) {$g$ }
\mor(3,1)(3,3) {$h$ }[\atright,\solidarrow]
\enddc
\end{document}
在将其上传到 CTAN 之前,您可能需要将此补丁添加到您的序言中:
\makeatletter
\@namedef{!coloca}#1#2{\protected@edef\pilha{#1.#2}}
\makeatother
作为建议的通过 egreg。