tex4ebook 或 tex4ht:amsart、hyperref 和“\part”冲突?

tex4ebook 或 tex4ht:amsart、hyperref 和“\part”冲突?

测试代码:

\documentclass{amsart}

\usepackage{hyperref}

\begin{document}

\part{Part1}

\section{Sec1}

\section{Sec2}

\part{Part2}

\end{document}

使用 tex4ebook 编译后,返回! Use of \n:no@part: doesn't match its definition.

我想知道如何解决这个问题。谢谢!

答案1

amsart.4ht和之间似乎存在冲突nameref.4ht。请尝试更新nameref.4ht

% nameref.4ht (2019-04-12-10:50), generated from tex4ht-4ht.tex
% Copyright 2005-2009 Eitan M. Gurari
% Copyright 2009-2019 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 2019-04-12-10:50}

   \let\NR:Type\relax
\let\ltx@label\label
\def\prf:label{{\ifx \NR:Title\:UnDef \else \NR:Title\fi}%
               {\ifx \NR:Type\relax \else \NR:Type .1\fi}{}}%
\let\NR:StartSec\:StartSec
\let\NR:no@sect\no@sect
\def\no@sect#1#2#3#4#5#6[#7]#8{\gdef\NR:Title{\a:newlabel{#7}}%
    \gdef\NR:Type{#1}%
    \NR:no@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}}
\def\:StartSec#1#2#3{%
   \gdef\NR:Title{\a:newlabel{#3}}%
   \gdef\NR:Type{#1}%
   \NR:StartSec{#1}{#2}{#3}%
}

\def\:tempc#1#2#3#4#5#6[#7]#8{%
   \gdef\NR:Title{\a:newlabel{#7}}%
   \gdef\NR:Type{#1}%
   \o:NR@sect:{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}}
\HLet\NR@sect\:tempc

\def\:tempc#1#2#3#4#5{%
   \gdef\NR:Title{\a:newlabel\ssect:ttl}%
   \gdef\NR:Type{#1}%
   \o:NR@ssect:{#1}{#2}{#3}{#4}{#5}%
}
\HLet\NR@ssect\:tempc

\def\:tempc[#1]#2{%
   \gdef\NR:Title{\a:newlabel{#1}}%
   \gdef\NR:Type{part}%
   \o:no@part:[{#1}]{#2}}

% this definition clashes with asmart and amsproc classes, so we
% need to skip if these are active
\@ifundefined{[email protected]}{%
\@ifundefined{[email protected]}{%
\HLet\no@part\:tempc
}{}}{}


\def\:tempc#1{%
   \gdef\NR:Title{\a:newlabel{#1}}%
   \gdef\NR:Type{part}%
   \o:no@spart:{#1}}
\HLet\no@spart\:tempc

\def\:tempc[#1]#2{%
   \gdef\NR:Title{\a:newlabel{#1}}%
   \gdef\NR:Type{chapter}%
   \o:NR@chapter:[{#1}]{#2}}
\HLet\NR@chapter\:tempc

\def\:tempc#1{%
   \gdef\NR:Title{\a:newlabel\sch:ttl}%
   \o:NR@schapter:{#1}%
   \gdef\NR:Type{chapter}%
}
\HLet\NR@schapter\:tempc

\let\o:NR@@caption\@caption
%
%
% Keith Andrews <[email protected]> reported that \@captype as
% \NR:Type threw an undefined control sequence error. I think
% \@currenvir is safe, there is nothing special about \@captype.
%
\long\def\@caption#1[#2]{%
    \gdef\NR:Type{\@currenvir}%
    \gdef\NR:Title{\a:newlabel{#2}}%
   \o:NR@@caption{#1}[{#2}]%
}

\let\o:NRorg@opargbegintheorem\@opargbegintheorem
  \def\@opargbegintheorem#1#2#3{%
    \gdef\NR:Title{\a:newlabel{#3}}%
    \gdef\NR:Type{\@currenvir}%
    \NR@gettitle{#3}%
    \defineautorefname{\@currenvir}{#1}%
    \o:NRorg@opargbegintheorem{#1}{#2}{#3}%
  }%

\let\o:NRorg@begintheorem\@begintheorem
  \def\@begintheorem#1#2{%
    \gdef\NR:Title{\a:newlabel{#1 #2}}%
    \gdef\NR:Type{\@currenvir}%
    \defineautorefname{\@currenvir}{#1}%
    \NR@gettitle{}%
    \o:NRorg@begintheorem{#1}{#2}%
  }%

\AtBeginDocument{%
  \@ifpackageloaded{listings}{%
      \def\:tempc#1{%
         \gdef\NR:Title{\a:newlabel{listing}}%
         \gdef\NR:Type{lstlisting}%
         \o:NROrg@lst@MakeCaption:{#1}%
         \gdef\@currentlabelname{listing}}
      \HLet\NROrg@lst@MakeCaption\:tempc
  }{}%
  % bug [348]
  \def\:tempams{%
    \gdef\NR:Title{\a:newlabel{equation}}%
    \gdef\NR:Type{equation}%
    \gdef\@currentlabelname{equation}%
  }
  \@ifpackageloaded{amsmath}{%
     \Configure{@begin}{align}{\:tempams}
     \Configure{@begin}{multline}{\:tempams}
     \Configure{@begin}{equation}{\:tempams}
     \Configure{@begin}{boxed}{\:tempams}
     \Configure{@begin}{equations}{\:tempams}
     \Configure{@begin}{equation}{\:tempams}
     \Configure{@begin}{gather*}{\:tempams}
     \Configure{@begin}{gather}{\:tempams}
     \Configure{@begin}{genfrac}{\:tempams}
     \Configure{@begin}{measure@}{\:tempams}
     \Configure{@begin}{multline*}{\:tempams}
     \Configure{@begin}{multline}{\:tempams}
     \Configure{@begin}{overset}{\:tempams}
     \Configure{@begin}{smallmatrix}{\:tempams}
     \Configure{@begin}{split}{\:tempams}
     \Configure{@begin}{subarray}{\:tempams}
     \Configure{@begin}{substack}{\:tempams}
     \Configure{@begin}{underset}{\:tempams}
     \Configure{@begin}{xleftarrow}{\:tempams}
     \Configure{@begin}{xrightarrow}{\:tempams}
  }{
     \Configure{@begin}{equation}{\:tempams}
}

}
\let\T:ref=\::ref
\def\::ref{\protect\T@ref}
\def\T@ref#1{%
  \@safe@activestrue
  \let\::ref \T:ref
  \expandafter\@setref\csname r@#1\endcsname\@firstoffive{#1}%
  \def\::ref{\protect\T@ref}%
  \@safe@activesfalse
}

\gdef\defineautorefname#1#2{%
    \expandafter\gdef\csname #1autorefname\endcsname{#2}}
\defineautorefname{theorem}{Theorem}

\Configure{newlabel}
   {\csname cur:th\endcsname \csname :currentlabel\endcsname}
   {\string\csname\space :autoref\string\endcsname
     {\NR:Type}#1}

\ifx \@currentlabelname\:UnDef
   \let\@currentlabelname\empty
\fi

\pend:defIII\@setref{\edef\RefArg{##3}}
\append:defIII\@setref{\let\:autoref\:gobble}
\let\:autoref\:gobble


\Hinput{nameref}
\endinput

重要的部分是:

\@ifundefined{[email protected]}{% 
\@ifundefined{[email protected]}{%
\HLet\no@part\:tempc
}{}}{} 

\part它禁用来自和类nameref.4ht的补丁。amsartamsproc

在此处输入图片描述

相关内容