tex4ht schlägt beim ersten Rendern von \cmark fehl, funktioniert aber beim zweiten Mal

tex4ht schlägt beim ersten Rendern von \cmark fehl, funktioniert aber beim zweiten Mal

Angesichts dieses MWE

\documentclass[11pt]{book}
\usepackage{xcolor}
\usepackage{pifont} %http : // ctan.org/pkg/pifont
\newcommand{\cmark}{\textcolor{green!80!black}{\ding{51}}}
\newcommand{\xmark}{\textcolor{red}{\ding{55}}}

\begin{document}
\cmark \underline{A}

\cmark \underline{B}
\end{document}

Das Kompilieren mit lualatex ergibt die erwartete Ausgabe

Bildbeschreibung hier eingeben

Aber die Verwendung make4ht -ulm default -a debug report.tex "mathjax,htm"gibt

Bildbeschreibung hier eingeben

Es gibt diese Warnung

l.10 --- TeX4ht warning --- missing \Configure{HColor}{green!80!black}{...} (in
 LaTeX: \\color@green!80!black ) ---
Unsupported font        pzdr

Allerdings schlägt dann immer der erste Eintrag fehl, jede weitere Verwendung \cmarkfunktioniert jedoch einwandfrei.

Hier ist das Roh-HTML

<!DOCTYPE html> 
<html lang='en-US' xml:lang='en-US'> 
<head><title></title> 
<meta charset='utf-8' /> 
<meta content='TeX4ht (https://tug.org/tex4ht/)' name='generator' /> 
<meta content='width=device-width,initial-scale=1' name='viewport' /> 
<link href='report.css' rel='stylesheet' type='text/css' /> 
<meta content='report.tex' name='src' /> 
<script>window.MathJax = { tex: { tags: "ams", }, }; </script> 
 <script async='async' id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js' type='text/javascript'></script>  
</head><body>
<!-- l. 10 --><p class='noindent'><span id='textcolor1'>80!black!//<span class='pzdr-x-x-109'>✓</span></span><span class='underline'>A</span>
</p><!-- l. 12 --><p class='indent'>   <span id='textcolor2'><span class='pzdr-x-x-109'>✓</span></span><span class='underline'>B</span>
</p>   
 
</body> 
</html>

Dies wurde im Brave-Browser und in Firefox überprüft.

Warum passiert das nur beim ersten und wie kann man es korrigieren? Wie behebt man \Configure{HColor}das?

Aktualisieren

Ich habe festgestellt, dass es beim Wechsel \newcommand{\cmark}{\textcolor{green!80!black}{\ding{51}}}zu\newcommand{\cmark}{\textcolor{green}{\ding{51}}}

Bildbeschreibung hier eingeben

Es sieht also so aus, als ob Farbmischung in tex4ht nicht gut unterstützt wird. Keine große Sache. Ich werde es vorerst einfach \textcolor{green}in tex4ht und in PDF verwenden .\textcolor{green!80!black}

TL 2021

Antwort1

Dies scheint ein Fehler bei der Unterstützung von Farbspezifikationen in Form von green!80!blackin TeX4ht zu sein. Ich habe herausgefunden, wo die Farbspezifikation in das Dokument kommt, und es behoben. Versuchen Sie diese Version von xcolor.4ht:

% xcolor.4ht (2019-04-09-10:06), generated from tex4ht-4ht.tex
% Copyright 2007-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-09-10:06}

