如何在表格(chemfig)中排列化学结构?

如何在表格(chemfig)中排列化学结构?

我有一张包含三行化学结构的表格。第二行的结构与第一行和第三行不对齐。我尝试使用 来\vspace将结构向下移动,但没有用。如何更改表格中结构的位置?任何帮助都将不胜感激!

我的示例代码:

\documentclass[12pt,doublespacing,letterpaper]{report}
\usepackage{etex}
\usepackage[usenames,dvipsnames]{color}
\usepackage{lscape} 
\usepackage{morehelp}
\usepackage{setspace}
\usepackage{easytable}
\usepackage{chemfig}
\usepackage{longtable} 
\usepackage{graphicx}
\usepackage{dcolumn}
\usepackage{bm}
\usepackage{geometry}
\usepackage{multirow}
\usepackage{caption}

\begin{document}

\setatomsep{2em}
\setbondoffset{1pt}
\setdoublesep{4pt}
\setbondstyle{line width=0.8 pt}


\renewcommand{\printatom}[1]{\fontsize{14pt}{14pt}\selectfont{\ensuremath{\mathrm{#1}}}}

\begin{table}[t]
\centering \caption{Test} 
\begin{footnotesize}
\begin{tabular}{>{\centering\arraybackslash}p{20pt}>     {\centering\arraybackslash}p{160pt}
>{\centering\arraybackslash}p{60pt}>{\centering\arraybackslash}p{160pt}>  {\centering\arraybackslash}p{20pt}}
\hline\hline
\\[-5pt] %controls the spacing between line and text
\vfill Entry & \vfill RBF$_3$K  &\vfill Ar-Br &\vfill R-R & Yield (\%)\\
\\[-5pt]\hline
\\[-7pt]
 1 & \chemfig[][scale=0.6]{[:30]--[::-60]--[::-60]-[:30]-[:-30]~[:0]-[:0]BF_3K} & \chemfig[][scale=0.6]{[:30]NC-*6(-=-(-[,1.3]Br)=-=)} & \chemfig[][scale=0.6]{[:30]--[::-60]--[::-60]-[:30]-[:-30]~[:0]-[:0]*6(-=-(-CN)=-=-)}&75\\
 2 & \chemfig[][scale=0.6]{[:30]--[::-60]--[::-60]-[:30]-[:-30]~[:0]-[:0]BF_3K} & \chemfig[][scale=0.6]{[:30]Cl-*6(-=-(-[,1.3]Br)=-=)} & \chemfig[][scale=0.6]{[:30]--[::-60]--[::-60]-[:30]-[:-30]~[:0]-[:0]*6(-=-(-Cl)=-=-)}&65\\      
\hline\hline
&\\
\end{tabular}
\end{footnotesize}
\\
\end{table}

\end{document}

答案1

我通常不做广告tabu包(参见这篇文章的原因) 但在这种情况下它非常方便。如果您使用其类型列,它会默认将表格水平缩放到文本宽度X。这些列有一个可选参数,用于指定一列与另一列的比例:X[1]X[2]意味着第二列的宽度是第一列的两倍。在可选参数中,您还可以指定您想要的传统列类型。我曾经X[<num>c,m]让所有单元格垂直和水平居中。

我没有缩放每个分子,而是重新定义了环境\printatom内的 atom-sep 和命令table。由于这是在环境内,因此重新定义的效果将保持局部。

在下面的代码中,我删除了所有不必要的包。相反,我引入了mhchem(我也可以使用chemformula) 用于内联化学式,以及booktabs更好的表格规则:

\documentclass[12pt,letterpaper]{report}
\usepackage{chemfig}
\usepackage[version=4]{mhchem}
\usepackage{tabu}
\usepackage{booktabs}

\setatomsep{2em}
\setbondoffset{1pt}
\setdoublesep{4pt}
\setbondstyle{line width=0.8 pt}
\renewcommand{\printatom}[1]{\fontsize{14pt}{14pt}\selectfont{\ensuremath{\mathrm{#1}}}}

\begin{document}

\begin{table}[t]
  \centering
  % locally change the molecule layout
  \setatomsep{.8em}
  % the following is necessary because you have defined \printatom with
  % a fixed fontsize:
  \renewcommand*\printatom[1]{\scriptsize\ensuremath{\mathrm{#1}}}
  \caption{Test} 
  \begin{tabu}{X[3c,m]X[8c,m]X[5,cm]X[9c,m]X[3c,m]}
    \toprule\rowfont\bfseries
      Entry & \ce{RBF3K}  & \ce{Ar-Br} & \ce{R-R} & Yield (\%) \\
    \midrule
      1 & \chemfig{[:30]--[::-60]--[::-60]-[:30]-[:-30]~[:0]-[:0]BF_3K}
      & \chemfig{[:30]NC-*6(-=-(-[,1.3]Br)=-=)}
      & \chemfig{[:30]--[::-60]--[::-60]-[:30]-[:-30]~[:0]-[:0]*6(-=-(-CN)=-=-)}
      & 75 \\
      2 & \chemfig{[:30]--[::-60]--[::-60]-[:30]-[:-30]~[:0]-[:0]BF_3K}
      & \chemfig{[:30]Cl-*6(-=-(-[,1.3]Br)=-=)}
      & \chemfig{[:30]--[::-60]--[::-60]-[:30]-[:-30]~[:0]-[:0]*6(-=-(-Cl)=-=-)}
      & 65 \\
    \bottomrule
  \end{tabu}
\end{table}

\end{document}

在此处输入图片描述

相关内容