学习如何使用 TeX 进行非技术文档的自动排版

学习如何使用 TeX 进行非技术文档的自动排版

每当我尝试进一步了解 TeX 或 LaTeX 时,我都会被我看过的书籍和在线资源的普遍偏见所困扰,也可能是 LaTeX 本身的偏见。我对使用 TeX 排版书籍、文章、幻灯片或期刊出版物不感兴趣。相反,我想用它来处理其他程序生成的文档。这些文档不是技术性的。

例如,我有一个用 Haskell 编写的系统,它接受烹饪食谱并生成购物清单。我需要为食谱和购物清单生成打印输出。这当然不是一本书或一篇文章,而且由于输出是自动生成的,所以我不关心分离演示和内容。相反,我主要关心的是让打印输出看起来不错。到目前为止,我为此使用了 roff,因为我从未设法弄清楚如何使用 (La)TeX 来做这样的事情。

我想要编写的另一件事是一个简单的系统,用于将用很少的标记编写的清单转换为适合打印的双列布局。

如果您不想写一篇冗长的结构化技术文档,那么有哪些好的资源可以学习 (La)TeX?TeX 似乎是一个像 roff 一样的排版程序,因此应该可以用它来做这样的事情,但我不知道从哪里开始学习。我读到的所有内容都是从如何写一篇文章开始的。

答案1

这个问题很笼统,但所举的例子却非常具体。如果文档是自动生成的,那么形式和内容的分离实际上非常有用。就你的情况而言,我认为“主文件”加上“内容文件”是最有意义的。尽可能简单地生成你的列表,调用它grocery-list.tex(比如说),并使其看起来像这样:

% grocery-list.tex
\item Apples
\item Oranges
\item ...

然后,您只需将该文件 \input 到另一个控制页面正式布局的文件中即可。您可以执行如下操作(我们称之为grocery-master.tex):

\documentclass[12pt, oneside]{article}
% does a grocery list require indented paragraphs?
\parindent 0pt
% set encoding stuff
\usepackage[T1]{fontenc}%
\usepackage[utf8]{inputenc}%
% pick a font:
\usepackage[fulloldstylenums,largesmallcaps]{kpfonts}%
% maximize space for text given there is no need for
% any header or footer in a grocery list
\usepackage[margin=2cm,noheadfoot]{geometry}
% probably want a two-column layout
\usepackage{multicol}

% you actually do want to separate form and content,
% even if (especially if?) you are generating the document
% from another program. Here is one simplistic example
\newcommand{\headlinefont}{\large\bfseries\sffamily}
\newcommand{\headline}[1]{%
  \begingroup\headlinefont% <-- now all content generated by the \headline command will be the same
  #1\endgroup}
\begin{document}
\begin{multicols}{2}

\headline{My <whatever> list}

\begin{itemize}

\input grocery-list.tex

\end{itemize}
\end{multicols}
\end{document}

只有您才能决定“适合打印的两栏布局”是什么样子,但这应该可以让您入门。对于自定义列表,我推荐使用软件包enumitem。对于更精美的字体,删除前三\usepackage行,替换为\usepackage{fontspec},选择您的字体,然后使用LuaTeXXeTeX引擎(命令:lualatexxelatex)。还有ConTeXt代替LaTeX,这对于这种事情来说是理想的(我认为);希望有人发布一个简单的示例供您尝试。对于与特定问题相关的具体问题,只需在此网站上提出更多(即新)问题。

烹饪书肯定会更复杂,但适用相同的原则。

答案2

您的问题比较笼统,答案也比较笼统。

学习如何撰写文章(不涉及数学)是学习更高级形式的一个很好的起点。然后,您可以轻松地使用例如以下包来获取配方:LaTeX 格式的食谱?。 这里http://www.gust.org.pl/bachotex/2006(Halina Wątróbska、Ryszard Kubiak,从 XML 到 TeX,使用 Emacs 和 Haskell)您可以找到使用 Haskell 和 LaTeX 获取古教会斯拉夫语词典的示例。

相关内容