我正在考虑编写一个简单的脚本,将古登堡计划文本转换为 LaTeX 文档,以便它们排版整齐,可供阅读。但是,要做到这一点,我需要一份相当详细的列表,列出我应该特别处理的字符。
我的计划是运行一个 sed 脚本,进行替换,然后在开头添加一个基本前言,在结尾添加结束文档,然后运行 LaTeX。这似乎不太难,但考虑到大多数电子书的长度,我宁愿不尝试手动查找我的脚本遗漏的所有内容。
以下是我目前掌握的清单:
- 如果我使用 UTF8,我应该已经能够使用大多数花哨的字符而无需进行调整。
"foo"
为了``foo''
'foo'
和`foo'
- 替换
...
为\ldots
- 在适当的时候用 --- 替换连字符(这可能是一个挑战)
~
和$\sim$
我还遗漏了什么?
我知道使用 HTML 版本会好看得多,但是电子书中有很多花哨的东西,看起来很难转换。
另外,有谁知道优质品牌? 它似乎和我刚才提议的做同样的事情。
答案1
如果你打算花大量时间,我建议你先通过预处理器解析 HTML 版本,而不是文本版本。我宁愿使用 Perl、Lisp、Python 或 Ruby,而不是 sed。
解析 HTML 而不是文本文件的理由是,HTML 已经结构化,有问题的字符可能已经转义,因此更容易解析和翻译。我选择上述计算机语言是因为您可以找到可以修改的 HTML 解析库。
在进行任何预处理之前,您需要了解文件的编码。Gutenburg 文件有多种形式。
对于 LaTeX,我肯定会使用 utf8,最好是 XeLaTeX。需要转义的问题字符是众所周知的,并在 TeXbook 中列出,例如下划线、井号等。为很多这些字符做好准备 — 在旁边utf8
。
不过,挑战主要在于解析方面。例如,Gutenburg ASCII 文件会将页码显示为数字。您需要捕捉这一点以及许多变体。准备好迎接自然语言处理的快乐、沮丧但有益的体验。在我看来,(La)TeX 部分是最简单的部分。
添加了一个小的 MWE 来指出您可能遇到的一些utf8
问题。在开始项目之前,强烈建议阅读示例开发所基于的手册fontenc
。inputenc
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{trace}
\scrollmode % to run past errors check the log
\begin{document}
\obeylines
^^c3^^a4^^c3^^b6^^c3^^bc
These trigger errors
^^c3X ^^e1XY
%�
This \textcopyright\ will probably give you pdf
issues (try cut and paste in the pdf).
\textcopyright
\end{document}
答案2
考虑在 HTML 输入中包含以下 LaTeX 更正:
- 如果来源包含标题,请添加控制空格。例如,
Mr. Drofnats
或Mr.\ Drofnats
更好Mr.~Drofnats
。 - 确保使用正确格式来格式化句末缩写
\@
。
从技术上来说,这不会“搞砸 LaTeX”,但 LaTeX 输出在印刷上应该是正确的。