如何在预览表格时修剪左右两侧的空白?

如何在预览表格时修剪左右两侧的空白?

下表的左右两侧有多余的空白。但您看不到它们,因为该图形已转换为启用了 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

隐式更改从longtabletabular

在简单的情况下,如果包含的使用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}

相关内容