![期望输出 HTML 文件名与输入/包含相同](https://linux22.com/image/480483/%E6%9C%9F%E6%9C%9B%E8%BE%93%E5%87%BA%20HTML%20%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%8E%E8%BE%93%E5%85%A5%2F%E5%8C%85%E5%90%AB%E7%9B%B8%E5%90%8C.png)
期望最终输出的 html 文件名与\include
filename 或\input
filename 相同。如何使用获取它make4ht
。我曾参考此链接如何控制 tex4ht 用于拆分子小节的 HTML 文件的名称?并没有达到预期的全部要求。
我的 MWE 是:
\documentclass{book}
\usepackage{lipsum,imakeidx}
\makeindex
\begin{document}
\frontmatter
\input{1234567890-bkseries}% Expect HTML Output FileName is 1234567890-bkseries.html
\title{Computing for Interactive}
\author{Parisa}
\input{1234567890-cpright}% Expect HTML Output FileName is 1234567890-cpright.html
\mainmatter
\include{1234567890-Intro}% Expect HTML Output FileName is 1234567890-Intro.html
\include{0987654321-Ch_01}% Expect HTML Output FileName is 1234567890-Intro.html
\include{1234567890-Ch_01_1E}% Expect HTML Output FileName is 1234567890-Intro.html
\backmatter
\input{0987654321-Author-Bio}% Expect HTML Output FileName is 1234567890-Intro.html
\printindex
\end{document}
答案1
如果所有包含的文件都以该\chapter
命令开头,则可以使用以下配置文件:
\Preamble{xhtml,2}
\Configure{CutAt-filename}{%
\filename@parse\CurrentFile%
\NextFile{\[email protected]}%
}
\begin{document}
\EndPreamble
2
命令中的选项将\Preamble
确保所有章节都保存在单独的 HTML 页面中。配置\Configure{CutAt-filename}
设置这些章节页面的名称。我们使用 LaTeX 的命令\filename@parse
提取当前使用的不带扩展名的文件的名称。然后在命令中使用此文件名\NextFile
,设置章节文件的名称。
这种方法有一个问题 - 您只需要\chapter
在包含的文件中使用该命令,并且每个包含的文件只能包含一个章节,否则后续章节将覆盖给定文件中的第一个章节。如果您想支持多个章节,代码会稍微复杂一些,因为您需要检查当前名称是否以前使用过,并进行相应的处理。