我想让元素的氧化数高于元素数,但在我的例子中,氧化数总是重叠。我正在寻找一个实用的解决方案。如果我设法缩短氧化数的运算符(- 和 +),也许会有所帮助。在我看来,罗马字母之间的空格似乎可以更小一些。如何解决这个问题?
\documentclass[11pt]{scrartcl}
\usepackage{chemmacros}
\usepackage{chemformula}
\chemsetup[redox]{pos=top,explicit-sign=true,explicit-zero-sign=true,format=\tiny}
\begin{document}
\ch{"\ox{3,X}" "\ox{-3,B}" "\ox{3,C}"}
\end{document}
答案1
我做了大约 50 次测试来修复您的代码。我认为我附上的解决方案是最好的。
\documentclass[10pt]{scrartcl}
\usepackage{chemmacros}
\usepackage{chemformula}
\chemsetup[redox]{explicit-sign=true,explicit-zero-sign=true,format=\tiny }
\begin{document}
\ch{H}\ch{"\ox*[pos=top]{2,C}" "\ox*[pos=side,align=right]{-2,O}" O-}
\end{document}
用阿拉伯数字是最好的结果。
\documentclass[11pt]{scrartcl}
\usepackage{chemmacros}
\usepackage{chemformula}
\chemsetup[redox]{roman = false,explicit-sign=true,explicit-zero-sign=true,format=\tiny }
\begin{document}
\ch{H}\ch{"\ox*[pos=top]{2,C}" "\ox*[pos=side,align=right]{-2,O}" O-}
\end{document}
答案2
使用 chemfig 包我得到了稍微好一点的结果。
使用 chemfig 我们还可以绘制还原/氧化箭头
\documentclass[margin=3mm,12pt]{standalone}
\usepackage{chemfig}
\begin{document}
\chemfig{H\charge{90:2pt={\tiny II}}{C}\charge{90:2pt={\tiny -II}}{O}O^{-}}
\end{document}
和
\documentclass[border=12mm]{standalone}
\usepackage{amsmath}
\usepackage{chemfig}
\usepackage{tikz}
\usetikzlibrary{calc,arrows.meta}
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\tikzset{square arrow/.style={to path={-- ++(0,0.3) -| (\tikztotarget)}}}
\begin{document}
\schemestart
\chemfig{@{c}\charge{90:2pt={\textcolor{red}{\tiny VII}}}{Mn}O^{-}_4} \arrow{->} \chemfig{@{d}\charge{90:2pt={\textcolor{red}{\tiny II}}}{Mn}}
\schemestop
\tikz[overlay,remember picture]{
\draw[->,-stealth,square arrow,red,thick] ($(c.north)+(0.0em,2ex)$) to ($(d.north)+(-0.0em,2ex)$)node[above]{\parbox{2cm}{\hspace{-1.5cm}{\textcolor{blue}{REDUCTION \\}}}};
}
\end{document}