实现特定输出格式的替代方案

实现特定输出格式的替代方案

考虑以下 MWE

\documentclass[border=10 pt]{standalone}
\usepackage{mathtools,setspace}

\begin{document}
$\displaystyle
{\setstretch{1.5}
\begin{array}{ccccccccccccccccccccccc} 
^{12} \mathrm{C}&+&^{1} \mathrm{H} &\longrightarrow& ^{13}\mathrm{N}&+&\gamma\\
&&&&^{13} \mathrm{N}& \longrightarrow&^{13} \mathrm{C}&+&e^{+}&+&\nu\\
&&&&&&^{13} \mathrm{C}&+&^{\mathrm{l}} \mathrm{H}& \longrightarrow&^{14} \mathrm{N}&+&\gamma\\
&&&&&&&&&&^{14} \mathrm{N}&+&^{\mathrm{l}} \mathrm{H}& \longrightarrow&^{15} \mathrm{O}&+&\gamma\\
&&&&&&&&&&&&&&^{15} \mathrm{O}& \longrightarrow&^{15} \mathrm{N}&+&e^{+}&+&\nu\\
&&&&&&&&&&&&&&&&^{15} \mathrm{N}&+&^{1} \mathrm{H} &\longrightarrow&^{12} \mathrm{C}&+&^{4} \mathrm{He}
\end{array}}
$ 
\end{document}

输出 在此处输入图片描述 输出几乎就是我想要的,但我得到它的方式对我来说似乎相当笨拙...有没有更好的方法来获得相同的输出?这里唯一相关的部分是每个反应中的相同元素需要位于彼此下方...其他部分的间距不必与图片中相同。

答案1

这是否不那么笨重是一个见仁见智的问题...它消除了所有制&表符,但需要多个\stackunders 和一些支撑。

外观略有不同,但正如 OP 所要求的,“每个反应的相同元素都位于彼此下方”。虽然没有其他适用的对齐方式,但可以观察到任何给定行上的间距都是“正确的”。

\documentclass[border=10 pt]{standalone}
\usepackage{mathtools,setspace,stackengine}
\begin{document}
\renewcommand\stackalignment{l}
\renewcommand\stacktype{L}
\setstackgap{L}{1.4\baselineskip}
\stackMath
$\displaystyle
^{12}\mathrm{C}+^{1}\mathrm{H}\longrightarrow             \stackunder{^{13}\mathrm{N}+\gamma}{
 ^{13}\mathrm{N}\longrightarrow                        \stackunder{^{13}\mathrm{C}+e^{+}+\nu}{
  ^{13}\mathrm{C}+^{\mathrm{l}}\mathrm{H}\longrightarrow  \stackunder{^{14}\mathrm{N}+\gamma}{
   ^{14}\mathrm{N}+^{\mathrm{l}}\mathrm{H}\longrightarrow \stackunder{^{15}\mathrm{O}+\gamma}{
    ^{15}\mathrm{O}\longrightarrow                     \stackunder{^{15}\mathrm{N}+e^{+}+\nu}{
     ^{15}\mathrm{N}+^{1}\mathrm{H}\longrightarrow           ^{12}\mathrm{C}+^{4}\mathrm{He}
}}}}}
$
\end{document}

在此处输入图片描述

答案2

够简单吗?

\documentclass{report}
\usepackage{mhchem,parskip}
\def\a{\phantom{\ce{^12C + ^1H ->}}}
\def\b{\phantom{\ce{^13N ->}}}
\begin{document}
\ce{^12C + ^1H -> ^13N + \gamma}\par
\a\ce{^13N -> ^13C + $e^+$ + \nu}\par
\a\b\ce{^13C + ^1H -> ^14N + \gamma}
\end{document}

姆韦

答案3

我建议像我一样对齐您的条目(使用Tab),以便于阅读和修改(如果需要)。我曾经\newcommand创建过一种方法让您输入一行的数据,并且数组中的每个单元格都被封装在内\mathrm{...}。此外,我将c数组中的 23 更改为 *{23}{c}

输出

\documentclass[border=10 pt]{standalone}
\usepackage{mathtools,setspace}
% Usage:
% \data{operand-1}{operator-1}{operand-2}{operator-2}{operand-3}{operator-3}{operand-4}
% Simple example:
% \data{a}{+}{b}{-}{c}{*}{d}
\newcommand{\data}[7]{%
    \ensuremath{%
        \mathrm{#1} & \mathrm{#2} & \mathrm{#3} & \mathrm{#4} & \mathrm{#5} & \mathrm{#6} & \mathrm{#7}
    }%
}%
\begin{document}
$\displaystyle
{\setstretch{1.5}
\begin{array}{*{23}{c}} 
                    \data{^{12} C}{+}               {^{1} H}    {\longrightarrow}   {^{13} N}   {+}{\gamma} \\
&&&&                \data{^{13} N}{\longrightarrow} {^{13} C}   {+}                 {e^{+}}     {+}{\nu}    \\
&&&&&&              \data{^{13} C}{+}               {^{1} H}    {\longrightarrow}   {^{14} N}   {+}{\gamma} \\
&&&&&&&&&&          \data{^{14} N}{+}               {^{1} H}    {\longrightarrow}   {^{15} O}   {+}{\gamma} \\
&&&&&&&&&&&&&&      \data{^{15} O}{\longrightarrow} {^{15} N}   {+}                 {e^{+}}     {+}{\nu}    \\
&&&&&&&&&&&&&&&&    \data{^{15} N}{+}               {^{1} H}    {\longrightarrow}   {^{12} C}   {+}{^{4} He}\\
\end{array}}
$
\end{document}

相关内容