我正在写博士论文,由于我并不是一个最不混乱的人,所以我也添加了注释以供将来参考。当然,这意味着它不是生产级,或者您想如何称呼它。
有一个很好的软件包versions
可以处理版本问题。我们也有有用的答案将 latexdiff 与 git 结合使用使用 git。我现在的目标是拥有类似于版本的东西,但当内容介于两者之间时,内容会被删除,\advisorcannotsee
并且\allokay
会在advisor
分支中签出。最好只编译主版本(或标记为要编译的版本)。
这样的事情是否已经存在,或者是否有更好的解决方案?
根据请求:
工作流程示例:
- 我有一个 git 存储库,位于我的论文的工作目录上,其中包括我使用
\input
或其他方式所做的所有评论。 - 除了主分支之外,我还有多个分支,比如说
paper1
,advisor
包含与主分支相同的内容(包含所有内容),但是部分内容被切掉了。 - 我修改了我的文档,并添加了仅供我查看的内容(主要内容)和一些供我的顾问查看的内容。我想使用类似版本包的东西来标记属于哪里的部分。
- 编辑完成后,我会提交更改。由于我的修改包含属于不同分支的部分,因此我希望“构建”顾问认可的版本(删除部分内容)并提交,
advisor
并将整个内容提交到主分支。
答案1
首先,有几个定义:
修订:项目中文件的一种特定状态,位于一条或多条历史记录中
版:一种特定的变体,其目的是与其他变体不同
(请注意,我热衷于使用“版本”这个词;它太模糊了,并且只会在这里出现,如果有的话,在谈论“版本控制系统”时。)
我坚信,使用不同的修订版本(可能在 VCS 的不同分支上)不是管理版本的好方法。个人尴尬的经历表明,当创建分支时它们永远不会再融合在一起,当一个更改需要合并到多个版本中时,一个分支上的更改可能会被遗忘,或被错误地包含在内。
一个更好的方法是创建一个可配置的主文件,并将其包含在一系列顶级文件中,每个所需的版本对应一个文件。
这是一个包含三个版本的示例。这是一份非常简单的试卷,包括问题、答案和笔记,并使用 Viktor Eijkhout 的comment
软件包和 Hendrik Mittby 的todonotes
软件包。您可能会发现其他软件包更适合您的特定情况。
为了简单起见,我没有使用任何与考试或问答相关的软件包,只是用了 Enrico Gregorio 的软件包kantlipsum
来补充一点。请记住,这并不是“优秀排版”的示例,只是制作多态版本的一般原则的说明。
这三个版本分别是:
- 学生版:仅限问题
- 考官版:问题和解答指南
- 导师版:问题、答题指南以及我与导师讨论考试发展的笔记。
该示例由五个 TeX 文件组成:
学生.tex:
\documentclass[disable]{memoir} % [disable] is passed to todonotes
\input{preamble}
\excludecomment{answers}
\input{master}
审查员.tex:
\documentclass[disable]{memoir}
\input{preamble}
\includecomment{answers}
\input{master}
主管.tex:
\documentclass{memoir}
\input{preamble}
\includecomment{answers}
\input{master}
序言.tex:
\usepackage{kantlipsum}
\usepackage{comment}
\usepackage{todonotes}
\newcommand{\mynote}[1]{\todo[inline]{#1}}
master.tex:
\begin{document}
\section{Philosophy}
Compare and contrast Aristotle's view with that of Kant, expressed in the following quotation:
\begin{quote}
\kant[2]
\end{quote}
\mynote{Should that be Aristotle, or would Plato be more demanding?}
\begin{answers}
\textbf{Answer Notes:}
bear this in mind: \kant[2]
\end{answers}
\listoftodos
\end{document}