下表的左右两侧有多余的空白。但您看不到它们,因为该图形已转换为启用了 Alpha 通道的 PNG。
如何在预览表格时修剪左右两侧的空白?
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs,longtable,array}
\usepackage[active,tightpage]{preview}
\PreviewBorder=0pt
\PreviewEnvironment{longtable}
\begin{document}
\begin{longtable}{*3{m{\dimexpr0.5\linewidth/3\relax}}}
\toprule
Unit & Macro & Symbol\\
\midrule
ampere & \verb|\ampere| & \si{\ampere}\\
candela & \verb|\candela|& \si{\candela}\\
kelvin & \verb|\kelvin|& \si{\kelvin}\\
kilogram & \verb|\kilogram|& \si{\kilogram}\\
meter & \verb|\meter|& \si{\meter}\\
mole & \verb|\mole|& \si{\mole}\\
second & \verb|\second|& \si{\second}\\
\bottomrule
\end{longtable}
\end{document}
请注意,我不是在谈论可以通过 s 删除的空格@{}
。如果您编译我的 MWE,就可以理解不需要的空格。
答案1
隐式更改从longtable
到tabular
在简单的情况下,如果包含的使用longtable
不超过tabular
允许的范围,longtable
则可以将环境重新定义为以下tabular
环境:
\ifPreview
\let\longtable\tabular
\let\endlongtable\endtabular
\fi
\PreviewEnvironment{longtable}
无论如何,longtable
作为预览元素时, 不会跨页面中断。 的其他功能也longtable
将无法使用,例如\endfoot
。
调整\hsize
环境longtable
设置宽度为 的块\hsize
,左侧填充为\LTleft
,右侧填充为\LTright
。文件中会记住列的宽度.aux
。后面的数据可用于计算表格的宽度。然后\hsize
将 设置为总宽度。\linewidth
可以保持不变,在 中不使用longtable
。
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs,longtable,array}
\usepackage[active,tightpage]{preview}
\PreviewBorder=0pt
\makeatletter
\ifPreview
\newcommand*{\SetLongtableWidth}{%
\begingroup
\edef\@ltnum{\@roman\numexpr\value{LT@tables}+1}%
\@ifundefined{LT@\@ltnum}{%
\gdef\@ltwidth{0pt}%
}{%
\def\LT@entry##1##2{+##2}%
\xdef\@ltwidth{\the\dimexpr 0pt\csname LT@\@ltnum\endcsname}%
}%
\endgroup
\ifdim\@ltwidth>\z@
\hsize=\@ltwidth\relax
\fi
}%
\newcommand{\org@longtable}{}%
\let\org@longtable\longtable
\def\longtable{\SetLongtableWidth\org@longtable}%
\fi
\makeatother
\PreviewEnvironment{longtable}
\begin{document}
\begin{longtable}{*3{m{\dimexpr0.5\linewidth/3\relax}}}
\toprule
Unit & Macro & Symbol\\
\midrule
ampere & \verb|\ampere| & \si{\ampere}\\
candela & \verb|\candela|& \si{\candela}\\
kelvin & \verb|\kelvin|& \si{\kelvin}\\
kilogram & \verb|\kilogram|& \si{\kilogram}\\
meter & \verb|\meter|& \si{\meter}\\
mole & \verb|\mole|& \si{\mole}\\
second & \verb|\second|& \si{\second}\\
\bottomrule
\end{longtable}
\end{document}
答案2
您可以在表格的每一侧添加@{}(跳过标题):
\begin{document}
\begin{longtable}{@{}*3{m{\dimexpr0.5\linewidth/3\relax}}@{}}
\toprule
etc.
\midrule
etc
\bottomrule
\end{longtable}
\end{document}