以下面的例子为例
\documentclass{article}
\usepackage{chemmacros}
\begin{document}
\begin{reactions*}
NH3 + H2O &<=> NH4+ + OH-\\
Fe^3+ + 3 OH- &-> Fe(OH)3\\
2 Fe(OH)3 &->[heat] Fe2O3 + 3 H2O
\end{reactions*}
\begin{reactions*}
G &-> H + I \\
J + K &-> L
\end{reactions*}
\end{document}
第一个反应方案有两种不同的箭头类型,并且仅在箭头的起始处对齐。理想情况下,我希望 LHS (r) 对齐(原样),箭头 (c) 对齐,RHS (l) 对齐,就像前两行和第二个反应方案中那样。
我尝试&
在箭头后放置一个来对齐产品侧面,但无济于事。除了将其放置在align
或tabular
环境中并将每个段封装在内之外,\ch{ }
还有其他选择吗?
附言:我曾经使用过\documentclass{article}
或minimal
课程standalone
,但有问题chemmacros
,但那是另一天的事了……
答案1
我可以提出其他建议吗?
我不会对对齐方式进行调整,而是尝试让所有箭头的长度都相同。两个极端版本看起来就像我的 MWE 中的那样。当然,您可以尝试在它们之间找到一个令人满意的中间值。
% arara: pdflatex
\documentclass{article}
\usepackage{chemmacros}
\begin{document}
\begin{reactions*}
NH3 + H2O &<=> NH4+ + OH-\\
Fe^3+ + 3 OH- &-> Fe(OH)3\\
2 Fe(OH)3 &->[\makebox[0pt]{heat}] Fe2O3 + 3 H2O
\end{reactions*}
\begin{reactions*}
NH3 + H2O &<=>[\phantom{heat}] NH4+ + OH-\\
Fe^3+ + 3 OH- &->[\phantom{heat}] Fe(OH)3\\
2 Fe(OH)3 &->[heat] Fe2O3 + 3 H2O
\end{reactions*}
\end{document}
如果您想要按照帖子中所写的方式对齐术语,您可以在环境中执行此操作array
。您可以定义自定义列类型,也可以直接将它们写入\begin{array}{...}
声明中:
% arara: pdflatex
\documentclass{article}
\usepackage{chemmacros}
\usepackage{collcell}
\newcolumntype{R}{>{\collectcell\ch}r<{\endcollectcell}}
\newcolumntype{C}{@{}>{\collectcell\ch}c<{\endcollectcell}@{}}
\newcolumntype{L}{>{\collectcell\ch}l<{\endcollectcell}}
\begin{document}
\[
\begin{array}{R C L}
NH3 + H2O &<=> &NH4+ + OH-\\[\jot] % or any other measure. The screen shot below is showing [0pt]
Fe^3+ + 3 OH- &-> &Fe(OH)3\\[\jot]
2 Fe(OH)3 &->[heat] &Fe2O3 + 3 H2O
\end{array}
\]
\end{document}