如何排版化学反应方程式?我想要一个长“=”

如何排版化学反应方程式?我想要一个长“=”

我是 LaTeX 新手。我搜索了ctan.org,但没有找到我想要的。我想排版一个化学反应方程式。这个=标记似乎太短了。我需要一个长的。

我尝试添加一个选项2cm来获得更长的时间=但是失败了。

原始代码如下:

\documentclass{beamer}
\begin{document}
\begin{frame}
   $H_{2}O =[2cm] H_{2}\uparrow+O_{2}\uparrow$
\end{frame}
\end{document}

输出截图如下:

截屏

我觉得字体不太好看。你能给我一些建议吗?例如,有什么字体适合排版化学反应方程式?

答案1

@Joseph 已经提到了确实具有化学计量方程的chemformula净反应“箭头”的包:=

\documentclass{article}
\usepackage{chemformula}
\begin{document}
\ch{H2O == H2 ^ + 1/2 O2 ^}
\end{document}

在此处输入图片描述

然而,它是不可扩展的,因为它实际上将放置=在箭头所在位置的中心。

\documentclass{article}
\usepackage{chemformula}
\begin{document}
\ch[arrow-min-length=2cm]{H2O == H2 ^ + 1/2 O2 ^}
\end{document}

在此处输入图片描述

chemformula允许您定义自己的箭头类型或重新定义现有的箭头类型:

\documentclass{article}
\usepackage{chemformula}
\RenewChemArrow{==}
  {
    \draw ([yshift=.15ex]cf_arrow_start) -- ([yshift=.15ex]cf_arrow_end) ;
    \draw ([yshift=-.15ex]cf_arrow_start) -- ([yshift=-.15ex]cf_arrow_end) ;
  }

\begin{document}
\ch[arrow-min-length=2cm]{H2O == H2 ^ + 1/2 O2 ^}
\end{document}

在此处输入图片描述


根据评论进行编辑

对于chemformula< 3.6b 版本,您可以arrow-min-length按如下方式添加选项。但是,最好进行更新。

\documentclass{article}
\usepackage{chemformula}

\ExplSyntaxOn
% ---------------------------------------------------------------------------
% define a key `arrow-min-length' that sets a minimum length for chemformula's
% arrows. in the minimum length is less than two times the offset it is ignored.
% If an arrow must be longer because the label is longer the longer length is
% used.
%
% new dimension variable:
\dim_new:N \l__chemformula_arrow_minimum_length_dim

% redefine \__chemformula_determine_arrow_length:NN to obey the new minimum
% length:
\cs_set_protected:Npn \__chemformula_determine_arrow_length:NN #1#2
  {
    \box_set_eq:NN \l__chemformula_tmpa_box #1
    \dim_set:Nn \l__chemformula_tmpa_dim { \box_wd:N \l__chemformula_tmpa_box }
    \box_set_eq:NN \l__chemformula_tmpa_box #2
    \dim_set:Nn \l__chemformula_tmpb_dim { \box_wd:N \l__chemformula_tmpa_box }
    \box_clear:N \l__chemformula_tmpa_box
    \dim_compare:nTF { \l__chemformula_tmpa_dim >= \l__chemformula_tmpb_dim }
      { \dim_set_eq:NN \l__chemformula_arrow_length_dim \l__chemformula_tmpa_dim }
      { \dim_set_eq:NN \l__chemformula_arrow_length_dim \l__chemformula_tmpb_dim }
    \dim_add:Nn \l__chemformula_arrow_length_dim
      { 2\l__chemformula_arrow_offset_dim }
    \dim_compare:nF
      { \l__chemformula_arrow_length_dim > \l__chemformula_arrow_minimum_length_dim }
      {
        \dim_set_eq:NN
          \l__chemformula_arrow_length_dim
          \l__chemformula_arrow_minimum_length_dim
      }
    \dim_set:Nn \l__chemformula_arrow_shortage_dim
      {
        (
          \l__chemformula_arrow_length_dim
          -
          \l__chemformula_arrow_length_dim *
          \dim_ratio:nn { \l__chemformula_arrow_ratio_tl pt } { 1pt }
        ) * 1/2
      }
  }

% define a key to set the minimum length:
\keys_define:nn { chemmacros / chemformula }
  { arrow-min-length .dim_set:N = \l__chemformula_arrow_minimum_length_dim }
\ExplSyntaxOff

\RenewChemArrow{==}
  {
    \draw ([yshift=.15ex]cf_arrow_start) -- ([yshift=.15ex]cf_arrow_end) ;
    \draw ([yshift=-.15ex]cf_arrow_start) -- ([yshift=-.15ex]cf_arrow_end) ;
  }

\begin{document}

\ch[arrow-min-length=2cm]{H2O ==[a][b] H2 ^ + 1/2 O2 ^}

\end{document}

答案2

我将使用该mhchem包(按照 ChrisS 的建议)来格式化化学公式:

\documentclass{beamer}

\usepackage{mhchem}

\begin{document}
\begin{frame}
\ce{H2O -> H2 ^ + 1/2 O2 ^}

min. 2 cm long arrow:

\ce{H2O ->[\hspace*{2cm}] H2 ^ + 1/2 O2 ^}
\end{frame}
\end{document}

请注意,使用此包会自动将化学元素排版为直立。此外,我使用反应箭头来表示化学过程,而不是等号=。等号保留用于表示双键。

可以通过分别在箭头上方或下方插入文本或空格来修改反应箭头的长度。

答案3

正如 hakaze 所说,mhchem它做得很好。还有一个chemformula包,它使用非常相似的输入语法,但它是更大的化学支持包的一部分,具有许多功能:

\documentclass{beamer}

\usepackage{chemmacros}

\begin{document}
\begin{frame}
\ch{H2O -> H2 ^ + 1/2 O2 ^}

min. 2 cm long arrow:

\ch{H2O ->[\hspace*{2cm}] H2 ^ + 1/2 O2 ^}
\end{frame}
\end{document}

相关内容