Как преобразовать общую единицу в единицу СИ

Как преобразовать общую единицу в единицу СИ

Можно ли автоматически преобразовать все используемые в документе единицы измерения в одну из 7 единиц СИ?

Где у меня например есть \unit{\pascal},

Мне бы хотелось, чтобы он отображался как \unit{\newton\per\square\meter}, без необходимости вносить корректировки везде.

решение1

Вы можете (повторно) объявить рассматриваемые единицы измерения в преамбуле один раз следующим образом:

\documentclass{article}

\usepackage{siunitx}
\DeclareSIUnit{\pascal}{\newton\per\square\meter}

\begin{document}

\unit{\pascal}

\end{document}

Редактировать: Вруководство пользователя, на странице 14 говорится:

Значение предопределенной единицы можно изменить, используя \DeclareSIUnitпосле загрузки siunitx. Это перезапишет исходное определение новой версией.

Поэтому никаких проблем с использованием этого подхода возникнуть не должно.

Редактирование 2: Я потратил время на (пере)объявление производных единиц СИ в siunitxпакете там, где это имело смысл (см. ниже, я использовал таблицу 10 наэтот сайтв качестве справочного материала и дважды проверено в Википедии). Обратите внимание, что я добавил bперед именами макросов, чтобы не перезаписывать исходные макросы. Я решил сделать это, потому что столкнулся с одной проблемой при объявлении всех производных единиц, представленных семью основными единицами СИ. Существуют сокращения для единиц, таких как MPaили , kNопределенных в пакете. Использование тех, которые имеют сокращения с переопределенными макросами единиц, может привести не только к ошибкам из-за двойных префиксов, но и к неправильным единицам, например, Mm^{-1}kgs^{-2}вместо MPa. В заключение, я бы избегал переопределения существующих производных единиц СИ, а вместо этого использовал новые. Однако, если вы хотите использовать существующие макросы, будьте осторожны и не используйте никаких сокращений с префиксами (или, по крайней мере, проверьте, какие из них безопасны) или перезаписывайте их тоже.

\DeclareSIUnit{\bhertz}{\per\second}
\DeclareSIUnit{\bnewton}{\kilo\gram\metre\per\square\second}
\DeclareSIUnit{\bpascal}{\kilo\gram\per\metre\per\square\second}
\DeclareSIUnit{\bjoule}{\kilo\gram\square\metre\per\square\second}
\DeclareSIUnit{\bwatt}{\kilo\gram\square\metre\per\cubic\second}
\DeclareSIUnit{\bcoulomb}{\ampere\second}
\DeclareSIUnit{\bvolt}{\kilo\gram\square\metre\per\ampere\per\cubic\second}
\DeclareSIUnit{\bfarad}{\per\kilo\gram\per\square\metre\square\ampere\second\tothe{4}}
\DeclareSIUnit{\bohm}{\kilo\gram\square\metre\per\square\ampere\per\cubic\second}
\DeclareSIUnit{\bsiemens}{\per\kilo\gram\per\square\metre\square\ampere\cubic\second}
\DeclareSIUnit{\bweber}{\kilo\gram\square\metre\per\ampere\per\square\second}
\DeclareSIUnit{\btesla}{\kilo\gram\per\ampere\per\square\second}
\DeclareSIUnit{\bhenry}{\kilo\gram\square\metre\per\square\ampere\per\square\second}
% wouldn't recommend using:
\DeclareSIUnit{\bbecquerel}{\per\second}
\DeclareSIUnit{\bgray}{\square\metre\per\square\second}
\DeclareSIUnit{\bsievert}{\square\metre\per\square\second}
\DeclareSIUnit{\bkatal}{\mole\per\second}

Если вы предпочитаете схему/порядок единиц, то m-kg-s-A-K-mol-cdвам подойдет версия ниже.

\DeclareSIUnit{\bhertz}{\per\second}
\DeclareSIUnit{\bnewton}{\metre\kilo\gram\per\square\second}
\DeclareSIUnit{\bpascal}{\per\metre\kilo\gram\per\square\second}
\DeclareSIUnit{\bjoule}{\square\metre\kilo\gram\per\square\second}
\DeclareSIUnit{\bwatt}{\square\metre\kilo\gram\per\cubic\second}
\DeclareSIUnit{\bcoulomb}{\second\ampere}
\DeclareSIUnit{\bvolt}{\square\metre\kilo\gram\per\cubic\second\per\ampere}
\DeclareSIUnit{\bfarad}{\per\square\metre\per\kilo\gram\second\tothe{4}\square\ampere}
\DeclareSIUnit{\bohm}{\square\metre\kilo\gram\per\cubic\second\per\square\ampere}
\DeclareSIUnit{\bsiemens}{\per\square\metre\per\kilo\gram\cubic\second\square\ampere}
\DeclareSIUnit{\bweber}{\square\metre\kilo\gram\per\square\second\per\ampere}
\DeclareSIUnit{\btesla}{\kilo\gram\per\square\second\per\ampere}
\DeclareSIUnit{\bhenry}{\square\metre\kilo\gram\per\square\second\per\square\ampere}

Я упустил \radianи \steradianпоскольку их базовая единица СИ — 1и также \lumenи \luxкоторые получены из \candelaиспользования \steradian, которое (я думаю) может привести к ошибкам преобразования (но я не совсем уверен в этом, если вы знаете лучше, не стесняйтесь дать мне знать). Кроме того, поскольку \degreeCelsius— это всего лишь производная единица относительно 273.15 K, ​​прямое преобразование приведет к ложным величинам с абсолютными температурами, поэтому я также не включил его.

решение2

введите описание изображения здесь

\documentclass{article}

\usepackage{siunitx}

\DeclareSIUnit{\pascal}{\newton\per\square\meter}

\begin{document}

This is the distillation column pressure \SI{10}{\unit{\pascal}}.

\end{document}

Примечание: Я не уверен, сломает ли это что-нибудь, поскольку \pascalэто уже определено, возможно, кто-то даст более подходящий ответ, но, похоже, это работает без очевидных ошибок.

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