Excel
我在演示文稿中插入了一个表格,最初来自Beamer
。表格不适合框架,我过去常常resizebox
让它适合。这导致表格不可读。有解决方案吗?这是 MWE:
\documentclass[10pt,aspectratio=169]{beamer}
\usetheme{Boadilla}
\usecolortheme{dove}
\setbeamertemplate{frametitle}[default][center]
\setbeamertemplate{itemize items}[default]
\setbeamertemplate{enumerate items}[default]
\setbeamertemplate{itemize/enumerate subbody begin}{\tiny}
\usepackage{color}
\usepackage[export]{adjustbox}
\usepackage{mdwmath}
\usepackage{mdwtab}
\usepackage{tabularx,booktabs}
\newcolumntype{C}{>{\centering\arraybackslash}X} % centered version of "X" type
\setlength{\extrarowheight}{1pt}
\usepackage{subfig}
\usepackage{multicol}
\usepackage{array}
\begin{document}
\begin{frame}
\begin{table}[htbp]
\centering
\caption{Resistivity of samples prepared from $ 0.5\:mg/ml $ CNT solution}
\resizebox{\textwidth}{!}{
\begin{tabularx}{1.8\textwidth}{ccccccccrrr}
& & \multicolumn{3}{c}{Resistivity on cellulose filter} & \multicolumn{3}{c}{Resistivity after transferring to glass substrate} & \multicolumn{3}{c}{Resistivity after baking the transferred samples} \\
Volume of solution used for sample (ml) & Thickness (micron) & Resistance & Sheet Resistance & Resistivity (OHM cm) & Resistance & Sheet Resistance & Resistivity (OHM cm) & \multicolumn{1}{c}{Resistance} & \multicolumn{1}{c}{Sheet Resistance} & \multicolumn{1}{c}{Resistivity (OHM cm)} \\
10 & 3.015 & 16.32860687 & 73.96858911 & 0.02230153 & 27.89651855 & 126.371229 & 0.038100926 & & & \\
20 & 6.8375 & 7.248137422 & 32.83406252 & 0.02245029 & 13.77673335 & 62.40860206 & 0.042671882 & & & \\
\end{tabularx}%
}
\label{conductivitymeasure}%
\end{table}%
\end{frame}
\end{document}
答案1
您的代码需要很多更正和其他调整,以便排版出一个好看的表格。以下是一些建议,没有特别的顺序。
\documentclass
请以而不是开始您的代码\begin{document}
,并且请确保加载所有软件包前正在执行\begin{document}
。(我刚刚注意到用户@Miyase 已同时对您的代码应用了所需的更正。)文档
beamer
类没有“浮点数”;table
和figure
开销被忽略。因此,我将删除\begin{table}
和\end{table}
指令,并\caption{...}
用替换\frametitle{...}
。永远不要
\resizebox
在表格材料上使用,除非您愿意承担使材料几乎无法阅读的真正风险。使用环境的全部目的
tabularx
是允许在某些(甚至可能是所有)列中实现自动化。但是您的代码随后使用了c
和r
列类型,而这些类型不允许自动换行。既然您X
在文档的序言中设置了列类型的变体,为什么不使用它呢?必须在所有 11 列的标题单元格中允许换行。另外,请确保不要
\multicolumn{1}{c}{...}
在任何标题上使用,因为这样做会再次抑制自动换行。甚至不要考虑显示具有 8 和 9 位小数的数字,特别是如果有 9 或 10 个这样的数据列。我建议您加载包
siunitx
并使用其S
列类型将自动舍入到 2 或 3 位小数;请参阅下面的代码以了解此想法的实现。请使用软件包的
\unit
和宏来排版科学单位和数量/单位组合。并且请使用 来输入“微米” 。\qty
siunitx
\unit{\micro\meter}
完成这些调整后,您将获得以下“外观”:
\documentclass[10pt,aspectratio=169]{beamer}
\usetheme{Boadilla}
\usecolortheme{dove}
\setbeamertemplate{frametitle}[default][center]
%% new:
\usepackage{tabularx,booktabs,ragged2e}
\newcommand\mytab[1]{\smash{\begin{tabular}[t]{@{}C@{}} #1 \end{tabular}}}
\newcolumntype{C}{>{\Centering\hspace{0pt}}X} % centered version of "X" type
\newcommand\mC[1]{\multicolumn{1}{C}{#1}} % handy shortcut macro
\newcolumntype{Z}{>{\hsize=\dimexpr3\hsize+4\tabcolsep\relax}C}
\setlength{\extrarowheight}{1pt}
\usepackage{siunitx} % for S col. type and \unit and \qty macros
\begin{document}
\begin{frame}
\sisetup{per-mode=symbol,round-mode=places}
\frametitle{Resistivity of samples prepared from
\qty{0.5}{\milli\gram\per\milli\liter} CNT solution}
\setlength\tabcolsep{2.5pt} % default: 6pt
\begin{tabularx}{1\textwidth}{@{} C S[table-format=3.2,round-precision=2]
*{3}{S[table-format=3.2,round-precision=2]
S[table-format=3.2,round-precision=2]
S[table-format=1.3,round-precision=3]} @{}}
\toprule
\mytab{Volume used for sample (\unit{\milli\liter})}
& {\mytab{Thickness (\unit{\micro\meter})}}
& \multicolumn{3}{Z}{%
Resistivity on cellulose filter}
& \multicolumn{3}{Z}{%
Resistivity after transferring to glass substrate}
& \multicolumn{3}{Z@{}}{%
Resistivity after baking the transferred samples}\\
\cmidrule(lr){3-5} \cmidrule(lr){6-8} \cmidrule(l){9-11}
&
& \mC{Resistance} & \mC{Sheet Resistance} & \mC{Resistivity (\unit{\ohm\centi\meter})}
& \mC{Resistance} & \mC{Sheet Resistance} & \mC{Resistivity (\unit{\ohm\centi\meter})}
& \mC{Resistance} & \mC{Sheet Resistance} &
\multicolumn{1}{C@{}}{Resistivity (\unit{\ohm\centi\meter})} \\
\midrule
10 & 3.015 & 16.32860687 & 73.96858911 & 0.02230153 & 27.89651855 & 126.371229 & 0.038100926 & & & \\
20 & 6.8375 & 7.248137422 & 32.83406252 & 0.02245029 & 13.77673335 & 62.40860206 & 0.042671882 & & & \\
\bottomrule
\end{tabularx}
\end{frame}
\end{document}
答案2
重新设计你的桌子。
至少前两列标题太宽了。
从列标题中删除 (OHM cm) 并将其添加到标题中的电阻率之后。 \caption{Resistivity (OHM cm) of samples ...
以及您可能想到的其他事项。
答案3
人们擅长浏览一列相关数字并观察其变化。考虑到这一点,我建议堆叠电阻/薄层电阻/电阻率列(并根据需要重复体积和厚度)。这使得表格足够小,但我们可以做得更好。
使用 siunitx 来获取微米和欧姆(不必担心单位的间距)。将单位添加到所有列标题。删除表格环境,并将标题移动到框架标题(这意味着您不能使用标签引用“表格 1”,但无论如何您不应该在演示文稿中引用“表格 1”)。添加一些\cmidrule
以帮助堆叠表格。使用 makecell 堆叠两个单词列标题以使其更窄。
演示的目的是什么?22 个数字中,18 个有 8-10 个有效数字,这是没有意义的。没有人能够理解这一点。我建议将数字四舍五入到最接近的百分位(或两个有效数字,以较大者为准)。这也为使用 siunitx 列类型提供了足够的空间S
,该列类型将数字与小数点对齐(但您需要保护列标题)。如果在堆叠的表格之间留出一点空间,则变为:
\documentclass[10pt,aspectratio=169]{beamer}
\usecolortheme{dove}
\setbeamertemplate{frametitle}[default][center]
\usepackage{booktabs}
\usepackage{multicol}
\usepackage{makecell}
\usepackage{siunitx}
\begin{document}
\begin{frame}
\frametitle{Resistivity of samples prepared from \SI[per-mode=fraction]{0.5}{\mg\per\ml} CNT solution}
\centering
\begin{tabular}{cSSSS}
\makecell{Volume\\(\si{\ml})} & {\makecell{Thickness\\(\si{\micro\m})}} & {\makecell{Resistance\\(\si{\ohm})}} & {\makecell{Sheet\\Resistance (\si{\ohm})}} & {\makecell{Resistivity\\(\si{\ohm\cm})}} \\\\
& & \multicolumn{3}{c}{On cellulose filter} \\\cmidrule{3-5}
10 & 3.02 & 16.33 & 73.97 & 0.022 \\
20 & 6.84 & 7.25 & 32.83 & 0.022 \\\\
& & \multicolumn{3}{c}{After transferring to glass substrate} \\\cmidrule{3-5}
10 & 3.02 & 27.90 & 126.37 & 0.038 \\
20 & 6.84 & 13.78 & 62.41 & 0.043 \\\\
& & \multicolumn{3}{c}{After baking the transferred samples} \\\cmidrule{3-5}
% these are repeated to give something to display
10 & 3.02 & 27.90 & 126.37 & 0.038 \\
20 & 6.84 & 13.78 & 62.41 & 0.043
\end{tabular}
\end{frame}
\end{document}