在 chemfig 中,将苯与其中心对齐

在 chemfig 中,将苯与其中心对齐

再次回来,带着更多问题。这次,我需要对齐涉及苯的反应方案。这是我目前拥有的:

\diagram[1.0]{
    \schemestart[0, 1.5, thick]
    \chemfig{**6(------)}
    \arrow{0}[,0]       % used for alignment
    \hspace{5mm} + \hspace{5mm}
    \chemfig{E}
    \arrow
    \arrow{0}[,0]
    \chemfig{**[60,-240]6(----(-[:135]H)(-[:45]E)--)(-[:30,,,,draw=none]+)}
    \schemestop
}

\diagram只是设置了一些间距和居中,并没有真正影响这一点。使用此示例,我得到了以下输出:

相反,我想要的是让第一个苯环、、、+箭头E和第二个苯环的中心排成一行。我试过使用不可见的箭头等,上面的示例让我将前 4 个苯环(1、、+E箭头)对齐。

谢谢。


编辑

我遇到了更多麻烦,而且由于它高度相关,我认为创建一个全新的问题并不好。

现在我有这个代码:

\diagram[1.0]{
    \schemestart[0, 1.5, thick]
    \chemfig{**[60,-240]6(----(-[:135]H)(-[:45]E)--)(-[:30,,,,draw=none]+)}
    \arrow{0}[,0]
    \hspace{5mm} + \hspace{5mm}
    \chemfig{@{el}E}
    \arrow
    \schemestop
    \schemestart[0, 1.5, thick]
    \chemfig{**6(----(-[:90]E)--)}
    \schemestop
}

我得到了这个输出:

遗憾的是,现在什么都没有对齐。我采用了 Guho 的解决方案,但我无法让 unbonpetit 的解决方案产生令人满意的结果。

另外,我注意到我实际上无法找到让 chemfig 使用原子中心作为锚点的方法,即使我从中心开始,并使用幻影原子和键,如下所示:

\chemfig{\phantom{+}-[:90,,,,draw=none]([:270]**6((-[:90]E)------))}

它仍然以某种方式坚持错位事物(原子似乎固定在中心和顶部边缘的中间某处)

无论如何,感谢您一直以来的帮助。这两个答案都适用于基本情况,所以就是这样。

答案1

另一种方法:

\documentclass{article}
\usepackage{chemfig}
\begin{document}
\schemestart[0,1.5,thick]
    \chemfig{**6(------)}
    \arrow{0}[,0]
    \+
    \chemfig{E}
    \arrow(--.base west)
    \chemfig[yshift=\the\dimexpr-1.5em\relax]{**[60,-240]6(----(-[:135]H)(-[:45]E)--)(-[:30,,,,draw=none]+)}
\schemestop
\end{document}

在此处输入图片描述

编辑以下是正确排列分子的 3 种解决方案:

\documentclass{article}
\usepackage{chemfig}
\begin{document}
Solution 1: invisible bond starting from middle of left bond (this midpoint becomes the baseline point)

\schemestart[0, 1.5, thick]
    \chemfig{(-[:90,-0.5,,,draw=none]){}**[60,-240]6([:30]----(-[:135]H)(-[:45]E)--)(-[:30,,,,draw=none]+)}
    \arrow(.base east--){0}[,0]
    \+{2em,2em,}
    \chemfig{@{el}E}
    \arrow(--.base west)
    \chemfig{(-[:90,-0.5,,,draw=none]){}**6([:30]----(-[:90]E)--)}
\schemestop
\medbreak

Solution 2: yshift the baseline anchor

\schemestart[0, 1.5, thick]
    \chemfig[baseline={([yshift=1.5em]current bounding box.base)}]{**[60,-240]6(----(-[:135]H)(-[:45]E)--)(-[:30,,,,draw=none]+)}
    \arrow(.base east--){0}[,0]
    \+{2em,2em,}
    \chemfig{@{el}E}
    \arrow(--.base west)
    \chemfig[baseline={([yshift=1.5em]current bounding box.base)}]{**6(----(-[:90]E)--)}
\schemestop
\medbreak

Solution 3: yshift molecule

\schemestart[0, 1.5, thick]
    \chemfig[yshift=-1.5em]{**[60,-240]6(----(-[:135]H)(-[:45]E)--)(-[:30,,,,draw=none]+)}
    \arrow(.base east--){0}[,0]
    \+{2em,2em,}
    \chemfig{@{el}E}
    \arrow(--.base west)
    \chemfig[yshift=-1.5em]{**6(----(-[:90]E)--)}
\schemestop
\end{document}

在此处输入图片描述

答案2

一种简单的方法是拆分方案。由于两个环大小相同且从同一个起始原子绘制,因此中心将对齐。我还使用了以下命令\+

\documentclass{article}
\usepackage{chemfig}

\begin{document}
    \schemestart[0, 1.5, thick]
    \chemfig{**6(------)}
    \arrow{0}[,0]% used for alignment
    \+{5mm,5mm}
    \chemfig{E}
    \arrow
    \schemestop
    \schemestart[0, 1.5, thick]
    \chemfig{**[60,-240]6(----(-[:135]H)(-[:45]E)--)(-[:30,,,,draw=none]+)}
    \schemestop
\end{document}

中心对齐

请注意,第一个+不与第二个+或箭头垂直对齐(+直接使用 ,就像在 MWE 中一样)会产生相同的结果。这可以用 的第三个参数来伪造\+,即垂直移位(0.4 毫米对我来说看起来相当不错):

\documentclass{article}
\usepackage{chemfig}

\begin{document}
    \schemestart[0, 1.5, thick]
    \chemfig{**6(------)}
    \arrow{0}[,0]% used for alignment
    \+{5mm,5mm,0.4mm}
    \chemfig{E}
    \arrow
    \schemestop
    \schemestart[0, 1.5, thick]
    \chemfig{**[60,-240]6(----(-[:135]H)(-[:45]E)--)(-[:30,,,,draw=none]+)}
    \schemestop
\end{document}

对齐两者 +

相关内容