如何在 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
) 包并使用适当的命令即可完成。否则,有三种不同的情况:
如果您使用标准电脑现代字体,
txfonts
或者pxfonts
:使用 DocBucket 的解决方法:\usepackage{textcomp} \newcommand{\textapprox}{\raisebox{0.5ex}{\texttildelow}}
...或者改用拉丁现代字体(参见下一点)。
如果你正在使用PostScript/Type1 字体通过以下包
mathptmx
或者lm
:将字体编码设置为 T1(通过\usepackage[T1]{fontenc}
) 并使用\textasciitilde
。- 如果您通过 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
,,,,等等times
。berasans
inconsolata
编辑:重写答案以回应评论。
答案4
根据综合 LaTeX 符号列表,\texttildelow
“在大多数字体中产生垂直居中的“~”,但在 Computer Modern、txfonts、pxfonts 以及源自 TEX 世界的其他各种字体中产生基线导向的“~”。“因此,要制作居中的波浪线,可以使用类似
{\fontfamily{ptm}\selectfont\texttildelow}T()
(取自符号列表源代码。不同的字体可能会产生更好的结果,具体取决于文本的主字体。)