交换图问题

交换图问题

我有以下代码:

\begindc{\commdiag}[500]
\obj(0,0){$k(s)$} 
\obj(0,2){$K$}
\obj(-1,1){$k(x)$}
\obj(1,1){$k(y)$}
\mor(0,0)(-1,1){}[+1,6]
\mor(0,0)(1,1){}[-1,6]
\mor(-1,1)(0,2){}[+1,6]
\mor(1,1)(0,2){}[+1,6]
\enddc

我想把\spec每一个对象等等。

我已经\spec在文档开头定义为,

\DeclareMathOperator\spec{spec}

但是当我在交换图中执行此操作时出现错误。

答案1

我可以建议使用更现代的包? 这看起来像这样:

% arara: pdflatex

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

\begin{document}
\[
\begin{tikzcd}[every arrow/.append style={hook}]
& \spec K & \\
\spec K(x)\arrow{ur} & & \spec K(y)\arrow{ul} \\
& \spec k(s)\arrow{ur}\arrow{ul} &
\end{tikzcd}
\]
\end{document}

在此处输入图片描述


如果您想坚持dcpic,您可以使用带星号的版本\DeclareMathOperator作为解决方法。

% arara: pdflatex

\documentclass{article}
\usepackage{pictexwd,dcpic}
\usepackage{mathtools}
\DeclareMathOperator*\spec{spec} % Asterisk added

\begin{document}
\begindc{\commdiag}[500]
\obj(0,0){$\spec k(s)$} 
\obj(0,2){$\spec K$}
\obj(-1,1){$\spec k(x)$}
\obj(1,1){$\spec k(y)$}
\mor(0,0)(-1,1){}[+1,6]
\mor(0,0)(1,1){}[-1,6]
\mor(-1,1)(0,2){}[+1,6]
\mor(1,1)(0,2){}[+1,6]
\enddc
\end{document}

在此处输入图片描述

答案2

这是 中的一个错误dcpic,它使用\edef而不是\protected@edef

\documentclass{article}
\usepackage{amsmath}
\usepackage{dcpic,pictexwd}
\DeclareMathOperator\spec{spec}

\makeatletter
\@namedef{!coloca}#1#2{\protected@edef\pilha{#1.#2}} % had \edef
\makeatother

\begin{document}
\begindc{\commdiag}[500]
\obj(0,0){$\spec k(s)$}
\obj(0,2){$\spec K$}
\obj(-1,1){$\spec k(x)$}
\obj(1,1){$\spec k(y)$}
\mor(0,0)(-1,1){}[+1,6]
\mor(0,0)(1,1){}[-1,6]
\mor(-1,1)(0,2){}[+1,6]
\mor(1,1)(0,2){}[+1,6]
\enddc
\end{document}

在此处输入图片描述

相关内容