Переопределяет ли LaTeX [некоторые] примитивы TeX?

Переопределяет ли LaTeX [некоторые] примитивы TeX?

Я прочитал в "В чем разница между TeX и LaTeX?" что LaTeX представляет собой набор макросов (расширение), построенных поверх TeX. Предположительно, примитивы TeX должны вести себя в LaTeX так же, как они ведут себя в TeX. Однако, похоже, это не всегда так. В "Как обрабатывается \char в математическом режиме?", объясняется, почему \charведет себя в текстовом режиме иначе, чем в математическом. Но это только в TeX. В LaTeX, однако, \charведет себя одинаково в текстовом и математическом режимах, как это видно из следующего примера:

\documentclass{article}  
  \begin{document}
    In text mode, we obtain \char"5. In math mode, we also obtain $\char"5$.
  \end{document}

В TeX результат другой:

In text mode, we obtain \char"5. In math mode, we obtain $\char"5$.
\bye

Кажется, что некоторые примитивы TeX (по крайней мере один: \char) переопределены в LaTeX. Я хотел бы узнать, должны ли примитивы TeX переопределяться в LaTeX. Если да, то почему? Существуют ли другие примитивы TeX, которые переопределены в LaTeX? Разве TeX и LaTeX не должны выдавать одинаковый результат на таком простом фрагменте кода (как в примере)?

решение1

LaTeX переопределяет примитивы \input, \end, \-, \/, \underlineи, в некоторых контекстах, \par. Он не переопределяет \char, но использует другие математические коды.

В простом TeX мы видим

\mathcode`\^^E="023A % \lnot

но LaTeX не присваивает математический код ^^E(ASCII 5), поэтому значение остается таким же, как и изначально, то есть 5.

Когда TeX обрабатывает \char<number>в математическом режиме, он использует математический код символа, как если бы символ был введен напрямую. Таким образом, в простом TeX вы получаете символ "3Aв семействе 2 ( \lnot); в LaTeX вы получаете символ "5в семействе 0.

Переопределенные примитивы

  • \inputпереопределено, чтобы разрешить \input{<filename>};
  • \endпереопределяется, чтобы обозначить конец сред;
  • \-и \/переопределены по техническим причинам;
  • \underlineпереопределен для использования также в текстовом режиме.

Что касается \parпереопределений, то они необходимы для сред, подобных спискам.

Почему обычный TeX присваивает математический код ASCII 5?

Потому что Кнут использовал расширенные наборы символов, а его клавиатура позволяла напрямую вводить ¬ и другие символы. Поэтому он посчитал удобным задать математические коды для расширенного набора символов.

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