Зачем использовать пакет для верстки единиц?

Зачем использовать пакет для верстки единиц?

Я видел много постов о различных пакетах для наборных единиц и их относительных сильных и слабых сторонах. Большинство постов, похоже, сходятся во мнении, что пакет siunitxявляется самым современным пакетом, но я так и не понял преимуществ использования пакета вообще. В чем преимущество написания чего-то вроде:

\SI{10}{\kilo\gram\meter\per\second\squared}

когда можно было просто написать:

kg m s$^-2$

Или для чисел, в чем разница между

\num{10}

и

10

решение1

Я пришел к этому вопросу, думая "да! Почему?", но прочитав имеющиеся комментарии и ответы, я уже изменил свое мнение и теперь склоняюсь к другому. Что я понял, думая об этом и о моем небольшом взаимодействии с этим пакетом, так это то, что он предоставляет почти такую ​​же услугув пределахLaTeX, поскольку LaTeX (или даже просто TeX) обеспечивает письмо в целом. Чтобы понять этот момент, рассмотрим альтернативы в передаче некоторой математики в письменной форме через компьютер:

  1. Напишите это фонетически, так сказать. Слова, конечно, есть слова, но греческие буквы прописаны или, возможно, нарисованы в каком-то специальном ASCII-арте, а более сложные формулы составлены вместе неопределенным образом, который может быть понятен или неясен из контекста.

  2. Напишите его в TeX, в котором греческие буквы записываются в макросах, более сложные формулы скомпонованы вместе каким-то, возможно, ужасным образом... а затем результат «компилируется» в документ, делая все таким, каким вы его задумали, так что ничего страшного, если ваш исходный код окажется немного более схематичным, чем вам бы хотелось.

Пакет siunitxделает именно это, но вместо математических формул он использует единицы в стиле СИ. Конечно, можно было бы написать те же символы, которые обычно появляются в таких единицах, как kgили s$^{-1}$, но это может очень легко пойти не так визуально в зависимости от того, появляется ли единица в математическом режиме или нет (только представьте, как это влияет на последнее!), или если несколько единиц будут нагромождены вместе или (весьма обоснованное замечание egreg) разбиты поперек строки. Тогда вы можете решить, что вместо s$^{-1}$вам действительно нужна /sединица герц, что потребует глобального изменения нотации.

Это все виды проблем, которые решаются в TeX путем определения макросов, содержащих ваши предпочтительные стили для \kilogramи \hertzт. д. siunitxПросто организует весь проект определения этих макросов и их взаимосвязей друг с другом, а также предоставляет множество эстетических опций поверх этого.

По сути, все сводится к вопросу: «Зачем вообще кому-то программировать свой документ?», на что ответом является: «Так проще писать хорошо структурированные документы».

решение2

Позвольте мне дать ответ в форме практического анекдота:

Когда я писал свою докторскую диссертацию по химии, каждая глава была опубликована или должна была быть вскоре отправлена ​​в рецензируемый журнал. Каждая глава была написана в разное время в течение нескольких лет, и, конечно, в каждом журнале были свои стандарты относительно того, должен ли быть пробел между числом и единицей, должны ли обратные единицы быть указаны в виде дробей или показателей степени и т. д. Кроме того, когда я просто печатал единицы, иногда я добавлял пробел, а иногда нет, и в итоге мне пришлось много вычитывать, чтобы уловить это, пока я не наткнулся на siunit, а затем на siunitx.

Превратив единицы измерения в макросы, я лишился одной проблемы с форматированием, о которой мне приходилось беспокоиться, и когда я брал тело главы, мне просто нужно было написать новый заголовок, используя пакет стилей журнала и правильные siunitxпараметры (или, если журнал не поддерживал его, жестко закодировать макросы в преамбуле), и все единицы измерения и числа автоматически правильно форматировались. Когда мне затем нужно было вставить их в мою диссертацию, мне просто нужно было вставить \input{}тело текста после \chapter{}тега, и все мои главы были отформатированы в соответствии со стандартами моей университетской диссертации без суеты и беспорядка. Тем временем мои друзья, работавшие с Word, тратили недели, а иногда имесяцыничего не делая, кроме переформатирования и вычитки, чтобы все было единообразно (большая часть этого времени ушла на уравнения, рисунки и нумерацию ссылок, о которых я никогда не задумывался).

На самом деле, файл с моими определениями макросов оказался почти таким же длинным, как и мои главы, поскольку каждый раз, когда у меня был математический символ (надстрочный, подстрочный, жирный и т. д.), я создавал макрос с описательным именем, чтобы его было легче вычитывать, но если по какой-то причине мне нужно было изменить символ или переменную, мне приходилось менять его только один раз. Та же идея с единицами измерения. Если все является макросом, то если вам нужно что-то изменить, вам нужно изменить его только один раз, и это распространится по всему документу, не беспокоясь.

решение3

Как и во всех других компонентах TeX, LaTeX, и друзей, идея состоит в том, чтобы отделить содержание от формы

Мы хотим указать глобальные изменения в преамбуле и не беспокоиться о деталях в документе.

Похожие вопросы:

  • Почему бы нам не написать \textbf{1. Introduction}вместо \section{Introduction}?
  • Почему мы используем окружение , enumerateкогда можно просто написать (a), и т. д.?(b)(c)
  • Почему мы решили сделать нашу графику LaTeX(используяtikzиpstricksнапример), когда мы могли бы сделать их внешними и просто включить их?
  • Почему мы используемbiblatex (и другие библиографические пакеты) для организации наших ссылок — разве мы не можем просто набрать их в правильном порядке самостоятельно?

решение4

Преимущество использования пакета в том, что вы получаете набор чисел и единиц в единообразном типографском виде. Иногда вам нужно использовать spatium ( \,) между числом и единицей, иногда нет. Пакетsiunitxзнает об этом и делает это автоматически правильно для вас.

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