![Неравномерная высота при использовании верхнего индекса в frac](https://rvso.com/image/328827/%D0%9D%D0%B5%D1%80%D0%B0%D0%B2%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D0%B2%D1%8B%D1%81%D0%BE%D1%82%D0%B0%20%D0%BF%D1%80%D0%B8%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B2%D0%B5%D1%80%D1%85%D0%BD%D0%B5%D0%B3%D0%BE%20%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D0%B0%20%D0%B2%20frac.png)
Я хотел уточнить некоторые из своих уравнений, когда столкнулся с этим
Обратите внимание, как хорошо вписывается верхний индекс в оператор производной и не опускает символы в знаменателе, в то время как \sin^2\vartheta
лежит ниже каждого второго члена. Я думал, что это из-за определения оператора, \sin
но замена его на \mathrm{sin}
все еще дает тот же результат.
Поскольку этот термин появляется в ряду всех подобных терминов, он заметно выделяется.
То, что я получил на данный момент, это промежуточное решение с subdepth
пакетом, который производит
где хотя бы один термин находится на одной строке. Я был бы благодарен за любое креативное решение, чтобы справиться с этим :)
решение1
Проблема в «i», где выносной элемент задает общую высоту ядра в \sin^2
.
Вы можете исправить это, разбив «i»; однако, это создаст проблемы, если вы это сделаете \overline{\sin x}
; решение — добавить еще один фантом перед реальным оператором. Я добавляю \mathop
атом, содержащий фантом для настоящего имени, за которым следует , \!
поэтому тонкий пробел, который TeX вставляет между двумя последовательными \mathop
атомами, удаляется.
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\sinname}{sin}% change here
\newcommand{\sin@name}{%
\smash{\operator@font\sinname}\vphantom{s}%
}
\DeclareRobustCommand{\sin}{%
\mathop{\vphantom{\operator@font\sinname}}\!%
\qopname\relax o{\sin@name}%
}
\makeatother
\begin{document}
\begin{gather*}
\frac{1}{\sin\theta}+\frac{1}{\sin\alpha}\ne
\frac{1}{\sin^2\theta}+\frac{1}{\sin^2\alpha}
\\
\frac{1}{\sin\theta}\frac{\partial}{\partial\theta}\ne
\frac{1}{\sin^2\theta}\frac{\partial^2}{\partial\theta^2}
\\
\sqrt{\sin\alpha}+\sqrt{\cos\alpha}
\\
\frac{1}{\sqrt{\sin\alpha}}+\frac{1}{\sqrt{\cos\alpha}}
\\
\overline{\sin\alpha}
\end{gather*}
\end{document}
Ничто не идеально в этом мире! Вы можете видеть, что в третьей строке знак квадратного корня находится на разной высоте. Возможным решением этой проблемы было бы переопределение \cos
на ту же высоту, что и \sin
:
\DeclareRobustCommand{\cos}{%
\mathop{\vphantom{\operator@font\sinname}}\!%
\qopname\relax o{cos}%
}
Поскольку в некоторых типографских традициях для этого используется другой тег \sin
(например, «sen»), я предоставляю его только потому, что в изменении имени \sinname
нет необходимости .\cos
При таком определении верхняя черта будет находиться на одном уровне для \sin
и \cos
, что может быть желательным или нежелательным.
решение2
Очевидно (;-) ответ @egreg великолепен и попадает прямо в точку, но у него есть бесконечно малый недостаток: извращенец, который попытается, $\overline{\sin x}$
получит сюрприз. Более того, можно утверждать, что размещение знака радикала $\sqrt{\sin x}$
неоптимально.
Размещение верхних индексов в математических формулах является очень низкоуровневой функцией TeX, которая описана, наряду со многими другими «интимными» подробностями набора математических текстов, в Приложении G кTeXbook, к которому вы отсылаетесь для объяснения следующего решения.
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
% egreg's recipe:
\makeatletter
\DeclareRobustCommand{\sinname}{%
\smash{\operator@font sin}\vphantom{s}%
}
% ... but let us use a different name for the operator:
\newcommand{\ssin}{\qopname\relax o{\sinname}}
\makeatother
% Our recipe:
\setbox0 = \hbox{$$} % load math fonts
\fontdimen18\scriptfont2 = 3.78970pt % turns out to be just enough
\begin{document}
The downside in egreg's answer:
\[\sqrt{\sin x}+\sqrt{\ssin x} + \overline{\sin x}+\overline{\ssin x}\]
That's not fine.
But, with our correction, the exponent of the ``usual'' \verb|\sin| will not be
rised that much:
\[ \frac{1}{\cos^{2}x} + \frac{1}{\sin^{2}x} + \frac{1}{x^{2}} \]
For an explanation, see \textsl{The \TeX book}, Appendix~G, Rule~18a; the
relevant passage is ``set \( u\gets h-q \)\,\ldots\ where $q$\,\ldots\ [is] the
[value] of~$\sigma_{18}$\,\ldots\ in the font corresponding to
[style]~$C{\uparrow}$''. What we are doing is to increase~$q$. The amended
value of~$u$ will be subsequently used in Rule~18c to position the superscript.
\end{document}
Вот что получилось:
Давайте также увеличим важную часть:
Конечно, это решение также может иметь недостатки: подобное изменение параметра, работающего на столь низком уровне TeX, может вызвать побочные эффекты, которые не очевидны на первый взгляд.
решение3
решение4
Я не знаю этот \sin^2
синтаксис и поэтому никогда не сталкивался с этой проблемой раньше. Возможно, вам захочется изменить его на что-то более распространенное, как в моем MWE ниже. Другая проблема устраняется в то же время, поскольку вам не нужно компенсировать преувеличенный верхний индекс из этого синусного термина.
% arara: pdflatex
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\[
\frac{1}{\sin\vartheta}\frac{\partial}{\partial\vartheta} \text{ vs. }\frac{1}{\sin(\vartheta)^2}\frac{\partial}{\partial\vartheta^2}
\]
\end{document}
Если вы хотите придерживаться этого синтаксиса, вам придется добавить распорку к самому левому терму. Это будет имитировать верхний индекс с правой стороны и все будет хорошо выровнено (вам все subdepth
еще понадобится исправление).
\frac{1}{\sin^{\vphantom{2}}\vartheta}
@egreg только что сказал мне, что можно \sin
переопределить
\def\sin{\mathop{\smash{\mathrm{sin}}\vphantom{s}}\nolimits}
чтобы сделать это правильно. Однако делать так не рекомендуется. Вы должны очень хорошо знать, что вы делаете, если вы переопределяете некоторые основные команды.