В expl3.pdf
3.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, где можно было бы ожидать, что код никогда не «двинется дальше», обычно придерживаются «классического» имени.