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.
结果是
发生了什么抽象的? 如何修复?
答案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}
最终文件如下所示: