密切相关: 更改段落开始/结束命令
是否有 LaTeX“钩子”用于自动将段落包装在框中,或者最好是 XML 标签中?
我想将输出的文件加载到 XML 解析器中,但是每段作为单独的行。
输入文件示例:
\documentclass{minimal}
\begin{document}
Hello World.
Hello Again.
\end{document}
简单输出 XML 文件的示例:
<Document>
<Paragraph>Hello World.</Paragraph>
<Paragraph>Hello Again.</Paragraph>
</Document>
实际用例:
只是想以 XML 格式导出书籍章节以供 Sigil epub 编辑器输入。
答案1
我不确定你到底想做什么。如果你想创建一个 Epub 文件,你可以使用 将 LaTeX 源转换为 Epub tex4ebook
。在终端中运行以下命令:
tex4ebook filename.tex
如果你真的想创建自定义 XML 语法,那么这项任务就困难得多。你需要为数百个命令创建配置,而不仅仅是段落。
无论如何,要回答这个问题,您可以使用以下配置文件为段落配置标签:
\Preamble{xhtml}
\Configure{HtmlPar}
{\EndP\HCode{<paragraph>}}
{\EndP\HCode{<paragraph>}}
{\HCode{</paragraph>}}{\HCode{</paragraph>}}%
\begin{document}
\EndPreamble
使用以下方法编译您的文件:
make4ht -c config.cfg filename.tex
结果如下:
<!DOCTYPE html>
<html lang='en-US' xml:lang='en-US'>
<head> <title></title>
<meta charset='utf-8' />
<meta content='TeX4ht (https://tug.org/tex4ht/)' name='generator' />
<meta content='width=device-width,initial-scale=1' name='viewport' />
<link type='text/css' rel='stylesheet' href='sample.css' />
<meta content='sample.tex' name='src' />
</head><body>
<paragraph>Hello World.
</paragraph><paragraph> Hello Again. </paragraph>
</body>
</html>
如您所见,有很多 HTML 标签。\Configure
要将其更改为自定义 XML 方案,则需要更多命令。
答案2
作为 OP,这是我正在尝试做的事情的一个示例答案。
我希望有其他更清洁的方法来做到这一点。
\documentclass[openany, oneside, 12pt]{minimal}
\let\oldpar\par%
\newcommand{\TagParagraphs}{%
\everypar={\textless Paragraph\textgreater}%
\def\par{\unskip\textless/Paragraph\textgreater\oldpar}%
}%
\newcommand{\StopTaggingParagraphs}{%
\let\par\oldpar%
}%
\begin{document}
\TagParagraphs%
Hello World.
Hello Again.
\StopTaggingParagraphs%
\end{document}