正确排版波浪符号

正确排版波浪符号

如何在 LaTeX 中正确设置波浪符号 (~)?

有一个讨论该问题在 Stack Overflow 上有很多答案。但我敢说吗?它们都很烂:

  • \textasciitilde太高,
  • \texttildelow太低了。
  • $\sim$可以进行调整以看起来或多或少可以接受:{\raise.17ex\hbox{$\scriptstyle\sim$}}-但即使那也是一种黑客行为并且使用了错误的符号。

重点是——波浪符号是确实我想使用的任何字体中的现有字形。我如何才能访问和排版字符,可以吗?无需借助于其他类似的字形,这些字形需要先使用字体大小和凸起框的巧妙组合才能放置到位?

那里必须可以直接从字体定义访问该字形。

为了演示,请看这个屏幕截图,它只是尝试显示一个类型的 C++ 析构函数T~T):

波浪符号

将其与我们在浏览器中获得的符号进行比较:~-就是我想要的。

答案1

这完全取决于你想让这个字形代表什么。

如果您想在 url 中使用它,请将\usepackage{url}(或hyperref) 添加到您的序言中,然后使用\url{http://example.com/~user}

如果您想在数学公式中使用它作为某种关系,那么请使用$a \sim b$

根据“综合符号列表”,要获得垂直居中,~您可以\texttildelow在任何字体中使用其他比 Computer Modern、txfonts 和 pxfonts 更好。例如,下面这个技巧可以排版 C++ 析构函数

\usepackage{times}
\usepackage{textcomp}

\texttildelow T

答案2

为了完整起见,这里有一个列表。

如果要排版 URL 或文件路径,请使用url(或者hyperref) 包并使用适当的命令即可完成。否则,有三种不同的情况:

  1. 如果您使用标准电脑现代字体,txfonts或者pxfonts:使用 DocBucket 的解决方法:

    \usepackage{textcomp}
    \newcommand{\textapprox}{\raisebox{0.5ex}{\texttildelow}}
    

    ...或者改用拉丁现代字体(参见下一点)。

  2. 如果你正在使用PostScript/Type1 字体通过以下包mathptmx或者lm:将字体编码设置为 T1(通过\usepackage[T1]{fontenc}) 并使用\textasciitilde

  3. 如果您通过 XeTeX 或 LuaTeX 使用 TTF 或 OTF 字体:用于\char`~插入波浪号。

答案3

这是 Computer Modern 中的一个错误。\textasciitilde是正确的字符,应该垂直居中显示。要修复它,最好的方法是使用 Latin Modern 和 T1 编码,例如


\documentclass{article}

\usepackage{lmodern}
\usepackage[T1]{fontenc}

\begin{document}
\textasciitilde T
\end{document}

这也适用于我尝试过的任何字体,例如mathpazo,,,,等等timesberasansinconsolata

编辑:重写答案以回应评论。

答案4

根据综合 LaTeX 符号列表,\texttildelow在大多数字体中产生垂直居中的“~”,但在 Computer Modern、txfonts、pxfonts 以及源自 TEX 世界的其他各种字体中产生基线导向的“~”。“因此,要制作居中的波浪线,可以使用类似

{\fontfamily{ptm}\selectfont\texttildelow}T()

(取自符号列表源代码。不同的字体可能会产生更好的结果,具体取决于文本的主字体。)

相关内容