目的是生成带有重音字符的 .pdf(.tex 文件混合了宏和 unicode 输入),以便可以复制粘贴 .pdf 文本。
一个例子:
\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tgpagella}
\begin{document}
Unicode input: ā ī ū ṃ ṅ ñ
Macro input: \=a \={\i} \=u \d{m} \.n \~n
\end{document}
使用 进行编译pdflatex
,上述内容将在视觉上产生所需的字符,但是当您从 .pdf 中选择并复制粘贴它们时,您会得到
Unicode input: a ̄ u m n ñ
̄ı ̄ . ̇
Macro input: a ̄ u m n ñ
编辑:
Ulrike 的回答解释pdflatex
这里正在做什么。
答案1
pdflatex 不使用“unicode 复合字符”。您使用的是 T1 编码,对于此编码中不可用的重音字符,pdflatex 使用各种方法来构建它们。例如,m 下方的点实际上是一个小表格,其中 m 在第一行,一个点在第二行:
\DeclareTextCommand{\d}{T1}[1]
{\hmode@bgroup
\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-1ex}.\hidewidth}\egroup}
理论上,您可以使用 pdflatex 获得正确的字形(如果您的字体包含它们)。实际上,这意味着很多工作。最好使用 xelatex 或 lualatex。
答案2
尝试添加\usepackage{cmap}
。或者切换到xelatex/lualatex。
答案3
这是走向胜利的道路:
安装TeX Live 2010其中有一个
luatex
和fontspec
版本可以协同工作。请按照拖船网。在 Linux 上,不要忘记更新
$PATH
!如果您已经使用包管理器安装了 TeX Live,请将新路径优先于旧路径。例如,在 的末尾~/.bashrc
,输入PATH=/usr/local/texlive/2010/bin/i386-linux:$PATH; export PATH
注销并重新登录(或者只是打开一个新终端)以便进行
$PATH
更新。
将此测试保存到test.tex
某处,然后使用
lualatex --interaction=nonstopmode test.tex
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{TeX Gyre Pagella}
\begin{document}
Unicode input: ā ī ū ṃ ṅ ñ
Macro input: \=a \={\i} \=u \d{m} \.n \~n
\end{document}
打开结果test.pdf
,然后从中复制粘贴,你会得到
Unicode input: ā ī ū ṃ ṅ ñ
Macro input: ā ī ū ṃ ṅ ñ
好的!