投影机中奇怪的消失的彩色规则

投影机中奇怪的消失的彩色规则

我收到了一份sbooktabs的错误报告,\cmidrule当在里面使用彩色规则beamer(与 一起colortbl)时, s 会消失。该问题可以用以下简单代码来说明,看起来像是beamer颜色设置和之间的交互\leaders。在正常的 Latex 类中,代码没有问题。

我对内部工作原理了解甚少beamer,希望有人能帮忙或给出解决方法。请注意,颜色需要在内部分组booktabs以防止泄漏。

编辑:在一封电子邮件中,Michael Palmer 建议\kern在分组末尾添加一个。这似乎可行,但问题是为什么?

笔记:当使用包的设置线条颜色时,标准表格\cline也会消失。所以这现在也是 David Carlisle 的问题 :-)beamer\arrayrulecolorcolortbl

光束级

\documentclass{beamer}
\newcommand\tfillA[3]{\makebox[#1]{#2\leaders\hrule\hfill#3}}
\newcommand\tfillB[3]{\makebox[#1]{\color{red}#2\leaders\hrule\hfill#3}}
\newcommand\tfillC[3]{\makebox[#1]{#2{\color{red}\leaders\hrule\hfill}#3}}
\newcommand\tfillD[3]{\makebox[#1]{#2{\color{red}\leaders\hrule\hfill\kern0pt}#3}}%<--Edit

\begin{document}
\begin{frame}
    INSIDE BEAMER CLASS\par\smallskip
    \tfillA{2cm}{A}{B}: Works fine without colour\par
    \tfillB{2cm}{A}{B}: Works fine with ungrouped colour\par
    \tfillC{2cm}{A}{B}: Rule disappears with grouped colour\par
    \tfillD{2cm}{A}{B}: Rule reappears with kern at end ?????
\end{frame}
\end{document}

在此处输入图片描述

文章类别

\documentclass{article}
\usepackage{xcolor}
\newcommand\tfillA[3]{\makebox[#1]{#2\leaders\hrule\hfill#3}}
\newcommand\tfillB[3]{\makebox[#1]{\color{red}#2\leaders\hrule\hfill#3}}
\newcommand\tfillC[3]{\makebox[#1]{#2{\color{red}\leaders\hrule\hfill}#3}}

\begin{document}
    INSIDE ARTICLE CLASS\par\smallskip
    \tfillA{2cm}{A}{B}: Works fine without colour\par
    \tfillB{2cm}{A}{B}: Works fine with colour  everywhere\par
    \tfillC{2cm}{A}{B}: Works fine with grouped colour
\end{document}

在此处输入图片描述

答案1

出于某种原因,Beamer 重新定义了 latex 颜色命令\reset@color以执行取消跳过。这通常会删除前面的空白,您可以保存并恢复它,\lastskip但不幸的是\lastkip,虽然\unskip“工作”了\leaders,但\lastskip只保存了胶水组件,因此在经典 tex(或 etex)中不可能记录那里有领导者。

所有 LaTeX\leader命令都有一个尾随的\kern或框来防止这种情况,否则包括\newline类似地执行的几个标准命令\unskip(将破坏等\dotfill) (LaTeX 的定义\dotfill添加了这一点,原始的纯 TeX 没有它)。

因此,虽然 Beamer 这样做有点令人惊讶,但通常情况下,领导者后面跟着未知命令,在结尾处应该插入\kernthere.,这就是为什么问题只影响在领导者之后立即关闭组的版本。有人可能会争辩说(并非毫无道理)这不应该是一个“未知”命令。显然,修补它不这样做很容易,但如果不知道 Beamer 的工作细节以及为什么要更改它,这可能不是最好的选择。\reset@color\aftergroup}\reset@color

相关内容