newcommand 和 \def 错误

newcommand 和 \def 错误

有人可以帮忙解决这个问题吗:

\documentclass[fontsize=12pt,paper=a4,headsepline]{scrartcl}  
\usepackage{chemfig,chemmacros}  
\def\nc{\arrow{0}[,0]}  

\begin{document}  
What it is:  
\schemedebug{true}  
\schemestart  
\chemfig{A}  
\chemsign{+}  
\chemfig{A}  
\arrow{->}  
\chemfig{C}  
\schemestop  

What I want:  
\schemedebug{true}  
\schemestart  
\chemfig{A}\arrow{0}[,0]  
\chemsign{+}\arrow{0}[,0]  
\chemfig{A}  
\arrow{->}  
\chemfig{C}  
\schemestop  

the usage of arrow{0}[,0] is very annoying, so I tried this:  
%\schemedebug{true}  
%\schemestart  
%\chemfig{A}\nc  
%\chemsign{+}\nc  
%\chemfig{A}  
%\arrow{->}  
%\chemfig{C}  
%\schemestop  
\end{document}  

但我得到的只是这个错误:

%! Undefined control sequence.
<recently read> \node

答案1

在方案内部(即\schemestart和之间\schemestop),\arrow命令需要直接使用,而不是隐藏在宏中。但还有其他可能性。

为了将您的\nc宏用作 的快捷方式,\arrow{0}[,0] chemfig方案机制必须像对待 一样对待它\arrow。这可以通过修补 轻松实现\CF@schemestart@v。目前,它会查找标记\arrowmerge\schemestop,并将所有其他宏收集为节点(或“复合”)文本的一部分。借助 ,可以将宏etoolbox添加到列表中:\patchcmd\nc

\makeatletter
\patchcmd\CF@schemestart@v
  {\arrow}%    search
  {\arrow\nc}% replace
  {}%          success
  {}%          failure
\makeatother

然后\nc可以用作您想要的快捷方式:

\documentclass[fontsize=12pt,paper=a4,headsepline]{scrartcl}  
\usepackage{chemfig,etoolbox}

\newcommand\nc{\arrow{0}[,0]}

\makeatletter
\patchcmd\CF@schemestart@v
  {\arrow}%    search
  {\arrow\nc}% replace
  {}%          success
  {}%          failure
\makeatother

\begin{document}  
\schemedebug{true}

\schemestart
  \chemfig{A}\nc
  \chemsign{+}\nc
  \chemfig{A}
  \arrow{->}
  \chemfig{C}
\schemestop

\end{document}

在此处输入图片描述


原始答案假设问题与间距有关:

我会用而不是chemfig。后者之前已经介绍过,有方案的可能性。旨在用于方案内部,可以设置 前后的间距,它排版为\+\chemsign{+}chemfig\++

\setandsign{<dim before>}{<dim after>}{<vertical offset>}

这也可以根据每个情况进行调整,因为\+有一个可选参数(带括号!):

\+{<dim before>,<dim after>,<vertical offset>}

该宏在手册第四部分中有描述反应方案第12节+ 号

还要记住的是,两者之间的一切\arrow命令之间的所有内容都放在节点。节点内部的行尾将被视为空格,就像 LaTeX 中的其他地方一样:

\schemestart
  % first node:
  \chemfig{A}
  \chemsign{+}
  \chemfig{A}
  \arrow{->}
  % second node:
  \chemfig{A}%  hide end of line
  \chemsign{+}% hide end of line
  \chemfig{A}
\schemestop

在此处输入图片描述

使用\+

\schemestart
  \chemfig{A}
  \+
  \chemfig{A}
  \arrow{->}
  \chemfig{C}
\schemestop

\schemestart
  \chemfig{A}%
  \+%
  \chemfig{A}
  \arrow{->}
  \chemfig{C}
\schemestop

\setandsign{0pt,0pt,0pt}
\schemestart
  \chemfig{A}%
  \+%
  \chemfig{A}
  \arrow{->}
  \chemfig{C}
\schemestop

在此处输入图片描述

相关内容