Как сделать циркумфлексы шире, но при этом сохранить фиксированный размер в XeTeX?

Как сделать циркумфлексы шире, но при этом сохранить фиксированный размер в XeTeX?

Циркумфлексы выглядят слишком маленькими и слишком близки к символу в PDF-файле, сгенерированном XeLaTeX из UTF-8источника сАсана Матхшрифт для математики:

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

Источник:

\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage[math-style=ISO,bold-style=ISO,nabla=upright,partial=upright,vargreek-shape=unicode]{unicode-math}
\setmathfont{[Asana-Math]}

\newcommand*{\op}[1]{\hat{\mathup{#1}}}

\begin{document}

\begin{equation}
    \op{H} = \op{T} + \op{V} 
\end{equation}

\end{document}

Я хочу сделать циркумфлексы шире, чтобы они были более четко отделены от символов под ними, но \widehatэто не вариант, так как он создает циркумфлексы переменного размера. Решение вКак вручную выбрать размер широкого акцента? (математический режим)у меня не работает. Кажется, есть какая-то несовместимость междуaccentsупаковка и UTF-8кодировка.

Мне очень нравится Asana Math, поэтому я не хочу менять шрифт.

решение1

Возможно, стоит попробовать ввести две команды через xparseпакет:

\DeclareDocumentCommand{\operator}{ s m }{
    \IfBooleanTF{#1}{
                    \widehat{#2}
            }{
                    \hat{#2}}
            }
    }

Затем \operator{H}выдает «нормальный» вывод и \operator*{H}растягивает циркумфлекс.

Возможно, вам также будет интересно посмотреть следующий пост:Символ действительно широкой шляпыгде scalerelиспользуется пакет. Вы можете подумать об определении команды с двумя входами, первый из которых задает ширину шляпы, а второй — символ

Редактировать:

Я думаю, что теперь у меня есть решение после того, как я посмотрел наsource2e.pdfиencguide.pdf.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage[math-style=ISO,bold-style=ISO,nabla=upright,partial=upright,vargreek-shape=unicode]{unicode-math}
\setmathfont{[Asana-Math]}
\DeclareSymbolFont{mylargesymbols}{OMX}{cmex}{m}{n}
\DeclareMathAccent{\mywidehat}{\mathord}{mylargesymbols}{"62}
\begin{document}
$\hat{\mathrm{H}} = \hat{\mathrm{T}} + \hat{\mathrm{V}} +\hat{abcdefgh}$

$ \widehat{\mathrm{H}} = \widehat{\mathrm{T}} + \widehat{\mathrm{V}} +\widehat{abcdefgh}$

$ \mywidehat{\mathrm{H}} = \mywidehat{\mathrm{T}} + \mywidehat{\mathrm{V}} +\mywidehat{abcdefgh}$
\end{document}

даст следующий результат

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

Шляпа все еще расширяется, но не так драматично, как в предыдущем случае.

решение2

[ПРИМЕЧАНИЕ: Правка 1 для лучшего вертикального позиционирования; Правка 2 для «шляпки», а не «клина»] У меня нет доступа к вашим конкретным шрифтам, поэтому я решаю проблему для шрифта LaTeX по умолчанию. Вам придется перепараметризировать мое решение. Оно включает использование пакета scalerelдля растяжения \hatсимвола ( \char'136). Я показываю неизмененный результат, а затем результат для одного набора параметров растяжений. После того, как вы откалибруете три параметра для своего шрифта, зафиксируйте эти значения в определении. \Htопределяет вертикальное растяжение; \Wdопределяет горизонтальное растяжение; и \Dpопределяет множитель вертикального разделения между буквой и надшляпкой.

\documentclass{article}
\usepackage{amsmath}
\usepackage{scalerel}
\usepackage{adjustbox}

\newlength\svarraycolsep
\newcommand\althat[1]{%
\renewcommand\arraystretch{\Dp}%
\setlength\svarraycolsep{\arraycolsep}%
\setlength\arraycolsep{0in}%
\begin{array}{c}%
  \vstretch{\Ht}{%
    \hstretch{\Wd}{%
      \trimbox{.15ex .75ex .15ex .2ex}{\scalerel*{\char'136}{\rule{1ex}{1ex}}}%
    }%
  }\\%
  #1\\%
\rule{1ex}{0ex}\\%
\end{array}%
\renewcommand\arraystretch{1.0}%
\setlength\arraycolsep{\svarraycolsep}%
}

\parindent 0in
\begin{document}

Hat:

\( \hat{\mathrm{H}} = \hat{\mathrm{T}} + \hat{\mathrm{V}} \)

Carat(char'136):


\def\Ht{1.8}
\def\Wd{4.5}
\def\Dp{.3}
\( \althat {\mathrm{H}} = \althat {\mathrm{T}} + \althat {\mathrm{V}} \)

\end{document}

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

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