运行 tex4ht 时长表显示错误

运行 tex4ht 时长表显示错误

运行 tex4ht 时长表显示以下错误,但在正常的 latex 编译中运行。请建议如何在 TeX4HT 中纠正此错误?

我正在浏览make4ht.exe -l -u -a debug filename.texTeXlive 2022

在此处输入图片描述

梅威瑟:

    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{longtable}
    \begin{document}
    
    Long table
    
    
    \begin{longtable}{|c|c|c|c|}
    \caption{A simple longtable example}\\
    \hline
    \textbf{First entry} & \textbf{Second entry} & \textbf{Third entry} & \textbf{Fourth entry} \\
    \hline
    \endfirsthead
    \multicolumn{4}{c}%
    {\tablename\ \thetable\ -- \textit{Continued from previous page}} \\
    \hline
    \textbf{First entry} & \textbf{Second entry} & \textbf{Third entry} & \textbf{Fourth entry} \\
    \hline
    \endhead
    \hline \multicolumn{4}{r}{\textit{Continued on next page}} \\
    \endfoot
    \hline
    \endlastfoot
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
    \end{longtable}
    
    \end{document}

答案1

看来您的发行版可能比较旧。我在过去两年中修复了 Longtable 的一些问题,因此您的文档可以使用最新的 TeX Live 正确编译。最好更新发行版。

同时,您可以尝试当前版本是否longtable.4ht修复了该问题(也可能没有修复,因为错误也可能是由其他过时的配置文件引起的):

