我想将 latex 文档转换为 pdf/a 文档。latex 文档包含西里尔字母(如下例所示),无需使用包 {pdfx} 即可顺利编译。
\documentclass {amsbook}
\usepackage{amsmath}
\usepackage{mathtext}
\usepackage[T1,T2A]{fontenc}
\DeclareSymbolFont{T2Aletters}{T2A}{cmr}{m}{it}
\usepackage[utf8]{inputenc}
\begin{document}
$\CYRI^2$
\end{document}
结果如下
但是,如果要使用 pdfx,如以下示例所示
\documentclass {amsbook}
\usepackage{amsmath}
\usepackage{mathtext}
\usepackage[T1,T2A]{fontenc}
\DeclareSymbolFont{T2Aletters}{T2A}{cmr}{m}{it}
\usepackage[utf8]{inputenc}
\usepackage[a-1b]{pdfx}
\begin{document}
$\CYRI^2$
\end{document}
我收到了警告
pdfTeX warning: /usr/bin/pdflatex: fontmap entry for `dummy-space' already exists, duplicates ignored
和
LaTeX Warning: Command \CYRI invalid in math mode on input line 11.
我知道在 pdflatex 中使用西里尔字母作为 unicode 是有问题的。但是,改用 xelatex 对我来说不是一个解决方案,因为它会改变很多我不想要的格式。
pdfx 版本是 1.5.3
答案1
mathtext
在删除对符号的调用并定义正确的\MCI
(数学西里尔字母 I)符号后,我没有收到 TeX Live 2015 的警告:
\documentclass{amsbook}
\usepackage{amsmath}
\usepackage[T1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a-1b]{pdfx}
\DeclareSymbolFont{T2Aletters}{T2A}{cmr}{m}{it}
\DeclareMathSymbol{\MCI}{\mathalpha}{T2Aletters}{"C8}
\begin{document}
$\MCI^2$
\end{document}
答案2
通过pdfx (v.1.5.8)
你的例子如果您将包加载顺序更改为:
\documentclass {amsbook}
\usepackage[a-1b]{pdfx}% ---- recommended to load it early
\usepackage{amsmath}
\usepackage{mathtext}
\usepackage[T1,T2A]{fontenc}
\DeclareSymbolFont{T2Aletters}{T2A}{cmr}{m}{it}
\usepackage[utf8]{inputenc}
\begin{document}
$\CYRI^2$
\end{document}
但是当包在序言的后期加载时,它仍然会失败,并出现一组不同的错误,这pdfx
主要与使用有关mathtext.sty
。
这种由软件包顺序引起的不兼容性正是我在 的下一次更新中要解决的问题pdfx.sty
。所以非常感谢这个有用的例子。
我做了一些探索。使用 mathtext 包可能会产生问题,这与 pdfx 无关,但与 无关\usepackage[unicode]{hyperref}
。例如
\documentclass {amsbook}
\usepackage{amsmath}
\usepackage{mathtext}
\usepackage[T1,T2A]{fontenc}
\DeclareSymbolFont{T2Aletters}{T2A}{cmr}{m}{it}
\usepackage[utf8]{inputenc}
\usepackage[unicode]{hyperref}
\begin{document}
$\CYRI^2$
\end{document}
失去\CYRI
角色。该.log
文件有以下启示:
LaTeX 警告:命令 \CYRI 在输入行 9 的数学模式下无效。
和
缺少字符:字体 cmr10 中没有 È!
解决方案:加载hyperref
(或pdfx
)前 mathtext
。