使用 Times 字型時,使 pdflatex 輸出為 UTF-8 可複製貼上

使用 Times 字型時,使 pdflatex 輸出為 UTF-8 可複製貼上

我想用Adobe Times Roman 字體或其等效版本(如 URW Nimbus Roman 和基於它的字體),編譯為pdflatexPDF - 最初的目的是透過使用內建字體使 PDF 更小。相關文件為波蘭語,並使用 UTF-8 輸入編碼。我希望 PDF 是可複製貼上結果為 UTF-8,適用於羅馬系列和打字機系列(用於代碼列表)。

不幸的是,這兩個解決方案都沒有使 pdflatex 輸出可複製和貼上的好方法是什麼?有效,至少不能作為\usepackage{times}切換到類似羅馬字體的方法。

舉一個範例文件:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{times}
%\usepackage{lmodern}

\input glyphtounicode
\pdfgentounicode=1
%\usepackage{cmap}

\begin{document}
\noindent
\rmfamily
rmfamily: zażółć gęsią jaźń \\
\ttfamily
ttfamily: zażółć gęsią jaźń \\
\end{document}

結果並不像下面那樣是一堆無法辨識的混亂符號無法從我的 PDF 複製貼上。知道為什麼嗎?,但是一些波蘭語字符以一種奇怪的方式複製,就像預先組合的一樣:基本字符和重音(裝飾)分開......並且它們中的任何一個都可以超出文本流。

對於範例文檔,pdftotext結果(以及複製貼上結果)為:

˙ ce ˛ z´
rmfamily: zazół´ g˛ sia ja´ n
ttfamily: za˙ół´ g˛sia ja´´
zce ˛

1

如果我從 切換timeslmodern(拉丁現代字體),大概在切換到 時cm-super我會得到正確的結果:

rmfamily: zażółć gęsią jaźń
ttfamily: zażółć gęsią jaźń

1

答案1

您可以使用 Times 字體TeX Gyre Termes

\documentclass{article}
\usepackage{tgtermes}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\input glyphtounicode
\pdfgentounicode=1

\begin{document}
\noindent
\rmfamily
rmfamily: zażółć gęsią jaźń \\
\ttfamily
ttfamily: zażółć gęsią jaźń \\
\end{document}

在此輸入影像描述

複製並貼上給出.pdf以下結果:

rmfamily: zażółć gęsią jaźń
ttfamily: zażółć gęsią jaźń

答案2

添加到斯韋雷的回答使用 TeX Gyre Termes (tgtermes包):它不適用於我的\ttfamily/ \texttt{}ie 打字機字體。我從pdftotext(版本0.12.4)得到以下內容:

rmfamily: zażółć gęsią jaźń
ttfamily: za»óªм g si¡ ja «

我瀏覽過LaTeX 字型目錄並找到了以下解決方案—使用TXTT字體對於 ttfamily 來說\renewcommand*\ttdefault{txtt}:

\documentclass{article}

\usepackage{tgtermes}
\renewcommand*\ttdefault{txtt}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\input glyphtounicode
\pdfgentounicode=1

\begin{document}
\noindent
\rmfamily
rmfamily: zażółć gęsią jaźń \\
\ttfamily
ttfamily: zażółć gęsią jaźń \\
\end{document}

相關內容