tex4ebook、西班牙语 babel 和 OpfMetadata 配置

tex4ebook、西班牙语 babel 和 OpfMetadata 配置

给定一个名为tst.tex

\documentclass{book}

\usepackage[spanish,es-noquoting]{babel} % https://tex.stackexchange.com/questions/157095/spanish-babel-and-chemformula-package
% \usepackage[english]{babel}
% \usepackage[french]{babel}
% \usepackage[german]{babel}

\begin{document}

\title{ttt}

\tableofcontents
\part{ppp}

\end{document}

以及一个名为tst.cfg

\Preamble{xhtml}
\begin{document}
\Configure{OpfMetadata}{\EndP\HCode{<dc:publisher>puuu</dc:publisher>}}
\EndPreamble

和 tex4ebook v0.3b 与 pdfTeX,版本 3.14159265-2.6-1.40.21(TeX Live 2020)返回错误消息

tex4ebook -c tst.cfg tst.tex
[STATUS]  tex4ebook: Conversion started
[STATUS]  tex4ebook: Input file: tst.tex
[ERROR]   htlatex: Compilation errors in the htlatex run
[ERROR]   htlatex: Filename     Line    Message
[ERROR]   htlatex: ./tst.tex    13       Extra \fi.
[ERROR]   htlatex: ./tst.4ct    3        Extra \endcsname.
[ERROR]   htlatex: Compilation errors in the htlatex run
[ERROR]   htlatex: Filename     Line    Message
[ERROR]   htlatex: ./tst.tex    13       Extra \fi.
[ERROR]   htlatex: ./tst.4ct    3        Extra \endcsname.
[ERROR]   htlatex: Compilation errors in the htlatex run
[ERROR]   htlatex: Filename     Line    Message
[ERROR]   htlatex: ./tst.tex    13       Extra \fi.
[ERROR]   htlatex: ./tst.4ct    3        Extra \endcsname.
HTML Tidy for Linux version 5.4.0
[STATUS]  tex4ebook: Conversion finished

如何避免此错误?请注意,其他(注释掉的)babel 语言不会产生此类错误,只有西班牙语会产生此类错误。删除\tableofcontents也会删除该错误。

答案1

有两个问题。错误是由于西班牙语 Babel 更改了~活动字符的定义而引起的。TeX4ht\part将其用于目录中的命令。我们可以通过稍微修改\tocpart宏版本来修复它。TeX4ht 使用此宏在目录中打印部分条目。将以下代码保存为myconfig.cfg

\Preamble{xhtml}
\def\tocpart#1#2#3{\par\HCode{<span class="partToc" \a:LRdir>}\if !#1!\else  #1\ \fi #2\HCode{</span>}\par}%
\Configure{OpfMetadata}{\EndP\HCode{<dc:publisher>puuu</dc:publisher>}}
\begin{document}
\EndPreamble

还有其他问题,重音字符,例如 ,í会打印为í'I。可以使用以下版本的 修复此问题spanish.4ht

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% spanish.4ht (2015-02-17-15:57), generated from tex4ht-4ht.tex
% Copyright (C) 2000-2009 Eitan M. Gurari
% Copyright 2009-2015 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
% is the TeX4ht Project <http://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
\immediate\write-1{version 2015-02-17-15:57}

  \expandafter\def\csname spanish:"shorthand\endcsname
               #1{\leavevmode \hbox{\csname a:spanish"#1\endcsname}}
