仔细查阅了 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,如果没有他和他的快速反应,这一切都不可能实现。