Почему & имеет особое значение за пределами табличной среды?

Почему & имеет особое значение за пределами табличной среды?

Рассмотрим следующие м(не-)мы:

\documentclass{standalone}
\begin{document}
Foo & Bar
\end{document}

Сборка завершится ошибкой

! Misplaced alignment tab character &.

&в то время как при удалении символа из кода будет создан совершенно правильный PDF-файл .

Даже простой TeX ведет себя так и

Foo & Bar
\bye

выдает ту же ошибку.

Я видел, &как это используется только в табличной и массивной среде, никогда вне ее. Почему так?

Нельзя ли определить, например, \tabularчто \endtabular-то &особенное только внутри среды и просто обычный персонаж за ее пределами?

Почему &выход за пределы табличной и массивной среды должен приводить к поломке документа?

Перефразируя вопрос: что такое символ табуляции выравнивания и где мы его обычно размещаем?

решение1

Предположим, что формат или пользователь не установил глобальное значение catcode для & (или любого другого символа) равным 4.

Каковы будут последствия, если предположить, что вы все равно захотите иметь локально такой символ (и не использовать команды типа \nc«новый столбец» все время)?

  1. Каждыйтабличная среда должна была бы убедиться, что установила символ в качестве табуляции выравнивания, и они должны были бы договориться, какой из них использовать. Это потребовало бы большого количества исправлений. Это, естественно, не аргумент, почему это не было сделано при написании формата.
  2. Невозможно использовать этот символ, если табличный элемент используется в аргументе какой-либо команды. Например, вы столкнетесь с проблемами при использовании табличных элементов в нижних и верхних колонтитулах, в адресах писем, в списках авторов, в кадрах бимера. Естественно, можно определить команду как замену, но пользователи должны понимать, когда эта команда нужна.
  3. Было бы довольно сложно отключить локально вкладку выравнивания. Например, в настоящее время вы можете легко ввести таблицу с большим количеством &, как здесь:

    \documentclass{article}
    
    \begin{document}
    \begingroup
    \catcode`\&=12
    \catcode`!=4
    \begin{tabular}{ll}
    a & b ! c & d
    \end{tabular}
    \endgroup    
    \end{document}
    

    Но если табличный сбрасывает catcode &, то он больше не будет работать. Так что вам понадобятся некоторые хуки, чтобы разрешить такие манипуляции — и снова в каждой табличной среде.

В целом многое станет намного сложнее для авторов пакетов и для пользователей. Легче научиться печатать \&.

решение2

Ты спрашиваешь:

Почему & имеет особое значение за пределами табличной среды?

Я думаю, что вопрос поставлен не совсем корректно. Я бы сказал, что &это нечто особенное.повсюду, а не только внешняя tabularсреда. Персонаж &имееткод категории 4-- "выравнивание табуляции" -- во всех форматах TeX и LaTeX, с которыми я когда-либо сталкивался. Эта настройка catcode позволяет использовать его в качестве символа выравнивания табуляции не только в tabular-подобных средах (например, tabular*, tabularx, longtable, и т. д.), но и arrayсредах, устаревшей eqnarrayсреде, некоторых средах отображения математических вычислений пакета amsmath, IEEEeqnarrayсреде пакета IEEEtrantoolsи, вероятно, довольно многих дополнительных средах.

Преимущество назначения catcode 4 &по умолчанию заключается в том, что все разработчики пакетов могут (и, честно говоря,должен) пишут свой код, предполагая, что &у него catcode 4. Без этого значения по умолчанию некоторые разработчики пакетов выбирали бы &в качестве символа табуляции выравнивания, тогда как другие могли бы выбрать @или кто знает что еще. Такой результат был бы явно хуже для большинства пользователей, поскольку им пришлось бы запоминать, какой символ или символы служат функцией табуляции выравнивания в какой среде.

И наоборот, если кто-то не хочет &быть особенным и не хочет изменять свой catcode, его нужно ввести как \&.

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