\edef\:temp{\expandafter\noexpand
               \csname spanish:"shorthand\endcsname\space a}
\expandafter\HLet\csname spanish@sh@\string"@a@\endcsname=\:temp
\NewConfigure{spanish"a}{1}
\edef\:temp{\expandafter\noexpand
               \csname spanish:"shorthand\endcsname\space o}
\expandafter\HLet\csname spanish@sh@\string"@o@\endcsname=\:temp
\NewConfigure{spanish"o}{1}
\edef\:temp{\expandafter\noexpand
               \csname spanish:"shorthand\endcsname\space e}
\expandafter\HLet\csname spanish@sh@\string"@e@\endcsname=\:temp
\NewConfigure{spanish"e}{1}
\edef\:temp{\expandafter\noexpand
               \csname spanish:"shorthand\endcsname\space A}
\expandafter\HLet\csname spanish@sh@\string"@A@\endcsname=\:temp
\NewConfigure{spanish"A}{1}
\edef\:temp{\expandafter\noexpand
               \csname spanish:"shorthand\endcsname\space O}
\expandafter\HLet\csname spanish@sh@\string"@O@\endcsname=\:temp
\NewConfigure{spanish"O}{1}
\edef\:temp{\expandafter\noexpand
               \csname spanish:"shorthand\endcsname\space E}
\expandafter\HLet\csname spanish@sh@\string"@E@\endcsname=\:temp
\NewConfigure{spanish"E}{1}
\edef\:tempc{\expandafter\noexpand
               \csname spanish:'shorthand\endcsname\space i}
\expandafter\HLet\csname spanish@sh@\string'@i@\endcsname=\:tempc
\NewConfigure{spanish'i}{1}
\def\:tempc{\csname a:spanish'i\endcsname}
\expandafter\HLet\csname \string\OT1\string\'-i\endcsname\:tempc
\AtBeginDocument{
   \def\:tempc{\a:guillemotright}
   \HLet\guillemotright\:tempc
   \def\:tempc{\a:guillemotleft}
   \HLet\guillemotleft\:tempc
}
\NewConfigure{guillemotright}{1}
\Configure{guillemotright}{\o:guillemotright:}
\NewConfigure{guillemotleft}{1}
\Configure{guillemotleft}{\o:guillemotright:}
\let\:tempc\es@accent
%\pend:defIII\:tempc{%
\def\:tempc#1#2#3{%
    \expandafter\:text@composite@x
    \csname OT1\string#1\endcsname#3\@empty}
\HLet\es@accent\:tempc
\def\:text@composite@x#1#2{%
   \expandafter\ifx \csname \string#1-\string#2\endcsname\relax
      \expandafter\ifx \csname \string#1- :\endcsname\relax
          \expandafter\expandafter\expandafter\:gobble
      \else
          \expandafter\expandafter
          \expandafter\expandafter
          \expandafter\expandafter
          \csname \string#1- :\endcsname
      \fi
   \else \expandafter\:gobble
   \fi
   {#2}%
   }
\def\chk:acc#1#2#3{%
   \if !#2!\expandafter\:gobbleIII \else
       \if \noexpand#1\noexpand#2%
          \a:es@accents#3\b:es@accents
          \expandafter\expandafter\expandafter\gob:accc
       \else
          \expandafter\expandafter\expandafter\chk:acc
       \fi
   \fi
   {#1}%
}
\def\gob:accc#1{\gob:acc}
\def\gob:acc#1#2{\if !#2!\expandafter\gobe:acc
   \else \expandafter\gob:acc\fi
}
\expandafter\ifx\csname documentclass\endcsname\relax\then
   \def\gobe:acc#1\@text@composite#2\@text@composite#3{}
\else
   \let\gobe:acc=\:gobble
\fi
\NewConfigure{es@accent}[2]{\expandafter
   \def\csname #1- :\endcsname##1{\chk:acc{##1}#2{}{}}}
\NewConfigure{es@accents}{2}
\AtBeginDocument{%
   \def\bbl@umlauta{\ifx \EndPicture \:UnDef \expandafter \n:bbl@umlauta:
                    \else \expandafter \o:bbl@umlauta: \fi }%
}

\Hinput{spanish}
\endinput

我更新了 TeX4ht 源,因此这些修复应该只是暂时的,直到 TeX 发行版更新。

然后应该可以正确创建 Epub 文件:

在此处输入图片描述

相关内容