如何使用 setspace 将侧向表格的行距增加一倍?

如何使用 setspace 将侧向表格的行距增加一倍?

作为上一个问题的后续,如何使用 setspace 将表格行距增加一倍?,我发现该解决方案与rotating包中定义的 sidewaystable 环境不兼容。

我修改了上一个问题答案中的例子来证明:

\documentclass{article}
\usepackage{amsmath}
\usepackage{setspace}
\usepackage{lipsum}
\usepackage{rotating}
\newcommand\Factor{1.9}

\makeatletter
\def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else
   \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner
      \@parmoderr\@floatpenalty\z@
    \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
       \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
       \@tfor \@tempa :=#2\do
                        {\if\@tempa h\advance\@tempcnta \@ne\fi
                         \if\@tempa t\advance\@tempcnta \tw@\fi
                         \if\@tempa b\advance\@tempcnta 4\relax\fi
                         \if\@tempa p\advance\@tempcnta 8\relax\fi
         }\global\count\@currbox\@tempcnta}\@fltovf\fi
    \global\setbox\@currbox\vbox\bgroup
    \def\baselinestretch{\Factor}\@normalsize
    \boxmaxdepth\z@
    \hsize\columnwidth \@parboxrestore}
\makeatother

\begin{document}
\begin{spacing}{\Factor}
\lipsum[1]
\begin{sidewaystable}[ht]
\begin{tabular}{rlll}
  \hline
 & col1 & col2 & col3 \\ 
  \hline
  50 & 19 & 7 & 26 \\ 
  100 & 10 & 20 & 29 \\ 
  150 & 1 & 7 & 2 \\ 
  200 & 0 & 0 & 10 \\ 
\hline
\end{tabular}
\end{sidewaystable}
\end{spacing}
\end{document}

运行pdflatex此文档会返回错误:

! Extra }, or forgotten \endgroup.
\color@endbox ->\egroup 

l.40 \end{sidewaystable}

我怎样才能解决这个问题?

答案1

我不明白。你想双倍行距吗?为什么要写这么多代码?简单地\doublespacing\begin{sidewaystable}[ht]

\documentclass{article}
\usepackage{amsmath}
\usepackage{setspace}
\usepackage{lipsum}
\usepackage{rotating}
%
\begin{document}
\lipsum[1]
\begin{sidewaystable}[ht]
\doublespacing %%% <--- here
\begin{tabular}{rlll}
  \hline
 & col1 & col2 & col3 \\
  \hline
  50 & 19 & 7 & 26 \\
  100 & 10 & 20 & 29 \\
  150 & 1 & 7 & 2 \\
  200 & 0 & 0 & 10 \\
\hline
\end{tabular}
\end{sidewaystable}
\end{document}

在此处输入图片描述

更新:

如果您想从序言中控制事物,您可以使用etoolbox以下包:

\documentclass{article}
\usepackage{amsmath}
\usepackage{setspace}
\usepackage{lipsum}
\usepackage{rotating}
\usepackage{etoolbox}   %%% <----here
\AtBeginEnvironment{tabular}{\doublespacing}    %%% <---- and here
%
\begin{document}
\lipsum[1]
\begin{sidewaystable}[ht]
\begin{tabular}{rlll}
  \hline
 & col1 & col2 & col3 \\
  \hline
  50 & 19 & 7 & 26 \\
  100 & 10 & 20 & 29 \\
  150 & 1 & 7 & 2 \\
  200 & 0 & 0 & 10 \\
\hline
\end{tabular}
\end{sidewaystable}
\end{document}

在环境之前tabular,我们已经发出了命令\doublespacing。但这种方法会影响所有tabular环境。

答案2

我同意另一个答案,重新定义是没有必要的,尤其是重新定义像浮点处理这样的核心 LaTeX 功能似乎非常勇敢。

但是你得到错误,因为你有

   \global\setbox\@currbox\vbox\bgroup

上个千年的 LaTeX2.09 就是这样的。LaTeX2e 的\@xfloatends定义

  \global \setbox\@currbox
    \color@vbox
      \normalcolor
      \vbox \bgroup
        \hsize\columnwidth
        \@parboxrestore
        \@floatboxreset
}

这意味着,如果您color加载了该包,那么您的重新定义的组数就会错误,并且不是颜色安全的,因此您会得到:

! Extra }, or forgotten \endgroup.
\color@endbox ->\egroup 

相关内容