chemfig chemname 在方案中的对齐

chemfig chemname 在方案中的对齐

仔细查阅了 chemfig 文档并在这里查找了几个问题后,我很难找到一个解决方案来不同高度分子方案中的排列问题正确对齐它们。它们位于一个框内,该框位于一个图形浮点内,宽度为文本宽度的 80%,并通过 hfills 位于中间。到目前为止,我使用 scheme-scheme 的原因是,对齐主体非常有效,但看起来,chemname 不再正确对齐。您可以在此处找到代码:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{chemfig}

\usepackage{lipsum}% dummy text
\begin{document}

\lipsum[1]

\begin{figure}[!tph]
\hfill{}%
\begin{minipage}[t]{0.9\textwidth}%
\begin{center}
\schemestart
\chemnameinit{\definesubmol{R1}{-R_1}\definesubmol{R2}{-R_2}\definesubmol{R3}{-[,0.5]R_3}\chemfig{([:-18]N*5((!{R1})-(!{R3})=\chemabove{N}{\quad\scriptstyle\oplus}([:342]!{R2})-=-))}}
\definesubmol{R1}{-R_1} \definesubmol{R2}{-R_2} \definesubmol{R3}{-[,0.5]R_3} \chemname{\chemfig{([:-18]N*5((!{R1})-(!{R3})=\chemabove{N}{\quad\scriptstyle\oplus}([:342]!{R2})-=-))}}{Imidazolium}
\arrow{0}
\chemname{\chemfig{[:60]\chemabove{N}{\oplus}*6((([:342]-R_1)([:198]-R_2))------)}}{Piperidinium}
\arrow{0}
\definesubmol{R1}{R_1}
\chemname{\chemfig{[:54]\chemabove{N}{\oplus}*5((([:198]-!{R1})([:342]-R_2))-----)}}{Pyrrolidinium}
\schemestop
\chemnameinit{}
\par\end{center}%
\end{minipage}\hfill{}

\protect\caption{Gängige Kationen ionischer Flüssigkeiten.}


\end{figure}

\end{document}

其他相关但未能帮助我解决问题的问题:

如果有人知道解决方案,我会非常高兴。

更新 13.08.14:使用 MWE 更新。

答案1

这是一个疯狂的想法:使用tabular

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{array,chemfig}

\usepackage{lipsum}% dummy text
\begin{document}

\lipsum[1]

\begin{figure}[htbp]
  \centering
  \begin{tabular}{c@{\qquad}c@{\qquad}c}
    \chemfig{
      [:54]*5(=N(-R_2)(-[1,.3,,,draw=none]\scriptstyle\oplus)-=-N(-R_1)-)
      -[6,.7]R|_3
    }
    &
    \chemfig{
      [:60]\chemabove{N}{\oplus}*6(------)
      (-[:-30]R_2)
      -[:-150]R_1
    }
    &
    \chemfig{
      [:54]\chemabove{N}{\oplus}*5(-----)
      (-[:-30]R_2)
      -[:-150]R_1
    }
    \\ \\
    Imidazolium & Piperidinium & Pyrrolidinium
  \end{tabular}
  \caption{Gängige Kationen ionischer Flüssigkeiten.}
\end{figure}

\lipsum[2]

\end{document}

在此处输入图片描述

答案2

感谢 cgnieder 关于使用表格的建议,我能够得到想要的结果。他的建议很接近,但还没有垂直排列单个分子。我使用 Lyx 表格做到了这一点(并在此处获取了生成的 LaTeX 代码),因此使用 m{} 类型的列可能更容易实现美观的布局,正如 cgnieder 在原始问题下的评论中提到的那样。

但是,期望的结果:期望结果成功生成。以下是(由于 Lyx 可能比较丑陋)代码:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{array,chemfig}

\usepackage{lipsum}% dummy text
\begin{document}

\lipsum[1]
\begin{figure}[!tph]
\noindent \begin{centering}
\begin{tabular*}{1\textwidth}{@{\extracolsep{\fill}}>{\centering}m{0.36\textwidth}>{\centering}m{0.27\textwidth}>{\centering}m{0.27\textwidth}}
\chemfig{
      [:54]*5(=N(-R_2)(-[1,.38,,,draw=none]\oplus)-=-N(-R_1)-)
      -[6,.7]R|_3
    } & \chemfig{
      [:60]\chemabove{N}{\oplus}*6(------)
      (-[:-30]R_2)
      -[:-150]R_1
    } & \chemfig{
      [:54]\chemabove{N}{\oplus}*5(-----)
      (-[:-30]R_2)
      -[:-150]R_1}\tabularnewline
\addlinespace
Imidazolium & Piperidinium & Pyrrolidinium\tabularnewline
\addlinespace
\end{tabular*}
\par\end{centering}

\begin{centering}
\protect\caption{Einige gängige Kationen ionischer Flüssigkeiten.}

\par\end{centering}

\end{figure}
\lipsum[2]

\end{document}

我还要感谢 cgnieder,如果没有他和他的快速反应,这一切都不可能实现。

相关内容