ConTeXt: предварительно отформатированный текст внутри таблиц

ConTeXt: предварительно отформатированный текст внутри таблиц

Я хочу вставить предварительно отформатированный текст в таблицу. Я пытался сделать это с помощью , \startlinesно команда не показывает никакого эффекта в таблицах. Это возможно с помощью , \breakно это не настоящее решение.

Как вставить предварительно отформатированный текст в таблицы?

МВЭ:

\starttext

\startlines
multi
lines
work
\stoplines

\bTABLE
  \bTR
    \bTD
    \startlines
multi
lines
work
    \stoplines
    \eTD
    \bTD
multi\break
lines\break
work
    \eTD
  \eTR
\eTABLE

\stoptext

решение1

Проблема в natural tablesтом, что каждая ячейка сохраняет содержимое до того, как linesсреда сможет увидеть текст в виде отдельных строк.

Вы можете обойти это, поместив текст для linesсреды в buffer. Когда вы загружаете содержимое буфера в таблицу, текст остается в отдельных строках.

\starttext

\startbuffer[lines]
multi
lines
work
\stopbuffer

\bTABLE
    \bTR
        \bTD
            \startlines
            \getbuffer[lines]
            \stoplines
        \eTD
    \eTR
\eTABLE

\stoptext

Если у вас всего несколько строк текста, вы можете пропустить окружение linesи использовать \\команду, чтобы отметить конец каждой текстовой строки в ячейках таблицы.

\starttext

\bTABLE
    \bTR
        \bTD
            multi\\
            lines\\
            work
        \eTD
    \eTR
\eTABLE

\stoptext

Другая возможность — заменить ее natural tablesна xtableсреду, которая может справиться linesбез проблем, поскольку она использует другой метод расчета размеров таблицы.

\starttext

\startxtable
    \startxrow
        \startxcell
            \startlines
            multi
            lines
            work
            \stoplines
        \stopxcell
    \stopxrow
\stopxtable

\stoptext

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