我有一个包含三种化合物的反应方案。我想在其中使用 L 形箭头,以便可以贴上标签。chemfig 不提供这种箭头,因此我定制了我的第一个箭头。它如下:
\documentclass[border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{chemfig}
\makeatletter
\definearrow2{|->}{%
\expandafter\draw\expandafter[shorten <=\CF@arrow@offset,shorten >=\CF@arrow@offset,\CF@arrow@current@style,-CF]
(\CF@arrow@start@name)--(\CF@arrow@start@name |- \CF@arrow@end@name)--(\CF@arrow@end@name);
\CF@arrow@display@label{#1}{0.5}{+}{\CF@arrow@start@name |- \CF@arrow@end@name}{#2}{0.5}{-}{\CF@arrow@end@name}}
\makeatother
\begin{document}
%\schemedebug{true}
\schemestart
{\Huge A}
\arrow(.south west--.north west){0}[-20]
{\Huge B}
\arrow(.south west--.north west){0}[270,.2]
{\Huge C}
\arrow(@[email protected]){|->[+1]}
\arrow(@[email protected]){|->[+2]}
\schemestop
\end{document}
坐标(\CF@arrow@start@name |- \CF@arrow@end@name)
位于 A 处的垂直线与 B 处的水平线的交点处。此时 L 获得了其边缘。
我第一次尝试使用\CF@arrow@start@node
而不是\CF@arrow@start@name
作为起点(以及终点)。这样,箭头就无法正确对齐。因此,我按照 chemfig 手册第 10.2 节中所述对其进行了更改。在这种情况下,箭头必须缩短 以shorten <=\CF@arrow@offset,shorten >=\CF@arrow@offset
在化合物和箭头之间留出间隙。
但是,如果我将缩短添加到绘制命令中,我会得到所需的间隙,但也会出现错误消息:Package pgf Error: Unknown arrow tip kind 'CF,'. \schemestop
有谁知道为什么只有shorten <=\CF@arrow@offset,shorten >=\CF@arrow@offset
包含时才会显示错误消息?
答案1
你\expandafter
扩大了“s” shorten
...它们应该扩大\CF@arrow@current@style
:
\documentclass[border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{chemfig}
\makeatletter
\definearrow2{|->}{%
\expandafter\draw\expandafter[\CF@arrow@current@style,shorten <=\CF@arrow@offset,shorten >=\CF@arrow@offset,-CF]
(\CF@arrow@start@name)--(\CF@arrow@start@name |- \CF@arrow@end@name)--(\CF@arrow@end@name);
\CF@arrow@display@label{#1}{0.5}{+}{\CF@arrow@start@name |- \CF@arrow@end@name}{#2}{0.5}{-}{\CF@arrow@end@name}}
\makeatother
\begin{document}
%\schemedebug{true}
\schemestart
{\Huge A}
\arrow(.south west--.north west){0}[-20]
{\Huge B}
\arrow(.south west--.north west){0}[270,.2]
{\Huge C}
\arrow(@[email protected]){|->[+1]}
\arrow(@[email protected]){|->[+2]}
\schemestop
\end{document}