Как быстрее записывать длинные, распространённые выражения?

Как быстрее записывать длинные, распространённые выражения?

Я пишу статью по астрономии и у меня есть некоторые символы и переменные, которые встречаются повсюду. Становится обременительным выписывать их каждый раз. Есть ли способ создать для них своего рода ярлык? Обратите внимание, что большинство из них находятся в математическом режиме.

Например:
журнал(Привет)

$\log(\textrm{H}\textsc{i})$

log(SFR/M*)

$\log(\textrm{SFR} / \textrm{M}_{\odot})$

решение1

Создание макросов, которые предоставляют ярлыки для часто используемых строк, является очень хорошей идеей. Для начального уровня введения в использование \newcommandдирективы LaTeX см., например, Главу 6, "Настройка LaTeX", руководстваНе такое уж короткое введение в LATEX2e.

Например, вы можете выдать инструкции

\newcommand\loghi{\log(\mathrm{H}\textsc{i})}
\newcommand\sfrm{\log(\mathrm{SFR} / \mathrm{M}_{\odot})}

в преамбуле, а затем в тексте напишите что-то вроде

bleet bleet $\loghi=\sfrm$ more bleet bleet

Как вы уже отметили в комментарии, сложность возникает, если эти макросы можно также использовать всмелыйокружения, такие как заголовки секций. В частности, учитывая приведенное выше определение \loghi, LaTeX попытается набрать букву iполужирным шрифтом с малыми капителями. Как вы обнаружили, если семейство шрифтов, которое вы используете, не имеет шрифта полужирный-малые капители, буква будет набрана "обычным" полужирным шрифтом, т.е. какя. Не тот эффект, который хотелось бы получить, верно?!

Что делать? Я думаю, у вас есть (как минимум) два варианта. Первый — использовать семейство шрифтов, в котором есть шрифт с жирным и малым заглавными буквами. Два таких семейства — newt xtext/ newtxmathи newpxtext/ newpxmath. Первое обеспечивает вид «Times Roman», второе — вид «Palatino». Это может (или не может...) быть приемлемым для вас.

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

\newcommand\loghi{\log(\mathrm{H}\textsc{\mdseries i})}

(обратите внимание на добавление \mdseriesк аргументу \textsc) указывает LaTeX применять \textscверсию со "средним начертанием" (а не "жирным начертанием") i. Пока шрифт со средним начертанием содержит глифы с малыми капителями, успех вам гарантирован.

решение2

Я бы разделил задачу на две части. Сначала вы определяете элементарные символы, затем выражения через них:

\documentclass{article}
\usepackage{amsmath}

%% first the symbols
\newcommand{\Hi}{\textnormal{H\kern-.1em\textsc{i}}}
\newcommand{\SFR}{\mathrm{SFR}}
\newcommand{\Mo}{\mathrm{M}_{\odot}}
%% then common expressions
\newcommand{\lHi}{\log\Hi}
\newcommand{\lsfrmo}{\log(\SFR/\Mo)}

\begin{document}
\begin{gather*}
\log\Hi + \log(\SFR/\Mo)\\
\lHi+\lsfrmo
\end{gather*}
\end{document}

Я немного добавил к определению, \Hiчтобы показать, как можно переопределить элементарный символ без необходимости изменять определение выражения, определенного с его помощью.

С \textnormal{...}мы гарантируем, что шрифт будет «начальным», независимо от контекста. Это нужно для \Hi, но не для \SFR; поскольку \mathrmэффективнее \textnormal, то предпочтительнее, когда есть возможность его использовать.

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

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