![chemfig -- \charge 写入周围文本](https://linux22.com/image/471909/chemfig%20--%20%5Ccharge%20%E5%86%99%E5%85%A5%E5%91%A8%E5%9B%B4%E6%96%87%E6%9C%AC.png)
\documentclass{scrartcl}
\usepackage{chemfig}
\begin{document}
\par ggg jjj ggg jjj ggg jjj ggg jjj
\par
\schemestart
\chemfig{A-\charge{90:5pt=\textcolor{red}{+}}{B}-C}
\schemestop
\end{document}
如何将化学式与周围文字区分开?
\vspace{}
如果我必须为每个此类情况手动选择合适的措施,那么我并不是在寻求答案。我希望它是自动化的。
使用\Charge
而不是\charge
会扰乱 A、B、C 的垂直对齐。
将该方案投入到minipage
环境中并没有帮助。
答案1
overlay
绕过的方法\tikzmarknode
\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\usepackage{chemfig}
\begin{document}
\par ggg jjj ggg jjj ggg jjj ggg jjj
\par
\schemestart
\chemfig{A-\charge{90:5pt=\subnode{a1}{\textcolor{red}{+}}}{B}-C}
\tikz[remember picture]\path (a1.north) ++(0,2pt);
\schemestop
\end{document}
答案2
这chemfig
手动的(第 32 页)提出了类似下面的方法,但是,这种方法延长了带电原子旁边的原子之间的键:
\documentclass{scrartcl}
\usepackage{chemfig}
\definesubmol\X{\vphantom{X}}
\begin{document}
ggg jjj ggg jjj ggg jjj ggg jjj
\chemfig[anchor=atom.base]{A-!\X|\Charge{90:5pt[red]=+}{B}|!\X-C}
ggg jjj ggg jjj ggg jjj ggg jjj
\end{document}
首先,我们使用\Charge
命令添加加号。\Charge
与命令不同\charge
,命令不会将电荷打印为overlay
。然后,我们定义一个子分子\X
,它本质上是一个宽度为零、高度为字母 X 的盒子。我们使用将这个“零宽度原子”附加到实际(带电)原子的左侧和右侧!\X
。然后我们需要使用拆分原子|
,这样“分子”现在就变成了!\X|\Charge{...}|!\X
。这样,当chemfig
将其他原子连接到这个分子时,它只会看到一个高度为 X 的原子,因此可以正确地垂直对齐所有内容。
--
如果您希望键具有原始长度,则可以使用键选项的第二个参数进行调整:
\documentclass{scrartcl}
\usepackage{chemfig}
\definesubmol\X{\vphantom{X}}
\begin{document}
ggg jjj ggg jjj ggg jjj ggg jjj
\chemfig[anchor=atom.base]{A-[,.87]!\X|\Charge{90:5pt[red]=+}{B}|!\X-[,.87]C}
ggg jjj ggg jjj ggg jjj ggg jjj
\chemfig[anchor=atom.base]{A-\charge{90:5pt[red]=+}{B}-C}
ggg jjj ggg jjj ggg jjj ggg jjj
\end{document}