我使用 Cochineal 字体来处理文本和数学运算,使用cochineal
和newtxmath
包。我只发现这种字体的一个缺陷: 、\bar
和\tilde
产生\hat
的重音非常小,而\widebar
、\widetilde
和\widehat
产生的重音非常大(使用\widebar
Hendrik Vogt 的答案中的命令这里)。
\hstretch
为了获得更好看的重音,我尝试使用包中的命令定义它们的拉伸版本scalerel
。我定义了
\newcommand{\stretchedbar}[1]{\hstretch{1.67}{\bar{\hstretch{0.6}{#1}}}}
\stretchedtilde
以及类似的\stretchedhat
命令。
以下是三个版本的竖线、波浪线和铙钹的简单比较:
现在\stretched...
命令给出了很好的结果尺寸重音符号。但是,这些命令无法正确移动斜体字符上的重音符号,它们太靠左了。
我发现这个答案,它引入了一个\shifthat
命令。此命令允许手动移动\hat
特定字符上的 ,所以我想我可以调整此代码以手动移动每个未正确放置的字符上的所有三个重音。但是,当然,这个过程会非常漫长,而且我甚至不确定它是否适用于 和 ,\tilde
因为\bar
我不理解此命令定义的所有内容\shifthat
。
有什么方法可以定义这些重音符号的延伸版本,同时调整斜体字符上重音符号的移动?或者以另一种方式重新定义重音符号的命令以获得类似的结果?
答案1
这是使用该包的解决方案accents
。
首先,从头定义重音符号:
\newcommand{\newbar}{\scalebox{.9}[.85]{\trimbox{0pt .55ex}{\textminus}}}
\newcommand{\newtilde}{\scalebox{.9}[1]{\trimbox{0pt .6ex}{\textasciitilde}}}
\newcommand{\newhat}{\scalebox{1.5}[.75]{\trimbox{0pt 1.1ex}{\textasciicircum}}}
中的参数\scalebox
分别控制宽度和厚度。例如,如果希望条形更粗,请增加命令[.85]
中的\newbar
。要使条形变窄,请减小{.9}
。该\trimbox
命令来自trimclip
包。需要它来容纳重音符号周围的空格(垂直)。非零参数控制符号上方重音符号的高度。要提高重音符号,请修剪较少。例如,要提高条形,请减小.55ex
。
一旦定义了重音,就可以使用命令来调用它们
\newcommand{\stretchedbar}[1]{\accentset{\newbar}{#1}}
\newcommand{\stretchedtilde}[1]{\accentset{\newtilde}{#1}}
\newcommand{\stretchedhat}[1]{\accentset{\newhat}{#1}}
完整代码如下:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[p,osf]{cochineal}
\usepackage[varqu,varl,var0]{inconsolata}
\usepackage[scale=.95,type1]{cabin}
\usepackage[cochineal,vvarbb]{newtxmath}
\usepackage[cal=boondoxo]{mathalfa}
\usepackage{accents}
\usepackage{trimclip}
\newcommand{\newbar}{\scalebox{.9}[.85]{\trimbox{0pt .55ex}{\textminus}}}
\newcommand{\newtilde}{\scalebox{.9}[1]{\trimbox{0pt .6ex}{\textasciitilde}}}
\newcommand{\newhat}{\scalebox{1.5}[.75]{\trimbox{0pt 1.1ex}{\textasciicircum}}}
\newcommand{\stretchedbar}[1]{\accentset{\newbar}{#1}}
\newcommand{\stretchedtilde}[1]{\accentset{\newtilde}{#1}}
\newcommand{\stretchedhat}[1]{\accentset{\newhat}{#1}}
\begin{document}
$\bar{e},\hat{e},\tilde{e}\quad\bar{y},\hat{y},\tilde{y}\quad\bar{A},\hat{A},\tilde{A}\quad\bar{\Omega},\hat{\Omega},\tilde{\Omega}\quad$
$\stretchedbar{e},\stretchedhat{e},\stretchedtilde{e}\quad\stretchedbar{y},\stretchedhat{y},\stretchedtilde{y}\quad\stretchedbar{A},\stretchedhat{A},\stretchedtilde{A}\quad\stretchedbar{\Omega},\stretchedhat{\Omega},\stretchedtilde{\Omega}\quad$
\end{document}
如果您需要下标/上标中的符号,则需要使用\mathchoice
。按如下方式组合宏:
\newcommand{\stretchedhat}[1]{\mathchoice
{\accentset{\scalebox{1.5}[.75]{\trimbox{0pt 1.1ex}{\textasciicircum}}}{#1}}
{\accentset{\scalebox{1.5}[.75]{\trimbox{0pt 1.1ex}{\textasciicircum}}}{#1}}
{\accentset{\scalebox{1}[.5]{\trimbox{0pt 1.2ex}{\textasciicircum}}}{#1}}
{\accentset{\scalebox{.8}[.4]{\trimbox{0pt 1.3ex}{\textasciicircum}}}{#1}}
}
\newcommand{\stretchedtilde}[1]{\mathchoice
{\accentset{\scalebox{.9}[1]{\trimbox{0pt .6ex}{\textasciitilde}}}{#1}}
{\accentset{\scalebox{.9}[1]{\trimbox{0pt .6ex}{\textasciitilde}}}{#1}}
{\accentset{\scalebox{.7}[.8]{\trimbox{0pt .7ex}{\textasciitilde}}}{#1}}
{\accentset{\scalebox{.5}[.6]{\trimbox{0pt .8ex}{\textasciitilde}}}{#1}}
}
\newcommand{\stretchedbar}[1]{\mathchoice
{\accentset{\scalebox{.9}[.85]{\trimbox{0pt .55ex}{\textminus}}}{#1}}
{\accentset{\scalebox{.9}[.85]{\trimbox{0pt .55ex}{\textminus}}}{#1}}
{\accentset{\scalebox{.7}[.7]{\trimbox{0pt .65ex}{\textminus}}}{#1}}
{\accentset{\scalebox{.5}[.6]{\trimbox{0pt .75ex}{\textminus}}}{#1}}
}
您可以根据自己的喜好调整间距和大小。
$\stretchedhat{e}_{\stretchedhat{e}_{\stretchedhat{e}}}$
$\stretchedbar{e}_{\stretchedbar{e}_{\stretchedbar{e}}}$
$\stretchedtilde{e}_{\stretchedtilde{e}_{\stretchedtilde{e}}}$
\protect
请注意,如果您想在、等中使用它们,则必须使用这些。\section
评论中有\paragraph
一个使用hyperref
with 的解决方法。\texorpdfstring