
Моя общая цель — построить таблицу внутри savebox, чтобы я мог легко заполнить страницу несколькими копиями. Кто-то рекомендовал использовать tabularx, который работал хорошо, пока я не попробовал использовать пакет colortbl для раскрашивания некоторых строк.
Обратите внимание, что в приведенном ниже MWE...
- Таблица 1: tabularx и colortbl прекрасно работают вместе за пределами области сохранения.
- Таблица 2: tabularx отлично работает при сохранении в папке сохранения.
- Таблица 3: Попытка сохранить таблицу 1 в ящике сохранения приводит к ошибке «Неопределенная управляющая последовательность».
Особо следует отметить, что выбор опции "s" (пропустить) на консоли приводит к скомпилированному документу, в котором все три таблицы отображаются правильно. Поэтому, хотя я могу набрать документ, это заставляет меня задуматься, есть ли "исправление" этой проблемы.
МВЭ:
\documentclass{article}
\usepackage{colortbl}
\usepackage{tabularx}
\usepackage{xcolor}
\newsavebox{\tabularxInBox}
\sbox{\tabularxInBox}{
\begin{tabularx}{\textwidth}{cX}
Col 1 & Col 2\\
\hline
Row 1& No Colored Background\\
Row 2& No Colored Background\\
\end{tabularx}
}
\newsavebox{\tabularxAndColortblInBox}
\sbox{\tabularxAndColortblInBox}{
\begin{tabularx}{\textwidth}{cX}
Col 1 & Col 2\\
\hline
Row 1& No Colored Background\\
\rowcolor{lightgray}
Row 2& Colored Background\\
\end{tabularx}
}
\begin{document}
No conflict with tabularx and colortbl normally:\\
\begin{tabularx}{\textwidth}{cX}
Col 1 & Col 2\\
\hline
Row 1& No Colored Background\\
\rowcolor{lightgray}
Row 2& Colored Background\\
\end{tabularx}
\vskip 1cm
No conflict with tabularx and sbox:\\
\usebox{\tabularxInBox}
\vskip 1cm
However, using both tabularx and colortble inside an \sbox throws an error:\\
\usebox{\tabularxAndColortblInBox}
\end{document}
решение1
Набор текста не полностью настроен до \begin{document}
. Иногда работает сохранение простого текста в sbox в преамбуле, но не здесь:
\documentclass{article}
\usepackage{colortbl}
\usepackage{tabularx}
\usepackage{xcolor}
\newsavebox{\tabularxInBox}
\newsavebox{\tabularxAndColortblInBox}
\begin{document}
\sbox{\tabularxInBox}{%%%dont forget eol
\begin{tabularx}{\textwidth}{cX}
Col 1 & Col 2\\
\hline
Row 1& No Colored Background\\
Row 2& No Colored Background\\
\end{tabularx}%%%dont forget eol
}
\sbox{\tabularxAndColortblInBox}{%%%dont forget eol
\begin{tabularx}{\textwidth}{cX}
Col 1 & Col 2\\
\hline
Row 1& No Colored Background\\
\rowcolor{lightgray}
Row 2& Colored Background\\
\end{tabularx}%%%dont forget eol
}
No conflict with tabularx and colortbl normally:\\
\begin{tabularx}{\textwidth}{cX}
Col 1 & Col 2\\
\hline
Row 1& No Colored Background\\
\rowcolor{lightgray}
Row 2& Colored Background\\
\end{tabularx}
\vskip 1cm
No conflict with tabularx and sbox:\\
\usebox{\tabularxInBox}
\vskip 1cm
However, using both tabularx and colortble inside an \verb|\sbox| throws an error:\\
\usebox{\tabularxAndColortblInBox}
\end{document}