我有以下代码:
\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
我可以建议使用更现代的包tikz-cd? 这看起来像这样:
% 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}