tex4ht:通过 \selectfont 获取小写重音字母

tex4ht:通过 \selectfont 获取小写重音字母

我尝试在我的html文档中使用小写字母,但是tex4ht我找到的代码仅适用于命令\textsc。但是,我输入了所有字体更改\rmfamily\mdseries\scshape\selectfont,因此重音字母不会变成小写字母。

我使用 make4ht -ul hello.tex 进行编译

我使用了@michal.h21 的 tex4ht 扩展,

https://github.com/michal-h21/helpers4ht

\documentclass[oneside,a4paper, 12pt]{article}

 \usepackage{alternative4ht}
  \altusepackage{fontspec}
  \setmainfont{TeX Gyre Termes}
  \altusepackage{polyglossia}
  \setmainlanguage{czech}




\ifx\HCode\undefined \else
\AtBeginDocument{
\Configure{textsc}{\ifvmode\ShowPar\fi\NoFonts\HCode{<span class="sc">}}{\HCode{</span>}\EndNoFonts}
\Css{.sc{ font-variant: small-caps;}}
}\fi
\begin{document}

\section{LlAaLALALA}

small with selectfont: \rmfamily\mdseries\scshape\selectfont{Příliš žluťoučký kůň úpěl ďábelské ódy}\normalfont\\
small: \textsc{Příliš žluťoučký kůň úpěl ďábelské ódy}\\
capital: \textsc{PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY}\\

\end{document}

答案1

fontenc使用和的默认设置也可以获得相同的结果inputenc

\documentclass[oneside,a4paper, 12pt]{article}
 \usepackage[T1]{fontenc}
 \usepackage[utf8]{inputenc}

\ifx\HCode\undefined \else
\AtBeginDocument{
\Configure{textsc}{\ifvmode\ShowPar\fi\NoFonts\HCode{<span class="sc">}}{\HCode{</span>}\EndNoFonts}
\Css{.sc{ font-variant: small-caps;}}
}\fi
\begin{document}

\section{LlAaLALALA}

small with selectfont: \rmfamily\mdseries\scshape\selectfont{Příliš žluťoučký kůň úpěl ďábelské ódy}\normalfont\\
small: \textsc{Příliš žluťoučký kůň úpěl ďábelské ódy}\\
capital: \textsc{PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY}\\

\end{document}

在此处输入图片描述

当你查看 HTML 时:

<span 
class="eccc1200-"><span 
class="small-caps">P</span></span><span 
class="eccc1200-">ř</span><span 
class="eccc1200-">í<span 
class="small-caps">l</span><span 
class="small-caps">i</span></span><span 
class="eccc1200-">š </span><span 

具有两个不同类的 span 元素用于重音字母和非重音字母。在 dvi 文件中,记录如下:

 fnt: eccc1200 at 12pt
      set: 'P'
      xxx: 't4ht@+&{35}x0159{59}'
      set: 'x'
      xxx: 't4ht@+&{35}x00ED{59}'
      set: 'xli'
      xxx: 't4ht@+&{35}x0161{59}'
      set: 'x'
      w: 4.360046pt

如您所见,eccc1200整个文本都选择了字体,因此class=eccc1200-应该使用。但显然在某处重新定义了小型大写字母以生成类small-caps,而该类不适用于重音字母。这是tex4htdvi 处理器中的一个错误,不太可能修复,因为没有人理解它。因此,作为修复,您可以eccc1200-通过 CSS 配置类以生成小型大写字母:

\ifx\HCode\undefined \else
\AtBeginDocument{
\Configure{textsc}{\ifvmode\ShowPar\fi\NoFonts\HCode{<span class="sc">}}{\HCode{</span>}\EndNoFonts}
\Css{.sc,.eccc1200-{ font-variant: small-caps;}}
}\fi

相关内容