% longtable.4ht (2023-04-10-13:46), generated from tex4ht-4ht.tex
% Copyright 1997-2009 Eitan M. Gurari
% Copyright 2009-2023 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 2023-04-10-13:46}

   \def\:tempc[#1]#2{%
  \gHAdvance\float:cnt  1
\gHAssign\capt:cnt0
\hbox{\def\flt:anchor{}\get:cptg}%
%
  \def\Clr{#2}\a:VBorder
\HAssign\ar:cnt0
\let\HAlign\empty
%
\def\aa:longtable{%
   \gdef\aa:longtable{\let\HRow\lt:sv
       \HAdvance\HRow by 1 \global\let\:MkHalign:\lt:MkHalign:}%
   \global\setbox\LT:box\vbox{\a:longtable}%
   \global\let\lt:MkHalign:\:MkHalign:}%
\def\bb:longtable{%
   \ifHCond \global\let\bb:longtable\empty
      \global\setbox\LT:ebox=\vbox{{\ht:everypar{}\leavevmode}\b:longtable}%
      \global\HCondfalse
   \fi}
%
  \refstepcounter{table}\stepcounter{LT@tables}%
  \if l#1%
    \LTleft\z@ \LTright\fill
  \else\if r#1%
    \LTleft\fill \LTright\z@
  \else\if c#1%
    \LTleft\fill \LTright\fill
  \fi\fi\fi
  \let\LT@mcol\multicolumn
  \let\LT@@tabarray\@tabarray
  \let\LT@@hl\hline
  \def\@tabarray{%
    \let\hline\LT@@hl
    \LT@@tabarray}%
  \let\\\LT@tabularcr\let\tabularnewline\\%
  \let\newpage\empty
\let\pagebreak\empty
\let\nopagebreak\empty
%
  \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
  \@tempdima\ht\strutbox
  \let\@endpbox\LT@endpbox
  \ifx\extrarowheight\@undefined
    \let\@acol\@tabacol
    \let\@classz\@tabclassz \let\@classiv\@tabclassiv
    \def\@startpbox{\vtop\LT@startpbox}%
    \let\@@startpbox\@startpbox
    \let\@@endpbox\@endpbox
    \let\LT@LL@FM@cr\@tabularcr
  \else
    \advance\@tempdima\extrarowheight
    \col@sep\tabcolsep
    \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
  \fi
  \setbox\@arstrutbox\hbox{}%
  \let\@sharp##\let\protect\relax
   \begingroup
    \@mkpream{#2}%
    \xdef\LT@bchunk{%
       \global\advance\c@LT@chunks\@ne
       \global\LT@rows\z@\setbox\z@\vbox\bgroup
       \LT@setprevdepth
       \everycr{}\tabskip\LTleft\noexpand\MkHalign\noexpand\@sharp
   {\tabskip\z@ \@arstrut \@preamble \tabskip\LTright}%
}%
       \tmp:cnt=0
\global\let\:tempa\empty
\loop\ifnum \ar:cnt>\tmp:cnt
   \advance\tmp:cnt by 1
   \expandafter\ifx \csname @testpach \the\tmp:cnt\endcsname\relax
   \else
      \xdef\:tempa{%
          \:tempa
          \def \expandafter\noexpand
             \csname @testpach \the\tmp:cnt\endcsname{\csname @testpach
             \the\tmp:cnt\endcsname}}%
      \expandafter\let\csname @testpach \the\tmp:cnt\endcsname\relax
   \fi
\repeat
\aftergroup\:tempa
\xdef\:temp{%
   \def\noexpand\HAlign{\HAlign}%
   \def\noexpand\ar:cnt{\ar:cnt}}\aftergroup\:temp
%
  \endgroup
  \LT@cols\ar:cnt
%
  \LT@make@row
  \m@th\let\par\@empty
  \everycr{}\lineskip\z@\baselineskip\z@
  \ifx \EndPicture\:UnDef
     \SaveMkHalignConfig \ifx \recall:ar\:UnDef
   \edef\recall:ar{%
      \noexpand\ifx \noexpand\EndPicture\noexpand\:UnDef \noexpand\else
         \arrayrulewidth\the\arrayrulewidth
         \doublerulesep\the\doublerulesep
         \arraycolsep\the\arraycolsep
         \tabcolsep\the\tabcolsep
      \noexpand\fi }%
\fi
\arrayrulewidth\z@  \doublerulesep\z@
\arraycolsep\z@     \tabcolsep\z@
\Configure{MkHalign}
  \aa:longtable
  {\bb:longtable \ProperTrTrue}
  {\a:putHBorder\InitHBorder \ifProperTr{\c:longtable}}
  {\ifProperTr{\d:longtable}\a:putHBorder\InitHBorder}%
  {\ifProperTr{\e:longtable}\RecallMkHalignConfig\recall:ar}
  {\ifProperTr{\f:longtable}}
%
     \let\@sharp\relax
  \else \let\@sharp##\fi
  \LT@bchunk}
\HLet\LT@array\:tempc
\def\:tempc{%
  \crcr\LT@save@row\cr
  \ifx \EndPicture\:UnDef \EndMkHalign\else \egroup\fi
%
  \global\setbox\@ne\lastbox    \unskip
  \egroup}
\HLet\LT@echunk\:tempc
\let\:tempc\LT@startpbox
\append:defI\:tempc{\everypar{\HtmlPar}\a:longtableparbox}%
\HLet\LT@startpbox\:tempc
\NewConfigure{longtableparbox}{1}
\NewConfigure{longtable}{6}
\csname newbox\endcsname\LT:box
\csname newbox\endcsname\LT:ebox
\def\:tempc{%
  \ifvoid\LT@head\else
     \ifvoid\LT@firsthead
        \global\setbox\LT@firsthead=\hbox{\box\LT@head}%
     \else
        \global\setbox\tmp:bx=\hbox{\box\LT@head}%
  \fi\fi%
  \box\LT:box%
  \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
  \output{\LT@output}
}
\HLet\LT@start\:tempc
\let\:tempc\endlongtable
\append:def\:tempc{\box\LT:ebox}
\pend:def\:tempc{\global\HCondtrue}
\HLet\endlongtable\:tempc
\let\:tempc\LT@ntabularcr
\pend:def\:tempc{\global\let\lt:sv\HRow}
\HLet\LT@ntabularcr\:tempc
\let\:tempc\LT@end@hd@ft
\pend:defI\:tempc{\global\let\lt:sv\HRow}
\HLet\LT@end@hd@ft\:tempc
%\def\:tempc{\global\let\lt:sv\HRow}
%\HLet\LT@kill\:tempc
\def\LT@rebox#1\bgroup{%
  #1\bgroup
  \unskip
}
\let\:tempc\LT@kill
\pend:def\:tempc{\global\let\lt:sv\HRow}
\HLet\LT@kill\:tempc
\let\LT:argtabularcr\LT@argtabularcr
\def\:tempc{\global\let\lt:sv\HRow  \LT:argtabularcr}
\HLet\LT@argtabularcr\:tempc
\ifx \tmp:bx\:UnDef \csname newbox\endcsname \tmp:bx \fi
%\def\:tempc{\LT@end@hd@ft\tmp:bx}
%\HLet\endhead\:tempc
% \def\:tempc{\LT@end@hd@ft\tmp:bx}
% \HLet\endfoot\:tempc
\pend:def\LT@output{%
  \ifvoid\LT@foot\else
     \ifvoid\LT@lastfoot
        \global\setbox\LT@lastfoot=\hbox{\box\LT@foot}%
     \else
        \global\setbox\tmp:bx=\hbox{\box\LT@foot}%
  \fi\fi
}
\def\:tempc{\global\HCondtrue \LT@end@hd@ft\LT@lastfoot}
\HLet\endlastfoot\:tempc
\def\LT@tabularcr{%
  \relax\iffalse{\fi\ifnum0=`}\fi
  \@ifstar
    {\LT@t@bularcr}%
    {\LT@t@bularcr}}

   \def\:tempc{%
  \o:noalign:{\ifnum0=`}\fi
    \penalty\@M
    \futurelet\@let@token\LT@@hline}
\HLet\LT@hline\:tempc
\def\:tempc{%
  \ifx\@let@token\hline
    \global\let\@gtempa\@gobble
    \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}%
  \else
    \global\let\@gtempa\@empty
    \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}%
  \fi
  \ifnum0=`{\fi}%
  \a:hline
%
  \o:noalign:{\penalty\@M}%
  \@gtempa}
\HLet\LT@@hline\:tempc

   \def\:tempc{%
  \o:noalign:\bgroup  \gHAdvance\TitleCount  1
    \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n}
\HLet\LT@caption\:tempc
\NewConfigure{longtablecaption}{4}
\def\:tempc#1#2#3{%
    \a:longtablecaption #1{\cap:ref{#2}}\if\relax\detokenize{#1}\relax\else\b:longtablecaption\fi\c:longtablecaption#3\d:longtablecaption
    \endgraf%\vskip\baselineskip <- this caused error in https://tex.stackexchange.com/q/682383/2891
 }
\HLet\LT@makecaption\:tempc
\def\:tempc#1[#2]#3{%
  \LT@makecaption#1\fnum@table{#3}%
  \cur:lbl{}%
  \def\@tempa{#2}%
  \ifx\@tempa\@empty\else%
  {\let\\\space%
  \protect:wrtoc%
  \edef\:temp{#2}%
  \edef\:temp{\the\:tokwrite{\string\doTocEntry%
  \string\toclot%
  {\thetable}{\string\csname\space a:TocLink\string\endcsname%
    {\FileNumber}{\cur:th \:currentlabel}{}{\ifx\:temp\empty\else \ignorespaces #2\fi}}%
      {}\relax}}\:temp%
  }%
  \fi%
}

\HLet\LT@c@ption\:tempc

\Hinput{longtable}
\endinput

您还需要更新 HTML 输出的配置,此配置文件应该可以工作:

\Preamble{xhtml}
\catcode`\:=11
  \Configure{halignTB<>}{longtable}{\HCode{id="TBL-\TableNo" class="longtable"\Hnewline
   \GROUPS\Hnewline
   }<>\HAlign}
