重新缩放 \widecheck Accent

重新缩放 \widecheck Accent

这实际上是但对于符号来说,问题在于\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}

在此处输入图片描述

下面概述了一种完全不同的方法。

  1. 复制mathx10.tfm到工作目录中;在具有或类似 shell 的mathxy10.tfmUnix 系统上,bash

    cp $(kpsewhich mathx10.tfm) mathxy10.tfm
    
  2. 将文件转换.tfm.pl

    tftopl mathxy10.tfm > mathxy10.pl
    
  3. 编辑刚刚创建的文件以查找具有的条目CHARACTER C p并从两者中CHARACTER C q删除NEXTLARGER属性(只需删除该行)

  4. 将文件转换.pl.tfm

    pltotf mathxy10.pl
    
  5. 在 TeX 文件的开头添加以下行

    \pdfmapline{+mathxy10 TeX-mathx10 <mathx10.pfb}
    
  6. 使用新创建的字体文件作为符号字体

例子

\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)
   )

相关内容