\input color.4ht
\def\rowc@l@rs[#1]#2#3#4%
 {\global\rownum=\z@
  \global\@rowcolorstrue
  \@ifxempty{#3}%
    {\def\@oddrowcolor{\@norowcolor}}%
    {\def\@oddrowcolor{\a:rowcolors{#3}%
                       \gdef\CT@row@color{\CT@color{#3}}}}%
  \@ifxempty{#4}%
    {\def\@evenrowcolor{\@norowcolor}}%
    {\def\@evenrowcolor{\a:rowcolors{#4}%
                        \gdef\CT@row@color{\CT@color{#4}}}}%
  \if@rowcmd
    \def\@rowcolors
     {#1\if@rowcolors
        \o:noalign:{\relax\ifnum\rownum<#2\@norowcolor\else
                 \ifodd\rownum\@oddrowcolor\else\@evenrowcolor\fi\fi}%
      \fi}%
  \else
    \def\@rowcolors
     {\if@rowcolors
        \ifnum\rownum<#2\o:noalign:{\@norowcolor}\else
        #1\o:noalign:{\ifodd\rownum\@oddrowcolor\else\@evenrowcolor\fi}\fi
      \fi}%
  \fi
  \CT@everycr{\@rowc@lors\the\everycr}%
  \ignorespaces}
\NewConfigure{rowcolors}{1}
\def\@rowc@lors{\o:noalign:{\global\advance\rownum\@ne}\@rowcolors}
\def\showrowcolors{\o:noalign:{\global\@rowcolorstrue}\@rowcolors}
\def\hiderowcolors{\o:noalign:{\global\@rowcolorsfalse\@norowcolor}}
\def\:temp#1#2#3{{\set@color}}
\HLet\color@block\:temp
\def\:temp#1#2#3{}
\HLet\boxframe\:temp
\def\strip:fin:excl#1!{#1}
\expandafter\def\csname get!HColor\endcsname#1!#2//{%
  \def\current:color:name{#1\if!#2!\else!\strip:fin:excl#2\fi}%
  \if\relax#2\relax
  %\expandafter\ifx \csname HColor!#1\endcsname\relax
     \let\HColor=\relax
     \expandafter\ifx \csname\string\color @#1\endcsname \relax\else
   \expandafter\ifx \csname colortyp:\endcsname\relax \else
   \extractcolorspec{#1\if!#2!\else!\strip:fin:excl#2\fi}\tmp:color%
   \expandafter\convertcolorspec\tmp:color{HTML}\tmp:color%
   \def\HColor{\#\tmp:color}%
   \Configure{HColor}{\current:color:name}{\HColor}%
      \csname colortyp:\expandafter\expandafter\expandafter\endcsname
         \csname\string\color @#1\expandafter\endcsname
         \space .!//%
\fi \fi
%
  \else
    \ifcsname HColor!#1\endcsname
       \csname HColor!#1\endcsname #2//%
    \fi
  \fi
}
\expandafter\def\csname c:HColor!gray:\endcsname{%
     \expandafter\def\csname HColor!gray\endcsname##1!##2//}
\Configure{HColor!gray}{\Configure{HColor}{}{}}
\expandafter\def\csname c:HColor!rgb:\endcsname{%
     \expandafter\def\csname HColor!rgb\endcsname##1,##2,##3!##4//}
\Configure{HColor!rgb}{\Configure{HColor}{}{}}
\expandafter\def\csname c:HColor!cmyk:\endcsname{%
     \expandafter\def\csname HColor!cmyk\endcsname##1,##2,##3,##4!##5//}
\Configure{HColor!cmyk}{\Configure{HColor}{}{}}

\def\get:xcolorcss#1#2{%
   \expandafter\extractcolorspec\expandafter{#1}{\tsf:color}%
   \expandafter\convertcolorspec\tsf:color{HTML}\tsf:color%
   \edef#2{\#\tsf:color}%
}


\Hinput{xcolor}
\endinput

Die Korrektur war im \get!HColorMakro notwendig, da es eine Steuersequenz mit Farbnamen aufrief, ohne zu prüfen, ob dieser existiert. Da er für diese Art von Spezifikation nicht existiert, landet der Parameter für diese Steuersequenz im Dokument, anstatt verschluckt zu werden.

Dies ist das Ergebnis:

Bildbeschreibung hier eingeben

verwandte Informationen