交换图 DCpic 中的对象

交换图 DCpic 中的对象

我有以下形式的图表:

\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。

在此处输入图片描述

相关内容