\Css{table[rules] {border-left:solid black 0.4pt;
                   border-right:solid black 0.4pt; }}
\Css{table.longtable{border-collapse: collapse; border-spacing: 0;}}
\Configure{longtable}
   {\IgnorePar\EndP
     \HCode{<!--l. \the\inputlineno-->%
<div class="longtable">}%
    \halignTB{longtable}\putVBorder }
   {\HCode{</table></div>}}
   {\HCode{<tr \Hnewline}\halignTR\HCode{ id="TBL-\TableNo-\HRow-">}}
   {\r:HA}
   {\HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan"\fi}%
    \halignTD \HCode{ id="TBL-\TableNo-\HRow-\HCol"
    \Hnewline class="td}\NoFonts
           \bgroup
              \ifx \ttfamily\:UnDef \else \ttfamily\fi
              \ColMargins
           \egroup
\EndNoFonts
%
    \HCode{">}\SaveEndP
%
    \par  \ShowPar
\PushStack\Table:Stck\TableNo}
   {\PopStack\Table:Stck\TableNo \IgnorePar \EndP
\d:HA}
\Css{div.longtable{text-align:center;}}
\Css{table.longtable{margin-left:auto; margin-right: auto;}}
\Configure{longtableparbox}{\IgnorePar\leavevmode\ShowPar\par}
\Configure{longtablecaption}{\ifvmode\IgnorePar\fi\EndP\HCode{<caption class="longtable">}\par\ShowPar\HCode{<span class="id">}}{:\ }{\HCode{</span><span class="content">}}{\HCode{</span>}\ifvmode\IgnorePar\fi\EndP\HCode{</caption>}}

\Css{caption.longtable .id{font-weight:bold;}}
\catcode`\:=12
\begin{document}
\EndPreamble

结果如下:

在此处输入图片描述

相关内容