Является ли плохой практикой замена a^{-1} на пользовательскую команду?

Является ли плохой практикой замена a^{-1} на пользовательскую команду?

Недавно я начал делать домашнее задание в LaTeX, так что я все еще новичок в этом мире. Одна из вещей, которые мне не очень нравится делать, — это печатать ^{-1}каждый раз, когда мне нужно что-то инвертировать, поэтому я заменил это предопределенной командой \newcommand{\inv}{^{-1}}. Пока что ничего не сломалось, и все отображается нормально, но мне стало интересно, является ли это какой-то плохой практикой в ​​LaTeX. Возможно, это приводит к каким-то незначительным изменениям, о которых я просто не знаю?

решение1

Вы сталкиваетесь с проблемой в тот момент, когда хотите взять, например, обратное значение a', так как a'\invэто приведет к ошибке с двойным верхним индексом. Эта проблема раздражала меня много лет, и в конце концов я создал пакетSemanTeXдля решения этой и многих других проблем. Он позволяет вам вводить всю вашу математику семантически, используя синтаксис keyval, и такие проблемы, как двойные верхние индексы, никогда не возникают. Вот пример кода:

\documentclass{article}

\usepackage{semantex}

\NewVariableClass\MyVar[
    output=\MyVar,
    define keys={
        {inv}{ upper=-1 },
    },
]

\NewObject\MyVar\va{a} % this means "variable a"

\begin{document}

$ \va[inv] $, $ \va[prime,inv] $, $ \va[prime,spar,inv] $

\end{document}

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


По просьбе, полученной из комментариев (не к этому ответу, а к исходному вопросу), я предлагаю макрос, \invпринимающий два необязательных аргумента: необязательный аргумент *, который добавляет простое число, и необязательный аргумент, который позволяет возводить в отрицательную степень, отличную от -1:

\documentclass{article}

\usepackage{xparse}

\NewDocumentCommand\inv{ s O{1} }
{%
    \IfBooleanTF{#1}%
    {%
        ^{\prime-#2}%
    }%
    {%
        ^{-#2}%
    }%
}

\begin{document}

$ a\inv $, $ a\inv[2] $, $ a\inv* $, $ a\inv*[2] $

\end{document}

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

В принципе, вы также можете использовать a 'вместо a, *заменив { s O{1} }на { t{'} O{1} }. Я не использовал этот подход, так как не нахожу a\inv'его интуитивно понятным синтаксисом для a'⁻¹ (инверсия и штрих находятся в обратном порядке относительно того, как они печатаются). Но это полностью дело личного вкуса.

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