使用 chemfig 向分子添加非结合基团

使用 chemfig 向分子添加非结合基团

我想获得以下结果:

在此处输入图片描述

我正在使用 Overleaf 并陷入以下 MWE:

\documentclass{article}
\usepackage{chemfig}
\begin{document}
\chemfig{
-[:+30]  % C1
-[::-60] % C2
(-[::-60] -[::+45] NH_2)
-[::+45, 3]
}
\end{document}

我认为 Overleaf 没有加载最新版本的chemfig软件包,因为我尝试对括号进行编码但没有成功(而且我没有在 MWE 中显示相应的代码片段)。是否可以通过其他方式获取括号?NH2 上方漂浮的 *HCl 怎么样?

答案1

修改后的答案:

因此请求是不要使用\polymerdelim。我想出了一个解决方案,感谢海科·奥伯迪克. 方法是使用 TiZ 矩阵只有一个单元格(即chemfig)。方括号需要向内移动,因此n需要手动调整下标的位置。

输出

\documentclass{article}
\usepackage{chemfig, tikz}
\usetikzlibrary{matrix}

\newsavebox\ourFormula
\sbox\ourFormula{
\chemfig[atom sep = 1.5em]{
    -[@{opening,0.75}:30]                       % Left opening bracket
    -[:+30]                                     % C1
    -[::-60]                                    % C2
    (
      -[::-60] -[::+45] NH_2                    % NH_2
     \raisebox{2em}{\hspace{-2em}$\bullet$ HCI} % HCI
    )
    -[::+45, 3] 
    -[@{closing,0.25}:+15]                      % Right closing bracket
  }
}
\begin{document}
  \begin{tikzpicture}[
    every left delimiter/.style={xshift=20pt},
    every right delimiter/.style={xshift=-20pt}
  ]
    \node (matrix) [left delimiter = {[}, right delimiter = {]}] {
      \usebox\ourFormula\\
    };
    \node [ xshift=48pt, yshift=-25pt] {$n$};
  \end{tikzpicture}
\end{document}

原始答案: 使用宏可以轻松获得括号\polymerdelim(它还负责处理右下标n)。现在,挑战是让•HCI上面的NH_2。我这样做的方法是使用\raisebox{vertical distance}{text}。这使得•HCI相对于位于右上角NH_2。解决方案是使用\hspace{negative distance}将其拉到左侧并使其垂直对齐。

如果你想更改代码,请确保编译它两次

输出

\documentclass{article}
\usepackage{chemfig}
\begin{document}
  \chemfig[atom sep = 1.5em]{
    -[@{opening,0.75}:30]                       % Left opening bracket
    -[:+30]                                     % C1
    -[::-60]                                    % C2
    (
      -[::-60] -[::+45] NH_2                    % NH_2
     \raisebox{2em}{\hspace{-2em}$\bullet$ HCI} % HCI
    )
    -[::+45, 3] 
    -[@{closing,0.25}:+15]                      % Right closing bracket
  }
  % Now, we can put everything inside the brackets and have n as our indice.
  \polymerdelim[height=30pt, delimiters={[]}, indice=n]{opening}{closing}
\end{document}

相关内容