输出 ASCII 波浪符号

输出 ASCII 波浪符号

互联网上充斥着关于制作一篇好文章的问题和答案看着波浪号。但我的目标是生成输出(比如说 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 位置的字符,它是波浪号重音符,所以̃不是,~这就是为什么\~{}在什么都没有的地方放波浪号重音符是一种近似值,也是\textasciitildeOT1 中的定义

您可以使用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     &lsqb; &lbrack; \lbrack [
  U+02dc SMALL TILDE     &tilde; &DiacriticalTilde; \texttildelow
  U+005d RIGHT SQUARE BRACKET     &rsqb; &rbrack; \rbrack ]
  U+0020 SPACE     \space
  U+005b LEFT SQUARE BRACKET     &lsqb; &lbrack; \lbrack [
  U+007e TILDE     \textasciitilde
  U+005d RIGHT SQUARE BRACKET     &rsqb; &rbrack; \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.

我不记得我从哪里得到了这个宏定义。好几年前的事了。

相关内容