Tabularx и colortbl конфликтуют внутри savebox

Tabularx и colortbl конфликтуют внутри savebox

Моя общая цель — построить таблицу внутри savebox, чтобы я мог легко заполнить страницу несколькими копиями. Кто-то рекомендовал использовать tabularx, который работал хорошо, пока я не попробовал использовать пакет colortbl для раскрашивания некоторых строк.

Обратите внимание, что в приведенном ниже MWE...

  1. Таблица 1: tabularx и colortbl прекрасно работают вместе за пределами области сохранения.
  2. Таблица 2: tabularx отлично работает при сохранении в папке сохранения.
  3. Таблица 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}

Связанный контент