有人可以帮忙解决这个问题吗:
\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
。目前,它会查找标记\arrow
、merge
和\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