babel 使用 htlatex 编译时导致标签出现 cref 错误

babel 使用 htlatex 编译时导致标签出现 cref 错误

更新

我非常想知道babel是什么让高级匈牙利口音能够被加载。下面的评论表明它实际上应该没有影响。鉴于那些回应者的经验和才华,他们可能是对的。话虽如此,它确实在做一些事情,因为它在我使用它时确实给了我一个可扩展的角色。因为它babel本身会干扰,cleveref所以我想提取它提供该角色的任何部分(认识到它可能不会改变编码或任何东西)并只使用该片段。

概括

  • cref带有图形环境的文档
  • 设置自定义图形环境以便我构建复杂的面板图形(未显示大量代码)
  • 图表标题可以包含枚举列表
  • 当图形标题中存在枚举环境时,整体图形标签难以被引用**
  • 由于某种原因,“\cref{figure}”引用htlatex不适babel用于图形标签,但被识别为枚举环境中使用的最后一个标签
  • 奇怪的是,\label标题中的位置并不重要;它可以按照列表进行,但仍然会失败
  • pdf 编译后不会出现此问题
  • 这个问题只出现在使用babel的htlatex中

因此,这个 MWE 应该可以很好地编译,就像xelatex在我的计算机上一样。不幸的是,虽然它也可以完全编译htlatex,但我遇到了命令问题cref。只有包含时才会出现这个问题babel,否则htlatex编译结果也是准确的。

在 html 文件中,我希望看到(像 pdf 一样):

参考图:图1

相反,我看到的是:

参考:第(iii)项

这告诉我,我所创建/使用的环境正在使用枚举中的最后一个可能的标签。

平均能量损失- 包括可能干扰解决方案的定制

%%!TEX encoding = UTF-8 Unicode
\NeedsTeXFormat{LaTeX2e}

\documentclass[10pt, oneside, letterpaper]{article} %oneside twoside

\usepackage{xparse,xpatch}
\usepackage{graphicx,caption,float,grffile}
\usepackage[format=hang,singlelinecheck=0,font={sf,small},labelfont=bf]{subfig}

\makeatletter
\captionsetup[subfigure]{
    subrefformat=simple,
    labelformat=simple,
    listofformat=subsimple
}%

\captionsetup[figure]{
    %labelfont={bf},
    labelformat={default},
    labelsep=period,
    name={Fig.}
}%

\captionsetup[subfloat]{farskip=0mm,captionskip=0mm}%   

\renewcommand\thesubfigure{\Alph{subfigure}}
\makeatother    

\newcounter{HTMLalternative}

\DeclareDocumentCommand{\PanelledFigure}{ O{7.0625 in} o O{1.25}}
{%% THIS WILL BREAK ENDFLOATS
    \def\ImagePanelSize{#1}%
    \def\AlternateHTMLImage{#2}
    \def\ColSepSize{#3}%
    \begin{figure}%
    \centering%
    \begin{minipage}{#1}%{\textwidth}
}%      
\def\endPanelledFigure
{%
    \end{minipage}%
    \end{figure}%
    %\clearpage%
    \setcounter{HTMLalternative}{0}%
}%

%%%%%%%%%%%%%% CULPRIT LINE %%%%%%%%%%%%%%%%%%%%
\usepackage[english,hungarian]{babel}%
%%%%%%%%%%%%%% CULPRIT LINE %%%%%%%%%%%%%%%%%%%%

\usepackage{enumerate}
\usepackage[shortlabels,inline]{enumitem}

\usepackage{cleveref}
\crefname{figure}{Fig.}{Figs.}
\Crefname{figure}{Fig.}{Figs.}

\begin{document}
\noindent
\selectlanguage{english}

    Reference:  \cref{fig:ref}

    \begin{PanelledFigure}[7.0625in][../FigureExternalization/Figure_iii.png]%
    \includegraphics[width=3cm]{example-image-a.jpg}\\%
    \caption[NO FIGURE LEGEND EXPECTED]{%
    \label{fig:ref}%
        Little figure summary here that provides extra details:  
        \begin{enumerate*}[label=(\roman*)]
            \item first example;
            \item another example;
            and \item last example.
        \end{enumerate*}
    }%
    \end{PanelledFigure}%
\end{document}

更新

看起来 cleveref 还不支持匈牙利语,而这个论点实际上是导致问题的部分。

因此,现在的问题不再是cref,而是在使用 htlatex 进行编译时如何插入复杂字符(例如匈牙利语中的字符)的问题。当我编译以下内容时,我得到了两个需要解决的模糊 png 图像。

%%!TEX encoding = UTF-8 Unicode
\NeedsTeXFormat{LaTeX2e}

\documentclass[10pt, oneside, letterpaper]{article} %oneside twoside

\usepackage{xparse,xpatch,letltxmacro}

\RequirePackage{ifxetex,ifluatex}
\newif\ifunicode
\ifxetex\unicodetrue\fi
\ifluatex\unicodetrue\fi

\ifdefined\HCode
    \usepackage{textgreek}
    \usepackage{textcomp} % needed for degree sign or something with tex4ht
    %\usepackage[british,UKenglish,USenglish,english,american,hungarian]{babel}

    %\selectlanguage{english}
    % No defaults to set yet

    \usepackage{alternative4ht}

    \altusepackage[T1]{fontspec}
    \usepackage[utf8]{inputenc} 

    \altusepackage{polyglossia}

\else
% These packages won't work in html, so only include if using the pdf generation.

    \ifxetex
        \usepackage{textgreek}
        \usepackage{polyglossia} % loads fontspec (font selection with XeLaTeX and LuaLaTeX - load open type fonts)
        \setmainlanguage{english}

        \setmainfont[
        Ligatures=TeX,
        SmallCapsFont={TeX Gyre Termes},
        SmallCapsFeatures={Letters=SmallCaps},
        ]{Times New Roman}


        %\setmainfont[Mapping=tex-text]{TeX Gyre Termes}
        %\setmainfont[
        %Extension=.otf,
        %UprightFont= *-regular,
        %BoldFont=*-bold,
        %ItalicFont=*-italic,
        %BoldItalicFont=*-bolditalic,
        %]{texgyreheros}

        \defaultfontfeatures{Ligatures={TeX}}
    \else
        \usepackage[T1]{fontenc}   
        \usepackage[utf8]{inputenc} 
        \usepackage{lmodern}
        % This will likely need improvements to fonts and languages still
    \fi
\fi

\begin{document}
\noindent
%\selectlanguage{english}

Text with a complex accent \H{o} or \H{u} 
\end{document}

相关内容