这实际上是这但对于符号来说,问题在于\check
:
我想用\check
更大的一个替换数学中的常用字符,但我不想让它拉伸。我想要的尺寸是“最小的\widecheck
”(如$\widecheck{.}$
)。有没有办法把它放在像 M 这样的宽字符上方($\widecheck{M}$
会拉伸并给出更宽的检查)。
我的主要问题似乎是我无法在 largesymbols 字体系列中找到 \widecheck 的对应符号。
这是我能找到的一个解决方法。可能还有更简单的方法。
\documentclass[12pt]{article}
\usepackage{amsmath,accents}
\DeclareFontShape{U}{mathx}{m}{n}{
<5> <6> <7> <8> <9> <10>
<10.95> <12> <14.4> <17.28> <20.74> <24.88>
mathx10
}{}
\DeclareSymbolFont{mathx}{U}{mathx}{m}{n}
\DeclareFontSubstitution{U}{mathx}{m}{n}
\DeclareMathAccent{\widecheck}{0}{mathx}{"71}
\DeclareMathAccent{\wideparen}{0}{mathx}{"75}
\DeclareMathSymbol{\widechecksym}{\mathord}{mathx}{"71}
\newcommand\lowerwidechecksym{%
\text{\smash{\hspace*{-0.25ex}\raisebox{-1.1ex}{%
$\widechecksym$}}}}
\newcommand\wcheck[1]{%
\mathchoice
{\accentset{\displaystyle\lowerwidechecksym}{#1}}
{\accentset{\textstyle\lowerwidechecksym}{#1}}
{\accentset{\scriptstyle\lowerwidechecksym}{#1}}
{\accentset{\scriptscriptstyle\lowerwidechecksym}{#1}}
}
\DeclareMathSymbol{\widehatsym}{\mathord}{mathx}{"70}
\newcommand\lowerwidehatsym{%
\text{\smash{\hspace*{-0.25ex}\raisebox{-1.1ex}{%
$\widehatsym$}}}}
\newcommand\what[1]{%
\mathchoice
{\accentset{\displaystyle\lowerwidehatsym}{#1}}
{\accentset{\textstyle\lowerwidehatsym}{#1}}
{\accentset{\scriptstyle\lowerwidehatsym}{#1}}
{\accentset{\scriptscriptstyle\lowerwidehatsym}{#1}}
}
\end{document}
答案1
你是这个意思吗?
我觉得它很糟糕,很难读懂,但您来评判吧。这是从 导入口音的代码mathabx
。
\documentclass{article}
\usepackage{amsmath}
\DeclareFontFamily{U}{mathx}{}
\DeclareFontShape{U}{mathx}{m}{n}{ <-> mathx10 }{}
\DeclareSymbolFont{mathx}{U}{mathx}{m}{n}
\DeclareFontSubstitution{U}{mathx}{m}{n}
\DeclareMathAccent{\widecheck}{0}{mathx}{"71}
\begin{document}
$\check{a}\widecheck{aa}\widecheck{aaa}\widecheck{aaaa}\widecheck{aaaaa}$
\end{document}
如果你只想要最短的宽度检查,下面的代码模拟了重音位置,但只适用于拉丁字母。它可以也可扩展至希腊字母。
\documentclass{article}
\DeclareFontFamily{U}{mathx}{}
\DeclareFontShape{U}{mathx}{m}{n}{ <-> mathx10 }{}
\DeclareSymbolFont{mathx}{U}{mathx}{m}{n}
\DeclareFontSubstitution{U}{mathx}{m}{n}
\DeclareMathAccent{\widecheck}{0}{mathx}{"71}
\makeatletter
\newcommand{\wcheck}[1]{\mathpalette\wcheck@{#1}}
\newcommand{\wcheck@}[2]{%
\begingroup
\edef\wcheck@font{\the
\ifx#1\displaystyle\textfont\else\ifx#1\textstyle\textfont
\else\ifx#1\scriptstyle\scriptfont\else\scriptscriptfont\fi\fi\fi\@ne
}%
\sbox\z@{\wcheck@font\mbox{#2}\mbox{\char\the\skewchar\font}}%
\sbox\tw@{\wcheck@font#2\char\the\skewchar\font}%
\dimen@=\dimexpr\wd\tw@-\wd\z@\relax
{\,\kern2\dimen@\widecheck{\!\kern-2\dimen@#2\!}\,}%
\endgroup
}
\makeatother
\begin{document}
$\wcheck{M}$ $\wcheck{A}$
$\check{M}$ $\widecheck{A}$
\end{document}
在示例中,我使用\check
“over”M
只是为了表明重音的位置是正确的。
\documentclass{article}
\DeclareFontFamily{U}{mathx}{}
\DeclareFontShape{U}{mathx}{m}{n}{ <-> mathx10 }{}
\DeclareSymbolFont{mathx}{U}{mathx}{m}{n}
\DeclareFontSubstitution{U}{mathx}{m}{n}
\DeclareMathAccent{\widecheck}{0}{mathx}{"71}
\makeatletter
\newcommand{\wcheck}[1]{\mathpalette\wcheck@{#1}}
\newcommand{\wcheck@}[2]{%
\begingroup
\edef\wcheck@font{\the
\ifx#1\displaystyle\textfont\else\ifx#1\textstyle\textfont
\else\ifx#1\scriptstyle\scriptfont\else\scriptscriptfont\fi\fi\fi\@ne
}%
\sbox\z@{\wcheck@font\mbox{#2}\mbox{\char\the\skewchar\font}}%
\sbox\tw@{\wcheck@font#2\char\the\skewchar\font}%
\dimen@=\dimexpr\wd\tw@-\wd\z@\relax
{\,\kern2\dimen@\widecheck{\!\kern-2\dimen@#2\!}\,}%
\endgroup
}
\makeatother
\begin{document}
$\wcheck{M}$ $\wcheck{A}$
$\scriptstyle\wcheck{M}\scriptstyle\check{M}$
$\scriptstyle\wcheck{A}\scriptstyle\widecheck{A}$
$\check{M}$ $\widecheck{A}$
\end{document}
下面概述了一种完全不同的方法。
复制
mathx10.tfm
到工作目录中;在具有或类似 shell 的mathxy10.tfm
Unix 系统上,bash
cp $(kpsewhich mathx10.tfm) mathxy10.tfm
将文件转换
.tfm
为.pl
tftopl mathxy10.tfm > mathxy10.pl
编辑刚刚创建的文件以查找具有的条目
CHARACTER C p
并从两者中CHARACTER C q
删除NEXTLARGER
属性(只需删除该行)将文件转换
.pl
回.tfm
pltotf mathxy10.pl
在 TeX 文件的开头添加以下行
\pdfmapline{+mathxy10 TeX-mathx10 <mathx10.pfb}
使用新创建的字体文件作为符号字体
例子
\pdfmapline{+mathxy10 TeX-mathx10 <mathx10.pfb}
\documentclass{article}
\DeclareFontFamily{U}{mathx}{}
\DeclareFontShape{U}{mathx}{m}{n}{ <-> mathxy10 }{}
\DeclareSymbolFont{mathx}{U}{mathx}{m}{n}
\DeclareFontSubstitution{U}{mathx}{m}{n}
\DeclareMathAccent{\what}{0}{mathx}{"70}
\DeclareMathAccent{\wcheck}{0}{mathx}{"71}
\begin{document}
$\wcheck{M}\wcheck{A}$
$\what{M}\what{A}$
\end{document}
.pl
这些是文件中要进行的编辑
前
(CHARACTER C p
(CHARWD R 0.55542)
(CHARHT R 0.722046)
(NEXTLARGER C x)
)
(CHARACTER C q
(CHARWD R 0.55542)
(CHARHT R 0.722046)
(NEXTLARGER O 174)
)
后:
(CHARACTER C p
(CHARWD R 0.55542)
(CHARHT R 0.722046)
)
(CHARACTER C q
(CHARWD R 0.55542)
(CHARHT R 0.722046)
)