使用 abnTEX2 类和 make4ht 时出现的问题

使用 abnTEX2 类和 make4ht 时出现的问题

make4ht当使用类为文档创建 HTML 时abnTEX2,生成的文档对于摘要中的每个变音符号都有一个新段落(仅限)。

示例文件如下:

\documentclass[brazil,article]{abntex2}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\title{Um apólogo}
\author{Machado de Assis}
\begin{document}
\maketitle
\begin{abstract}
Machado de Assis, um homem do século XIX, escreveu o conto
\textit{Um apólogo} abaixo transcrito.
\end{abstract}

Era uma vez uma agulha, que disse a um novelo de linha:

-- Por que está você com esse ar, toda cheia de si, toda
enrolada, para fingir que vale alguma coisa neste mundo?

-- Deixe-me, senhora.

-- Que a deixe? Que a deixe, por quê? Porque lhe digo que
está com um ar insuportável? Repito que sim, e falarei sempre
que me der na cabeça.
\end{document}

当使用 maketitle 进行编译时,make4ht -u example我收到一些错误\maketitle(如果没有 maketitle 则没有错误)

[ERROR]   htlatex: Compilation errors in the htlatex run
[ERROR]   htlatex: Filename Line    Message
[ERROR]   htlatex: ./example.tex    7    Undefined control sequence.

结果是

使用 make4ht 生成的 abnTEX2 文档

发生了什么抽象的? 如何修复?

答案1

您的示例有一个小问题。除非我提供命令,否则我会收到错误\tituloestrangeiro。我不知道它是否是必需的abntex2,但从阅读它的源代码来看,当您使用文档类选项时它似乎是必需的article。所以我在后面添加了以下命令\title并修复了这个问题:

\tituloestrangeiro{An apologist}

现在来谈谈重音字符换行的问题。这实际上是由引入的make4hth。它会为摘要中每个重音字符的每个直接放置在<body> element, so it is outside paragraph or other block element. It does it in order to produce valid HTML. Now TeX4ht produces extra` 元素中的内联元素创建段落,但它们不会放置在段落内,因此该机制会为每个重音字符创建一个段落。

为了解决这个问题,我们必须配置abstract环境以产生更好的输出。可以使用以下.cfg文件完成此操作:

\Preamble{xhtml}
% Configure the abtract environment to produce the <section> element
\ConfigureEnv{abstract}
{\ifvmode\IgnorePar\fi\EndP\HCode{<section role="doc-abstract" class="abstract">\Hnewline}} 
{\ifvmode\IgnorePar\fi\EndP\HCode{</section>}}{}{}
% we want to get rid of the center environment used around the abstract title
% we also introduce a <h3> element for the title
\newenvironment{dummyabstracttitle}{\ifvmode\IgnorePar\fi\EndP\HCode{<h3 class="abstracttitle">}}{\HCode{</h3>}\par\noindent}
% use our dummy environment to insert tags around the abstract title
\renewcommand{\absnamepos}{dummyabstracttitle}
% get rid of all extra <span> elements introduced by smaller font size
\renewcommand{\abstracttextfont}{\normalfont}
\renewcommand{\abstractnamefont}{\normalfont}
% style the abstract
\Css{.abstract{margin:1em;font-size:0.9rem;}}
\Css{.abstracttitle{text-align:center;margin-bottom:1em;}}
\begin{document}
\EndPreamble

我稍微描述一下:

\ConfigureEnv{abstract}
{\ifvmode\IgnorePar\fi\EndP\HCode{<section role="doc-abstract" class="abstract">\Hnewline}} 
{\ifvmode\IgnorePar\fi\EndP\HCode{</section>}}{}{}

这将配置abstract环境以使用<section>其内容周围的元素。

类插入的抽象标题向 HTML 代码插入了大量格式化命令,这其实是不必要的。由于abntex2基于 Memoir,我们可以提供一个自定义环境来格式化标题。我们在这个环境中做了很多事情:

\newenvironment{dummyabstracttitle}{\ifvmode\IgnorePar\fi\EndP\HCode{<h3 class="abstracttitle">}}{\HCode{</h3>}\par\noindent}

\ifvmode\IgnorePar\fi\EndP在我们插入标签之前,命令会关闭可能打开的段落。<h3>结束\par\noindent后开始一个新段落,以确保摘要文本在其中。

为了摆脱<span>由于抽象内容使用较小字体而要求的大多数元素,我们只需重新定义选择抽象字体的命令以使用普通字体:

\renewcommand{\abstracttextfont}{\normalfont}
\renewcommand{\abstractnamefont}{\normalfont}

最终文件如下所示:

在此处输入图片描述

相关内容