我对 LaTeX 还很陌生。我的第一个问题是 Latex 能做到这一点吗?
- 我有大约 1000 节经文
- 每节诗句在英语和梵语中都有其含义。
- 每节诗句都有三位作者的评论。
当我完成输入后,我希望能够生成以下 pdf。
- 仅限诗句作为 pdf
- 带有英文含义的诗句,以 pdf 格式
- 带有梵语含义的诗句(pdf)
- 带有含义和评论的诗句,以 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
。使用luasqlite3
和sqlite
3 来存储记录。创建一个 lua GUI 界面wxLua
以便于捕获,导出到 LaTeX。如果您让它工作,请告诉我们)。
答案2
我认为这些任务不应该由 LaTeX 这样的排版语言来处理。这是一项超出实际排版范围的任务,我建议将其外包。例如:
- 将每个组件保存在一个额外的文件中,例如
verse/verse001.txt
、meanE/meanE001.txt
、meanS/meanS001.txt
、commE/commE001.txt
、commS/commS001.txt
。这些也可以是.tex
文件或.md
。 以任意顺序合并这些文件,例如,要将诗句、英文含义和诗句编号 023 的注释显示到一个文件中,请输入
cat verse/verse023.txt meanE/meanE023.txt commE/commE023.txt >> vmEc023.txt
您可以运行 bash 脚本来循环遍历所有数字或通配符以
verse/*
包含所有匹配的文件。使用潘多克将文件转换为 pdf:
pandoc -s -S vmEc023.txt -o vmEc023.pdf
第 2 步实际上是多余的,因为 pandoc 能够接受多个空格分隔的文件作为输入。