Спецификатор ":D" в LaTeX3

Спецификатор ":D" в LaTeX3

В expl3.pdf3.2.5 я заметил, что :Dспецификатор означает «НЕ ИСПОЛЬЗОВАТЬ» и «программисты вне команды ядра не должны использовать эти функции». Но я также обнаружил, что эти функции появляются в некоторых пакетах, написанных на LaTeX3.

Так может ли кто-нибудь сказать мне, смогу ли я их все-таки использовать?

решение1

Спецификатор :Dиспользуется исключительно для примитивов (все примитивы являются начальными \<engine>_<name>:D), и идеи не должны появляться за пределами основного кода команды. (В широком смысле это означает за пределами, l3kernelно есть некоторые особые случаи, когда мы ожидаем, :Dчто имена будут использоваться в ограниченных местах в другом коде уровня ядра.)

Однако очевидно, что есть области, которые команда еще не охватил expl3или где взаимодействие с LaTeX2e требует прямого доступа к примитивам.временныйработая над модулями, где в настоящее время нет официальных интерфейсов, команда рекомендует, чтобы код, учитывающий такие случаи, был сформулирован следующим образом:

\cs_new_eq:NN \__module_name:w \engine_name:D % Probably :w ...

и последнее название используется в таких местах: это оставляет только одну строку для корректировки, поскольку команда решает такие проблемы. Также, вероятно, стоит поднять их с командой либо напрямую, либо в LaTeX-L. Например, я недавно добавил поддержку \pdffilesizeи подобные экспериментальные дополнения l3fileв результате таких запросов.

При работе с LaTeX2e, где можно было бы ожидать, что код никогда не «двинется дальше», обычно придерживаются «классического» имени.

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