如何在数学模式中创建自定义装饰符号(如 \tilde)

如何在数学模式中创建自定义装饰符号(如 \tilde)

我需要一些自定义装饰符号,比如\tilde数学模式。

MnSymbol 包中有一些简洁的符号,因此我认为应该按照建议导入这些符号这里

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
%\usepackage{accents}
\usepackage{bm}

% import certain symbols from MnSymbol,
% https://tex.stackexchange.com/questions/450691/create-diamond-with-a-dash-in-it/450703#450703
\def\ImportFromMnSymbol#1{%
    \DeclareFontFamily{U} {MnSymbol#1}{}
    \DeclareFontShape{U}{MnSymbol#1}{m}{n}{ <-6> MnSymbol#15 <6-7> MnSymbol#16 <7-8> MnSymbol#17 <8-9> MnSymbol#18 <9-10> MnSymbol#19 <10-12> MnSymbol#110 <12-> MnSymbol#112 }{}
    \DeclareFontShape{U}{MnSymbol#1}{b}{n}{ <-6> MnSymbol#1-Bold5 <6-7> MnSymbol#1-Bold6 <7-8> MnSymbol#1-Bold7 <8-9> MnSymbol#1-Bold8 <9-10> MnSymbol#1-Bold9 <10-12> MnSymbol#1-Bold10 <12-> MnSymbol#1-Bold12 }{}
    \DeclareSymbolFont{MnSy#1} {U} {MnSymbol#1}{m}{n} }
\newcommand\DeclareMnSymbol[4]{\DeclareMathSymbol{#1}{#2}{MnSy#3}{#4}}
\ImportFromMnSymbol{C}
\DeclareMnSymbol{\smalltriangleup}{\mathbin}{C}{73}

\begin{document}

$
      \tilde{f} 
\quad \tilde{\bm{f}}
\quad \overset{\smalltriangleup}{f}
\quad \stackrel{\smalltriangleup}{f}
$

\end{document}

我的问题是我不知道如何正确定位符号:

不带重音符号的输出包

最后的尝试在视觉上是正确的方向,但方法似乎并不正确,因为当从 pdf 中突出显示和复制文本时,会得到一个三角形符号,后跟一个 f,而不是普通的 f。

那么如何才能正确完成呢? Amsmath 能够找到如何以令人愉悦的方式定位波浪符号,这真是太好了,有没有什么办法可以利用这一点呢?

我记得这个accents包被推荐过,但是加载这个包之后甚至波浪号都不再正确定位了:

带口音的输出包

答案1

为什么不将该符号声明为重音符号?

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
%\usepackage{accents}
\usepackage{bm}

% import certain symbols from MnSymbol,
% https://tex.stackexchange.com/questions/450691/create-diamond-with-a-dash-in-it/450703#450703
\newcommand\ImportFromMnSymbol[1]{%
  \DeclareFontFamily{U}{MnSymbol#1}{}
  \DeclareFontShape{U}{MnSymbol#1}{m}{n}
    { <-6>    MnSymbol#15
      <6-7>   MnSymbol#16
      <7-8>   MnSymbol#17
      <8-9>   MnSymbol#18
      <9-10>  MnSymbol#19
      <10-12> MnSymbol#110
      <12->   MnSymbol#112
    }{}
  \DeclareFontShape{U}{MnSymbol#1}{b}{n}
    { <-6>    MnSymbol#1-Bold5
      <6-7>   MnSymbol#1-Bold6
      <7-8>   MnSymbol#1-Bold7
      <8-9>   MnSymbol#1-Bold8
      <9-10>  MnSymbol#1-Bold9
      <10-12> MnSymbol#1-Bold10
      <12->   MnSymbol#1-Bold12
    }{}
  \DeclareSymbolFont{MnSy#1}{U}{MnSymbol#1}{m}{n}
  \SetSymbolFont{MnSy#1}{bold}{U}{MnSymbol#1}{b}{n}
}
\newcommand\DeclareMnSymbol[4]{\DeclareMathSymbol{#1}{#2}{MnSy#3}{#4}}
\newcommand\DeclareMnAccent[4]{\DeclareMathAccent{#1}{#2}{MnSy#3}{#4}}

\ImportFromMnSymbol{C}
\DeclareMnAccent{\acctriangleup}{\mathord}{C}{73}

\begin{document}

$\acctriangleup{f}+\tilde{f}$

{\boldmath$\acctriangleup{f}+\tilde{f}$}

\end{document}

我重新格式化了代码以提高可读性(虽然我不确定间隔,但这不是什么大问题)并添加了粗体数学版本的设置。

在此处输入图片描述

以下是如何缩小所需字体的方法。我添加了一些参数,以便能够以不同的比例加载相同的字体。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
%\usepackage{accents}
\usepackage{bm}

% import certain symbols from MnSymbol,
% https://tex.stackexchange.com/questions/450691/create-diamond-with-a-dash-in-it/450703#450703
\begingroup\makeatletter\nfss@catcodes
\gdef\ImportFromMnSymbolaux#1#2#3{%
  \DeclareFontFamily{U}{MnSymbol#2#3}{}
  \DeclareFontShape{U}{MnSymbol#2#3}{m}{n}
    { <-6>    s*[#1] MnSymbol#25
      <6-7>   s*[#1] MnSymbol#26
      <7-8>   s*[#1] MnSymbol#27
      <8-9>   s*[#1] MnSymbol#28
      <9-10>  s*[#1] MnSymbol#29
      <10-12> s*[#1] MnSymbol#210
      <12->   s*[#1] MnSymbol#212
    }{}
  \DeclareFontShape{U}{MnSymbol#2#3}{b}{n}
    { <-6>    s*[#1] MnSymbol#2-Bold5
      <6-7>   s*[#1] MnSymbol#2-Bold6
      <7-8>   s*[#1] MnSymbol#2-Bold7
      <8-9>   s*[#1] MnSymbol#2-Bold8
      <9-10>  s*[#1] MnSymbol#2-Bold9
      <10-12> s*[#1] MnSymbol#2-Bold10
      <12->   s*[#1] MnSymbol#2-Bold12
    }{}
  \DeclareSymbolFont{MnSy#2#3}{U}{MnSymbol#2#3}{m}{n}
  \SetSymbolFont{MnSy#2#3}{bold}{U}{MnSymbol#2#3}{b}{n}
}
\endgroup
\newcommand{\ImportFromMnSymbol}[3][1]{\ImportFromMnSymbolaux{#1}{#2}{#3}}

\newcommand\DeclareMnSymbol[4]{\DeclareMathSymbol{#1}{#2}{MnSy#3}{#4}}
\newcommand\DeclareMnAccent[4]{\DeclareMathAccent{#1}{#2}{MnSy#3}{#4}}

\ImportFromMnSymbol[0.7]{C}{70}
\DeclareMnAccent{\acctriangleup}{\mathord}{C70}{73}

\begin{document}

$\acctriangleup{f}+\tilde{f}$

{\boldmath$\acctriangleup{f}+\tilde{f}$}

\end{document}

在此处输入图片描述

答案2

因此,可以使用 accents 包,它提供了一种很好的方法,可以将\smalltringleup我的问题中的 -Symbol 放置在字母上方。需要记住的两件事是:

  1. \bm{...}必须是包含的最外层命令\tilde,等等。
  2. \bm如果使用重音符号,则里面必须有一组额外的括号:(\bm{{\tilde{...}}}否则编译过程将失败)

\usepackage{accents}

    $
          \tilde{f}
    \quad \tilde{\bm{f}}
    \quad \bm{{\tilde{f}}}
    \quad \accentset{\smalltriangleup}{f}
    \quad \accentset{\smalltriangleup}{\bm{f}}
    \quad \bm{{\accentset{\smalltriangleup}{f}}}
    $

带有口音的包装

正如 campa 在我的问题下面的评论中指出的那样,剩下的两个问题之一可以通过单一选项解决,即\usepackage[single]{accents}

单一选项

相关内容