排列 LaTeX 文档的最佳方法是什么?

排列 LaTeX 文档的最佳方法是什么?

我对 LaTeX 还很陌生。我的第一个问题是 Latex 能做到这一点吗?

  1. 我有大约 1000 节经文
  2. 每节诗句在英语和梵语中都有其含义。
  3. 每节诗句都有三位作者的评论。

当我完成输入后,我希望能够生成以下 pdf。

  1. 仅限诗句作为 pdf
  2. 带有英文含义的诗句,以 pdf 格式
  3. 带有梵语含义的诗句(pdf)
  4. 带有含义和评论的诗句,以 PDF 格式提供。

如果 LaTeX 可以做到这一点,请告诉我应该如何安排我的文档以避免以后进行大量的复制粘贴。 在此处输入图片描述

答案1

您可以将项目视为某种形式的字典,而要管理字典,您需要一个数据库。在这里,您有很多选择,它们取决于您对熟悉的计算机语言的了解。另一个需要考虑的问题是,您是自己插入注释还是由其他人协助您。

我假设你没有任何计算机编程知识,但愿意投入时间努力的学习 TeX/LaTeX。构建 TeX 数据库的基本方法在管理大型文档中的数百个独立组件

在上述帖子的评论中,有人建议普雷德拉格引入版本控制系统。如果你不熟悉,我建议你使用 Github 的 Git 或者化石。当 Predrag 推荐后者时,这对我来说也是新的。除了易于使用之外,Fossil 还有一个很大的优势;首先,它有一个内置的 wiki,这对于像你这样的项目或论文来说非常有价值,而且如果你有合作者,它可以很容易地在网络上发布。我花了大约 5 分钟在 Windows 上设置它(我通常很难设置)。正如我所料泛太平洋行动计划安装用于其他工作,效果很好localhost

现在让我们考虑如何组织信息和 TeX 数据库。

我们将为列表中的每条记录保留一个索引。例如,可以将英文诗句保存在列表中,例如:

 \enverse{verse0001,verse0002..verse1000}

类似地,其他语言诗句也可以存储在列表中:

 \latinverse{verse0001,verse0002..verse1000}

作者评论可以做类似的事情:

 \author@name@i{comments0001,...,comments1000}

\author@name@ii

如果您有更多的作者,可以在稍后阶段进行扩展。在此阶段,为系统构建灵活性非常重要。

要添加英文诗句、梵文和评论,请输入:

\addenglish{verse-3}{verse1......}
\addenglish{verse-1}{verse2......}
\addenglish{verse-2}{verse3......}
\addsanskrit{verse-2}{verse3......}
\addcomments{author1}{verse-3}{....}

这是仅适用于英文诗句的 MWE,其余部分类似,您可以扩展。

\documentclass[11pt]{book}
\usepackage{lstdoc,lipsum,filecontents}
\begin{filecontents*}{verylongverse.tex}
\lipsum[5]
\end{filecontents*}
\begin{document}
\makeatletter
\def\enverse{}
\let\sort\lst@BubbleSort 
\def\addtolist#1#2{%
  \lst@lAddTo\enverse{#2}
}
\long\gdef\addverse#1#2{\addtolist\enverse{#1,}}
\def\addenglish#1#2{%
\long\expandafter\def\csname#1\endcsname{\textbf{#1}: #2}
\addverse{#1}{#2}
\sort\enverse
}
\def\PrintEnglishVerses{%
  \@for \next:=\enverse\do{%
  \csname\next\endcsname}
}
%example
\addenglish{verse-3}{\lipsum[1]}
\addenglish{verse-1}{\lipsum[2]}
\addenglish{verse-2}{\lipsum[3]}
\addenglish{verse-4}{\input{verylongverse}}
% print the activities
\PrintEnglishVerses
\makeatother
\end{document}

当然,如果您有一个小型 GUI(图形用户界面)来输入记录而不是将其键入,那就更好了\addenglish,尽管您可以将命令别名为较短的版本。在这种情况下,我还会放弃 TeX 数据库,使用sqlite带有浏览器前端的数据库,只描述排版宏。为此使用 Lua 可能是一个好主意,因为它为使用 LuaLaTeX 提供了更多机会。无论您决定什么,在确定最终解决方案之前,都要花一两个星期进行准备和尝试。

(勇敢者的替代解决方案。使用LuaLaTeX。使用luasqlite3sqlite3 来存储记录。创建一个 lua GUI 界面wxLua以便于捕获,导出到 LaTeX。如果您让它工作,请告诉我们)。

答案2

我认为这些任务不应该由 LaTeX 这样的排版语言来处理。这是一项超出实际排版范围的任务,我建议将其外包。例如:

  1. 将每个组件保存在一个额外的文件中,例如verse/verse001.txtmeanE/meanE001.txtmeanS/meanS001.txtcommE/commE001.txtcommS/commS001.txt。这些也可以是.tex文件或.md
  2. 以任意顺序合并这些文件,例如,要将诗句、英文含义和诗句编号 023 的注释显示到一个文件中,请输入

    cat verse/verse023.txt meanE/meanE023.txt commE/commE023.txt >> vmEc023.txt
    

    您可以运行 bash 脚本来循环遍历所有数字或通配符以verse/*包含所有匹配的文件。

  3. 使用潘多克将文件转换为 pdf:

    pandoc -s -S vmEc023.txt -o vmEc023.pdf
    

第 2 步实际上是多余的,因为 pandoc 能够接受多个空格分隔的文件作为输入。

相关内容