LaTeX. Пакет siunitx
LaTeX. Пакет siunitx
Содержание
1 Общая информация
- Пакет
siunitxпредназначен для типографски правильного и согласованного набора физических величин (чисел с единицами измерения) в документах LaTeX. - Он автоматизирует форматирование в соответствии с правилами Международной системы единиц (СИ), что избавляет от необходимости вручную следить за пробелами, шрифтами и разделителями.
- Репозиторий: https://github.com/josephwright/siunitx
- CTAN: https://ctan.org/pkg/siunitx
2 Подключение и базовая настройка
- Подключите пакет в преамбуле документа:
\usepackage{siunitx}
В версии 3 в пакете
siunitxизменились основные команды:- Старый синтаксис (v2):
\SI{число}{единица}и\si{единица}. - Новый синтаксис (v3):
\qty{число}{единица}и\unit{единица}.
- Старый синтаксис (v2):
Глобальные настройки форматирования для всего документа задаются командой
\sisetupв преамбуле.Например, для русскоязычных текстов часто требуется запятая в качестве десятичного разделителя:
\sisetup{
locale = DE, % или output-decimal-marker = {,}
}
- Опция
locale = DEавтоматически настроит формат под немецкий язык (и многие другие европейские), используя запятую как десятичный разделитель и точку для отделения групп разрядов.
3 Основные команды
Пакет предоставляет три базовых команды для повседневной работы.
\num{⟨число⟩}— для форматирования только чисел:\num{12345.67890} % Результат: 12 345,678 9 (при настройках с locale = DE) \num{1.34e-12} % Результат: 1,34 × 10⁻¹²Команда автоматически расставляет пробелы между группами разрядов, обрабатывает научную нотацию и заменяет десятичную точку на запятую, если это настроено.
\unit{⟨единица⟩}— для форматирования только единиц измерения.\unit{\kilogram\metre\per\second} % Результат: кг·м/с (символы могут отличаться) \unit{kg.m/s^2} % Результат: кг·м/с² (текстовый вариант)Единицы можно вводить как с помощью специальных макросов (
\kilogram,\metre), так и простым текстом.Пакет автоматически сделает шрифт прямым (не курсивным) и расставит корректные шпации.
Для произведения единиц используется точка (
.), для деления —\perили символ/.\qty{⟨число⟩}{⟨единица⟩}— основная команда для вывода величины (число + единица).Она объединяет действие
\numи\unit.\qty{9.81}{\metre\per\second\squared} % Результат: 9,81 м/с² \qty{100}{\kilo\metre\per\hour} % Результат: 100 км/ч
4 Специализированные команды
Для более сложных случаев предусмотрены отдельные команды.
Углы (градусы, минуты, секунды):
\ang{47.99} % Результат: 47,99° \ang{47;59;43.373} % Результат: 47°59'43.373"Списки величин:
\qtylist{10;20;30}{\milli\metre} % Результат: 10 мм, 20 мм и 30 мм (зависит от языка) \numlist{10;20;30} % Результат: 10, 20 и 30Диапазоны значений:
\qtyrange{10}{100}{\metre} % Результат: 10 м–100 м (или "10 м до 100 м" в зависимости от настроек) \numrange{5}{15} % Результат: 5–15Произведение величин:
\qtyproduct{2x3x4}{\centi\metre} % Результат: 2 см × 3 см × 4 смКоманды для комплексных чисел:
5 Работа с таблицами
- Одна из возможностей
siunitx— выравнивание чисел в таблицах по десятичному разделителю. - Для этого используется специальный тип колонки
S.
\begin{tabular}{S S}
{Скорость (м/с)} & {Время (с)} \\
\midrule
1.23 & 45.6 \\
0.012 & 789.1 \\
123 & 0.001 \\
\end{tabular}
- числа в обеих колонках будут выровнены так, чтобы десятичные разделители (точки или запятые) находились друг под другом.
- Текст в заголовках колонок нужно заключать в фигурные скобки
{}, чтобы он не пытался выровняться как число.
6 Совместная работа пакета siunitx и окружения tabularray
- Можно использовать совместно с пакетом tabularray (см. LaTeX. Пакет tabularray)
6.1 Подключение
Для совместной работы необходимо подключить
tabularrayи явно загрузить его библиотекуsiunitx.Это делается командой
\UseTblrLibrary{siunitx}.Пакет
siunitxбудет загружен автоматически.Для передачи
siunitxглобальных опций, команда\PassOptionsToPackageдолжна идти до загрузки библиотеки.
\documentclass{article}
% Если нужны глобальные опции для siunitx, указываем их до \UseTblrLibrary
\PassOptionsToPackage{locale=DE}{siunitx}
\usepackage{tabularray}
\UseTblrLibrary{siunitx} % Эта команда загрузит siunitx с указанными выше опциями
\begin{document}
% Далее можно использовать команды siunitx (\qty, \num) и таблицы tblr с колонкой S.
\end{document}
6.2 Использование колонки S в tabularray
- Основная сила
siunitxв таблицах — это возможность выравнивать числа по десятичному разделителю с помощью колонки типаS. - В
tabularrayэта колонка становится доступна после подключения библиотеки. - В аргументе
colspecможно использоватьSтак же, как и в обычных таблицах LaTeX.
\begin{tblr}{ colspec = { l S } }
Элемент & {Значение} \\ % Заголовок нужно брать в {}, чтобы он не выравнивался как число
A & 123.456 \\
B & 2.34 \\
C & 5678.9 \\
\end{tblr}
6.3 Варианты настройки и совместные возможности
- Благодаря встроенной поддержке, вы можете использовать практически все возможности
siunitxвнутриtabularray.
6.3.1 Передача опций в колонку S
- Можно задавать специфичные для колонки опции
siunitxпрямо вcolspec, например, для управления количеством знаков .
\begin{tblr}{ colspec = { S[table-format=3.2] } }
12.3 \\
456.78 \\
9.01 \\
\end{tblr}
6.3.2 Использование макросов \unit и \qty
- Так как
siunitxзагружен, можно использовать его команды в ячейках таблицы. - Например, можно единицы измерения вынести в отдельную колонку и отформатировать с помощью
\unit:
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{siunitx}
\sisetup{per-mode = symbol} % Настройка для компактного отображения единиц
\begin{document}
\begin{tblr}{
colspec = { S[table-format=1.3] l }, % Первая колонка числа, вторая для команд \unit
column{2} = { cmd = \unit }, % Содержимое второй колонки будет аргументом для \unit
}
\SetCell[r=1,c=2]{c} Физические величины \\ % Объединенный заголовок
1.234 & \metre \\
0.835 & \candela \\
4.23 & \joule\per\mole \\
\end{tblr}
\end{document}
- Выражение
column{2} = {cmd = \unit}позволяет обрабатывать содержимое ячейки заданной командой (здесь\unitиз пакетаsiunitx).
7 Глобальные настройки
- Некоторые полезные опции для
\sisetup:locale = DE— быстрая настройка под европейские стандарты (запятая, пробелы).output-decimal-marker = {,}— явно задать запятую как десятичный разделитель.group-separator = {\,}— задать символ для отделения групп разрядов (например, тонкий пробел).range-phrase = {\,--\,}— задать текст для диапазона (по умолчанию “to”, можно заменить на тире).per-mode = symbol— как отображать символ “в минус первой степени”:/sвместос^{-1}. Можно такжеfractionдля отображения в виде обыкновенной дроби.exponent-mode = scientific— принудительно переводить все числа в экспоненциальный формат.
8 Основные команды siunitx
| Категория | Команда | Пример использования | Назначение |
|---|---|---|---|
| Базовые | \num | \num{1.23e4} | Форматирование числа |
\unit | \unit{\kilo\gram} | Форматирование единицы | |
\qty | \qty{10}{\metre} | Форматирование величины (число + единица) | |
| Спец. нужды | \ang | \ang{10;20;30} | Форматирование углов |
\numlist / \qtylist | \qtylist{1;2}{\metre} | Список величин | |
\numrange / \qtyrange | \qtyrange{1}{5}{\metre} | Диапазон величин | |
\complexnum / \complexqty | \complexnum{2+3i} | Комплексные числа | |
| Таблицы | Колонка S | \begin{tabular}{S} | Выравнивание чисел в колонке по разделителю |
| Настройка | \sisetup | \sisetup{locale=DE} | Установка глобальных опций форматирования |
