使用多受众隐藏整个表格行

使用多受众隐藏整个表格行

我正在使用该multiaudience包创建两个不同版本的 LaTeX 文档。我的文档包含一个tabular带有表格行的环境,我想让该行仅对一个受众可见。有办法吗?

下面我使用的两种方法(我暂时注释掉的行)都会导致错误,因为&\\包含在要显示给观众的文本中。我当然可以使用showtoshownto来将文本仅包含在单个表格单元格中,但这仍然会创建一个表格行(即,任何当前观众看不到的文本都会导致表格中出现空白行)。

\documentclass{article}

\usepackage{multiaudience}
\SetNewAudience{a1}
\SetNewAudience{a2}
\DefCurrentAudience{a2}

\begin{document}

\begin{tabular}{ll}
Thing1 & Thing2\\
\hline
This thing & To be seen by everyone\\
%\showto{a1}{That thing & To be seen by a1 only\\}
%\begin{shownto}{a2}Other thing & To be seen by a2 only\\\end{shownto}
Final thing & Everyone can see this too
\end{tabular}

\end{document}

有没有

  1. 用某种方式解决这个问题multiaudience
  2. 有一个替代的包可以帮我做这个吗?

答案1

您可以通过将所有这些逻辑移到一个\omit...\cr块中来实现这一点。下面就是这样做的。\tableshowto无论您是否使用,它总是在后面开始一个新行\\。环境变体仍然不适用于此。

在我忘记之前,它必须用作单元格中的第一个元素,但它会为其参数及其后的内容开始一个新行,因此它实际上只能在完整的行上工作。

\documentclass{article}

\usepackage{multiaudience}
\SetNewAudience{a1}
\SetNewAudience{a2}
%\DefCurrentAudience{a2}
\DefCurrentAudience{a1}

\makeatletter
\long\def\@afterfi#1\fi{\fi#1}
\newcommand\tableshowto[2]
  {%
    \omit
    \@MULTAU@shownfalse
    \@MULTAU@includetrue
    \setkeys{MULTAU}{#1}%
    \if@MULTAU@shown
      \@afterfi{\cr#2\crcr\omit}%
    \fi
    \@MULTAU@showntrue
    \@MULTAU@includetrue
    \cr
  }
\makeatother

\begin{document}

\begin{tabular}{ll}
Thing1 & Thing2\\
\hline
This thing & To be seen by everyone\\
\tableshowto{a1}{That thing & To be seen by a1 only\\}
Final thing & Everyone can see this too
\end{tabular}

\end{document}

输出a1

a1

输出a2

a2

相关内容