我正在使用该multiaudience
包创建两个不同版本的 LaTeX 文档。我的文档包含一个tabular
带有表格行的环境,我想让该行仅对一个受众可见。有办法吗?
下面我使用的两种方法(我暂时注释掉的行)都会导致错误,因为&
和\\
包含在要显示给观众的文本中。我当然可以使用showto
或shownto
来将文本仅包含在单个表格单元格中,但这仍然会创建一个表格行(即,任何当前观众看不到的文本都会导致表格中出现空白行)。
\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}
有没有
- 用某种方式解决这个问题
multiaudience
- 有一个替代的包可以帮我做这个吗?
答案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
:
输出a2
: