
Рассмотримупаковка(илисорт) который предоставляет макросам два необязательных аргумента. Можно было бы
(i) используйте twoopt
. Код в .sty
-файле легко читается и, следовательно, понятен.
(ii) вручную кодировать макрос. Код выглядит ужасно, но не привязывает пользователя к дополнительному пакету.
Кроме того, иногда для достижения одной и той же цели используется несколько пакетов: ifthen
, xifthen
и ifthenx
.
Как выбрать, какой пакет использовать? В каких случаях мне нужно вручную кодировать? Существуют ли лучшие практики? Обратите внимание, что примеры иллюстрируют общий вопрос.
решение1
Если сомневаетесь, выбирайте стандарт.
Даже если он еще не укоренился (как ifthen
есть), программный уровень перспективного ядра LaTeX3 — expl3
—мощен и очень стабилен. Даже вtexlive-core
Пакет репозитория пакетов Arch Linux (думаю, самый минимальный из минималистичных), включено все ядро L3. Он всегда будет доступен вашим пользователям.
Из опыта решения связанных с этим проблем,неесли вам не придется вручную кодировать что-либо, это станет практически невозможным для поддержки и, как вы говорите, для понимания сути.
Возможно, здесь не хватает условностей, но лучшая условность в любом случае — использовать официальные материалы.
Отсюда: найдите следующее с помощью texdoc
:
expl3
объясняет логикуэкспэриментальныйЛаТекс3синтаксис и вводит компонент «пакеты» (на практике вы просто\usepackage{expl3}
interface3
служит справочным материалом для всейexpl3
библиотеки и интерфейсаxparse
бесценный ресурс для определения команд с более сложным синтаксисом
решение2
Если twoopt
пакет удовлетворяет вашим потребностям, нет ничего плохого в его использовании...
В целом LaTeX — это постоянно развивающаяся система. Пакеты — двигатель этого процесса. Пренебрегая их универсальным использованием или выбирая жесткое кодирование, если бы был подходящий пакет, вы бы отказались от важного свойства системы LaTeX.
Хотя последнее утверждение звучит немного драматично, в нем есть доля правды. Кроме того, часто это остается вопросом выбора и привычек (все мы люди!). Но, если у вас есть возможность получить более читаемый код с помощью использования пакетов,вперед, продолжать. Этот критерий, кстати, является одним из основных вопросов проекта LaTeX3.
Привязка к пакету в файле .sty
или .cls
никак вас не ограничивает. Даже если пакет, который вы использовали в своем собственном коде пакета, в будущем будет объявлен устаревшим из-за того, что новый пакет оказался лучше или по какой-то другой причине, это не значит, что используемая вами функция больше нежизнеспособна. Более того, как разработчик пакетов вы можете поддерживать/обновлять свой пакет в соответствии с текущим состоянием дел. Кроме того, я хотел бы напомнить, что LaTeX2e в настоящее время очень стабилен. Так что «[использование] официальных материалов» (@Sean Allred, см. выше) с этой точки зрения вполне разумно.
И наконец, если три пакета выполняют одну и ту же работу для определенной проблемы, я ссылаюсь на приведенное выше утверждение «все мы люди!»: используйте тот, который вам больше нравится или к которому вы привыкли.