正确使用 cmap 和 mmap

正确使用 cmap 和 mmap

我很好奇

  • \usepackage{cmap}
  • \usepackage[resetfonts]{cmap}
  • \usepackage{mmap}(= \usepackage[useTeX]{mmap}
  • \usepackage[noTeX]{mmap}

它们究竟有什么区别?(我不熟悉(La)TeX 内部结构,因此初学者的解释将非常有帮助。)如果这很重要:我正在使用\usepackage[T3,T1]{fontenc}( -packageT3所必需的tipa),这对我来说很重要(但对于这个问题的完全一般答案可能并不重要)。

((此外,我假设每个命令都需要加载正在加载包fixltx2e但是正在加载软件包timesfontenc。对吗?))

更新: 起始代码很棒。我取消了 tipa 行的注释,将文件保存为 UTF-8(并将输入编码行修改为\usepackage[utf8]{inputenc},并尝试了所有不同的 cmap/mmap 选项。但是,我没有看到从输出 pdf 文件粘贴的文本有什么不同(可能是因为 MWE 使用虚拟字体(默认情况下?)?)。理想情况下,也许有人可以帮忙(我们俩都尝试了很多次)找到一个最小示例,该示例显示五种不同的输出粘贴行为,唯一的区别是没有加载 cmap/mmap 或 4 个 cmap/mmap 选项之一。理想情况下,该示例还会指定保存​​文件的编码以使其工作(记住不要对 UTF-8 使用 BOM;更重要的是,我不知道所有输入编码是否都会导致相同的行为(假设在输入编码中正确转义重音字符,但不提供特定字符))。

答案1

这个包的mmap功能比 稍微多一点cmap,它还可以用于 pdf 中的数学符号。

因此,如果您的 pdf 不使用数学,请使用\usepackage{cmap}。如果您在使用现代计算机时遇到连字符问题,请\usepackage[resetfonts]{cmap}使用。使用数学符号\usepackage{mmap}。如果您仍然有问题,请使用\usepackage[noTeX]{mmap}

不同之处在于:

  • \usepackage{cmap}:接受预加载的字体,无需重新加载。
  • \usepackage[resetfonts]{cmap}:正如您在 cmap 的 README 中所读到的,这会强制重新加载预加载的字体(Computer Modern)。
  • \usepackage[useTeX]{mmap}并且\usepackage{mmap}:完成 cmap 所做的所有操作,另外还纠正了 pdf 中的数学符号;使用新的 -m.cmap 文件(“使用 ascii 字符串作为宏名”)。
  • \usepackage[noTeX]{mmap}:完成 cmap 的所有功能,此外还纠正 pdf 中的数学符号;使用 cmap 文件(unicode)。

cmap先加载或mmap,然后加载fontencbabel

的文档fixltx2e只说“在序言中加载”。我在之后加载它时没有遇到任何问题fontencbabel并且使用了字体。

要进行自己的实验,请使用以下 MWE:

\listfiles                      % shows used files
\documentclass[12pt]{scrartcl}
%\usepackage{cmap}              % pure T1 fonts 
%\usepackage[resetfonts]{cmap}  % pure T1 fonts, reset CM
%\usepackage{mmap}              % cmap + mathematics (ASCII)
%\usepackage[noTeX]{mmap}       % cmap + mathematics (Unicode)

 \usepackage[Latin9]{inputenc}  % or utf-8
 \usepackage[T1]{fontenc}       % font encription 
%\usepackage[T3,T1]{fontenc}    % T3 for package tipa
%\usepackage{tipa}              % Phonetic alphabet
 \usepackage[ngerman]{babel}    % neue deutsche Rechtschreibung

%\usepackage{lmodern}           % Latin Modern
%\usepackage{tgpagella}         % has no virtual fonts
%\usepackage[osf]{mathpazo}     % Minuskelziffern okay

%\usepackage{libertine}         % Libertine Legacy (with virtual fonts)
 \usepackage[osf]{libertine}    % mit Medivalziffern bzw. Minuskelziffern

\newcommand*{\III}{\libertineGlyph{Threeroman}}
\newcommand*{\IV}{\libertineGlyph{Fourroman}}


\begin{document}

Römische Zahlen: \III, \IV.

\textsc{Ligaturen}: auffliegen auffinden finden Auflage Schifffahrt.

\textsc{Korrekt}: auf\/fliegen auf\/finden finden Auf\/lage Schiff\/fahrt.

Ziffern: 0123456789.

Donau Donaudampfschiff Donaudampfschifffahrt Donaudampfschifffahrtskapitän 
Donaudampfschifffahrtskapitän 
Donaudampfschifffahrtskapitän Donaudampfschifffahrtskapitän 
Donaudampfschifffahrtskapitän Donaudampfschifffahrtskapitän

%\textipa{[\!b] [\:r] [\;B]}

\end{document}

设置或删除注释符号进行测试cmap,以及mmap带有或不带有fontenc不同的字体。

顺便说一句:“Donaudampfschifffahrtskapitän”是一个德语单词,最好用连字符连接。

相关内容