我有一个相当大的 tex 项目,我想将其转换为一个或多个链接的 html 文件。但是我常用的转换器 pandoc 和 latex2html 似乎都不支持递归编译。
其中一个是否有我遗漏的编译器标志?如果没有,是否有转换器支持我尝试执行的操作,或者我是否只需将所有内容复制并粘贴到一个非常长的文档中?
编辑:
需要说明的是,我有一个main.tex
包含该subfiles
包的文件。我还有其他几个文件,i.tex
格式如下:
\documentclass[/path/to/files]{subfiles}
\begin{document}
Some words
\end{document}
我如何将它们全部包含到我的最终文档中(作为某些文件的内容main.html
或i.html
链接到的单独文件)main.html
,而无需手动进行艰苦的工作?
答案1
tex4ht
支持这一点。它需要一个简单的配置文件,subfiles.4ht
以支持多个子文件:
\def\:tempa#1{%
\ifcsname subfiles@end\endcsname
\else
\subfiles@saveEndTo\subfiles@end
\fi
\let\choose:begin\@secondoftwo
\expandafter\def\csname end \endcsname##1{%
\romannumeral
\subfiles@StrIfEqTF{##1}{document}{%
\z@
\subfiles@restoreEndFrom\subfiles@end
#1%
}{%
\expandafter\expandafter\expandafter\z@\subfiles@end{##1}%
}%
}%
}
\HLet\subfiles@renewEndDocument\:tempa
\Hinput{subfiles}
\endinput
它在包含的子文件中禁用\end{document}
,因为否则它会关闭文档。
简单的例子。
主文件sample.tex
:
\documentclass{article}
\usepackage{subfiles}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\begin{document}
\title{Subfile example}
\maketitle
\tableofcontents
\subfile{subfile1.tex}
\end{document}
包含的文件subfile1.tex
:
\documentclass[sample.tex]{subfiles}
\begin{document}
\section{Hello world}
Some words
Příliš žluťoučký kůň
\end{document}
您可以使用命令编译该文档
make4ht -u sample.tex
结果如下:
答案2
latexml 能满足您的要求吗?我不太清楚您的具体需求,但它可以接收大型 LaTeX 文件,并按章节或部分(等等)将其拆分为多个 HTML 文件。
我不是专家,但我用来执行此操作的命令(假设文档tex/mydocument.tex
并保存到html/
目录)是:
latexml tex/mydocument.tex | latexmlpost - \
--sourcedirectory=tex \
--format=html5 \
--destination=html/mydocument.html \
--splitat=chapter \
--splitnaming=label
这里是按章节进行拆分的,每个章节都需要一个\label
才能使拆分命名生效。如果删除--splitnaming=label
,它将简单地将每个 HTML 文件命名为Ch1.html
.. ChN.html
。
它不包含在 TeX Live 中,但我在 macOS 上直接从LaTeXML Github 存储库。