LaTeX. Пакет siunitx

LaTeX. Пакет siunitx

2026-03-06 · 5 мин. для прочтения
blog computer-science

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{единица}.
  • Глобальные настройки форматирования для всего документа задаются командой \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

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}Установка глобальных опций форматирования
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы. Научные интересы относятся к области теоретической физики и математического моделирования.