是否有支持化学方程式加减的软件包,也许带有自动制表和对齐功能。虽然我显然可以设置表格或使用 mathmode 的对齐功能,但让软件包自动处理制表似乎效率更高,因为在这个应用程序中这是相当可预测的。 mhchem
似乎没有这样的功能...
另一个优点是您可以保持方程式的可读性,并且不会因表格(尤其是制表符)而产生混乱&
,这会降低 .tex 文档的可读性。当然,该行应该会自动插入到最后一行之前。
答案1
取消物种
详细说明 Canageek 的答案,是的,您可以将cancel
包与 一起使用mhchem
,但这有点棘手。具体来说,在\ce{}
环境中使用 cancel 将破坏 的自动格式化mhchem
,使您的物种变成斜体。
有两种方法可以解决这个问题:
你可以将你的物种包裹进去
\mathrm
,然后将其包裹进去\cancel{}
(最简单的方法)您可以将方程式分解为多个
\ce{}
环境,并将相关物种放入$\cancel{}$
(\cancel{}
应该在数学模式中使用)。这不是一个好的解决方案,因为它会使您的方程式不连续并弄乱间距。这意味着您需要将每个取消的物种包装在其自己的物种中
\ce{}
,然后将其放入其中\cancel{}
。
每个选项如下所示:
这是代码(请原谅该代码的非 MWE 性质)
\documentclass[a4paper]{article}
\usepackage[version=3]{mhchem}
\usepackage{cmbright}
\usepackage{cancel}
\begin{document}
Standard:
\ce{HCOOH_{(aq)} + H2O_{(l)} <=> H3O^{+}_{(aq)} + HCOO^{-}_{(aq)}}\\
\texttt{$\backslash{}$cancel} inside \texttt{$\backslash{}$ce}:
\ce{\cancel{HCOOH_{(aq)}} + H2O_{(l)} <=> H3O^{+}_{(aq)} + \cancel{HCOO^{-}_{(aq)}}}\\
\texttt{$\backslash{}$mathrm} inside \texttt{$\backslash{}$cancel} inside \texttt{$\backslash{}$ce}:
\ce{\cancel{\mathrm{HCOOH_{(aq)}}} + H2O_{(l)} <=> H3O^{+}_{(aq)} + \cancel{\mathrm{HCOO^{-}_{(aq)}}}}\\
\texttt{$\backslash{}$cancel} outside \texttt{$\backslash{}$ce}:
$\cancel{\ce{HCOOH_{(aq)}}}$ \ce{+ H2O_{(l)} <=> H3O^{+}_{(aq)} +} $\cancel{\ce{HCOO^{-}_{(aq)}}}$
\end{document}
正如你所见,这大大降低了可读性:(
您可以更改取消线的颜色通过\renewcommand{\CancelColor}
,这有点痛苦。
结盟
我不确定你提到的在数学模式中对齐是否意味着你正在使用数学模式来align
手动设置化学方程式,而不是mhchem
,但mhchem
有\cee
环境,它的作用类似于环境,\ce
但允许您将其用作环境&
中的对齐点align
。它看起来相当简单。
综合起来:
使用以下代码:
\documentclass[a4paper]{article}
\usepackage[version=3]{mhchem}
\usepackage{cmbright}
\usepackage{cancel}
\begin{document}
\begin{align*}
\centering
\cee{\cancel{\mathrm{HCOOH_{(aq)}}} + H2O_{(l)} &<=> H3O^{+}_{(aq)} + \cancel{\mathrm{HCOO^{-}_{(aq)}}}}\\
\cee{\cancel{\mathrm{HCOO^{-}_{(aq)}}} + H2O_{(l)} &<=> \cancel{\mathrm{HCOOH_{(aq)}}} + OH^{-}_{(aq)}}\\
\hline{}
\cee{H2O_{(l)} + H2O_{(l)} &<=> H3O^{+} + OH^{-}_{(aq)}}
\end{align*}
\end{document}
将\hline
长度调整到更合理的范围并调整公式之间的间距留给感兴趣的读者作为练习(我不知道,但其他人可能知道。这是一个开始。)
希望这有用。
答案2
我找到了一种实现你想要的方法,由 Clemens Niederberger 提供,使用他的chemmacros
包,cancel
可以在我的化学网。
\documentclass{article}
\usepackage{chemmacros,cancel}
\let\oldcancel\cancel
\renewcommand\cancel[1][black]{%
\def\CancelColor{\color{#1}}%
\oldcancel}
\begin{document}
\begin{align*}
\ch{\cancel[blue]{HCOOH\aq} + H2O\lqd{} &<=> H3O^+\aq{} + \cancel[red]{HCOO^-\aq}} \\
\ch{\cancel[red]{HCOO^-\aq} + H2O\lqd{} &<=> \cancel[blue]{HCOOH\aq} + OH^-\aq}\\[-1ex]
\cline{1-2}
\ch{H2O\lqd{} + H2O\lqd{} &<=> H3O^+\aq{} + OH^-\aq}
\end{align*}
\end{document}
结果如下:
答案3
我不知道化学式本身的加减,但有取消包可能可以提供啊,取消。
答案4
您提到了代码的可读性。您可以重新定义(或激活)单个字符来提供帮助。以下肯定不是最佳的,但重新定义了|
和>
以表示+
和,并\rightarrow
使用数组中的适当列对齐:
\documentclass{article}
\usepackage[version=3]{mhchem}% http://ctan.org/pkg/mhchem
\usepackage{array}% http://ctan.org/pkg/array
\begin{document}
\[
\catcode`\|=\active \newcommand{|}{&+&}
\catcode`\>=\active \renewcommand{>}{&\rightarrow&}
\begin{array}{*{19}{@{\,}c}}
&&&& \ce{10e-} | \ce{16H+} | \ce{2MnO_4-} > \ce{2Mn^2+} | \ce{8H_2O} \\
&&&&&& \ce{5H_2O} | \ce{5H_2SO_3} > \ce{5SO_4^2-} | \ce{20H+} | \ce{10e-} \\ \hline
\ce{10e-} | \ce{16H+} | \ce{2MnO_4-} | \ce{5H_2O} | \ce{5H_2SO_3} >
\ce{2Mn^2+} | \ce{8H_2O} | \ce{5SO_4^2-} | \ce{20H+} | \ce{10e-}
\end{array}
\]
当然,常规取消(通过cancel
包裹)仍然成立,如果需要的话。我遇到的问题,因此将其标记为次优,来自mhchem
包裹主动改变+
和-
(上标),迫使使用|
添加化合物。这需要进一步研究。