互联网上充斥着关于制作一篇好文章的问题和答案看着波浪号。但我的目标是生成输出(比如说 PDF),然后可以将其复制粘贴到另一个应用程序中,并获得与打字键盘上的 ~ 字符。我不关心它的外观,我只关心它是否可以复制粘贴。
这是不是关于如何显示波浪符号的问题。\textasciitilde
、\~{}
和$\sim$
都这样做。但是,前两个从数学运算符表中生成 (UTF-8)CC83 = U+0303 =“组合波浪符号”,最后一个生成 (UTF-8)E288BC = U+223C。(通过粘贴到 emacs 并使用 hexl-mode 确定。)
似乎应该有一个与字体无关的解决方案,因为 ~ 是 ASCII(具体来说是 U+7E),因此应该存在于每种字体中。 答案可能与字体(编码)有关,因为 ~ 不是一般文本编码的必需字形(LaTeX 字体编码第 3.1 节)。但是我发现的所有 (La)TeX 代码(包括url
包)都会生成更高的 UNICODE 字符,因此如果 ASCII 字符不可能出现,那将是令人惊讶的。
答案1
一般认为使用 ascii 就应该可以工作的说法是错误的
1 < 2
在 OT1 中有一个更清晰的例子。对于~
OT1 中 7E 位置的字符,它是波浪号重音符,所以̃
不是,~
这就是为什么\~{}
在什么都没有的地方放波浪号重音符是一种近似值,也是\textasciitilde
OT1 中的定义
您可以使用accsupp
包来提供真正的~
剪切和粘贴视觉效果\~{}
\documentclass{article}
\usepackage{accsupp}
\begin{document}
[\textasciitilde] [\BeginAccSupp{method=hex,unicode,ActualText=007E}\textasciitilde\EndAccSupp{}]
\end{document}
使
如果我剪切并粘贴到
https://w3c.github.io/xml-entities/unicode-names.html?%5B%CB%9C%5D%20%5B~%5D%0A
我明白了
Result:
U+005b LEFT SQUARE BRACKET [ [ \lbrack [
U+02dc SMALL TILDE ˜ ˜ \texttildelow
U+005d RIGHT SQUARE BRACKET ] ] \rbrack ]
U+0020 SPACE \space
U+005b LEFT SQUARE BRACKET [ [ \lbrack [
U+007e TILDE \textasciitilde
U+005d RIGHT SQUARE BRACKET ] ] \rbrack ]
显示第二个是~
或者更好的是(通过 Ulrike)使用\pdfglyphtounicode
\documentclass{article}
\pdfglyphtounicode{tilde}{007E}
\begin{document}
[\textasciitilde]
\end{document}
注意这只是 7 位 OT1 编码中的问题,如果你使用任何合理的编码,如 pdflatex 中的 T1 或 lualatex 中的 TU(Unicode),则\textasciitilde
默认情况下会起作用
答案2
如果\~{}
不起作用,请尝试这个。对我有用:
在序言中,
\makeatletter
\edef\realtilde{\expandafter\@gobble\string\~}
\makeatother
在文档正文中,示例:
Hello\realtilde World % Prints without space.
Hello \realtilde\space World % Prints with both spaces.
我不记得我从哪里得到了这个宏定义。好几年前的事了。