可以从 PDF 中复制粘贴的角度符号

可以从 PDF 中复制粘贴的角度符号

我正在寻找一种使用左、右窄角符号 (〈 〉,Unicode #3008,#3009) 的方法,以便它们在从 PDF 复制和粘贴时不会改变。

doc例如,包 for和其他格式化宏使用这些符号\meta{...}来指示参数的内容,例如: \command[〈options〉]{〈filename〉}将用 写成|\command|\oarg{options}\marg{filename}。此包使用\langle\rangle数学符号。这样做的问题是,如果从生成的 PDF 中复制此代码,则符号将更改为hi,例如:\command[hoptionsi]{hfilenamei}

Detexify 现在将我指向包的正反\textlangle两面。这些角度分别复制到 ASCII 角度和,这已经好多了,但我更喜欢正确的窄角度。\textrangletextcomp<>

我如何插入这些角度以便可以从 PDF 中正确复制?我尝试[utf8]{inputenc}在 VIM 中手动使用并插入它们作为 Unicode 符号(分别为CTRL+ Vu 3008 或 3009),但出现错误,提示这些符号未设置为此用途。我的类/包需要这个ydoc,它是和的替代方案,doc并且ltxdoc希望尽可能避免字体和编码的麻烦。这应该适用于 PDFLaTeX,而不仅适用于 XeLaTeX 或 LuaLaTeX。

答案1

\usepackage{cmap}

这两个符号可能与 U+27E8 数学左尖括号和 U+27E9 数学右尖括号相关联。如果您想直接输入它们,可以按照以下方法操作:

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{cmap}
\usepackage{textcomp}
\usepackage{newunicodechar}
\newunicodechar{〈}{$\langle$} % U+27E8
\newunicodechar{〉}{$\rangle$} % U+27E9
\begin{document}
\textlangle\textrangle

〈〉
\end{document}

另一个选择可能是

\newunicodechar{〈}{\textlangle} % U+2329
\newunicodechar{〉}{\textrangle} % U+232A

\DeclareUnicodeCharacter当然,您也可以直接使用

\DeclareUnicodeCharacter{2329}{$\langle$}
\DeclareUnicodeCharacter{232A}{$\rangle$}

代替\newunicodechar

这应该允许从 PDF 查看器复制和粘贴符号,但似乎复制字符的代码取决于查看器何时\textlangle使用\textrangle。:(

感谢 Martin Scharrer 对答案提出的改进建议。

答案2

您可以使用 glyphtounicode。与 cmap 不同,它也可以与虚拟字体一起使用。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\input{glyphtounicode.tex}
\pdfgentounicode=1
\pdfglyphtounicode{less}{3008}
\pdfglyphtounicode{greater}{3009}

\begin{document}

< >

\end{document}

如果你使用 pdflatex 进行编译,你可以将括号复制到记事本中。这样可以正常工作,但在 ascii 编辑器(例如 winedt)中结果不正确。

编辑。我​​刚想起来:另一种可能性是accsupp。它适用于 pdftex、luatex + xetex:

\documentclass{article}
\usepackage{accsupp}
\begin{document}
\BeginAccSupp{method=hex,unicode,ActualText=3008}%
angleleft%
\EndAccSupp{}%

\end{document}

相关内容