我正在用LaTeX写一个很长的文档。我有我的工作电脑和笔记本电脑,我都在工作。我需要保持两台计算机之间的所有文件同步,并希望保留修订历史记录。我选择git作为我的DVCS,并且在我的服务器上托管我的存储库。我还使用Kile + Okular进行编辑。Kile没有集成的git插件。我也不会在这篇文章上与任何人合作。如果我的服务器由于某种原因无法访问,我也在考虑在codaset上放置另一个私有存储库。
在这种情况下,推荐的工作流程实践是什么?分支如何适用于此工作方案?有没有办法比较同一文件的两个版本?那使用隐藏库呢?
发布于 2011-06-01 00:09:29
对LaTeX工作流的更改:
有效管理Git+LaTeX工作流的第一步是对您的LaTeX习惯进行一些更改。
一种解决方案是使用git diff --color-words (请参阅我对类似问题How to use Mercurial for version control of text documents?的回答,其中我给出了一个示例)。然而,我必须强调,拆分成单独的行是一个更好的选择(我在回答中只是顺便提到了它),因为我发现它可以产生非常小的合并冲突。
如果您需要查看代码比较,请使用的原生
sha。有关更多详细信息,请参阅documentation和Showing which files have changed between two revisions。另一方面,如果您需要查看格式化输出的差异,可以使用pdf,这是一个优秀的实用程序(用perl编写),它采用两个latex文件并以(image source):格式生成整齐的差异输出( latexdiff

您可以使用git-latexdiff在单个命令中组合git和latexdiff (如果需要,还可以使用latexpand )(例如,使用git latexdiff HEAD^查看工作树和倒数第二次提交之间的差异)。
\include{file}命令在主文件中调用它们。这样,您可以更轻松地编辑工作的本地化部分,也可以更轻松地进行版本控制,因为您知道每个章节都做了哪些更改,而不必从一个大文件的日志中找出它。高效使用Git:
master分支应该是您的工作主体,处于其最新的“准备发布”状态,也就是说,如果在所有分支中,如果有一个分支您愿意将您的名字放在上面,那么它应该是主分支。如果你是研究生,分支也是非常有用的。正如任何研究生都会证明的那样,导师肯定会有许多更正,其中大多数是你不同意的。然而,你可能会被期望至少暂时改变它们,即使它们在讨论之后被恢复。因此,在这种情况下,您可以创建一个新的分支advisor并根据他们的喜好进行更改,同时维护您自己的开发分支。然后你可以将两者合并,然后挑选你需要的。
,
下面是我最近一篇论文中的分支和合并示例(我在OS上使用SourceTree,在Linux上从命令行使用Git )。您可能会注意到,我不是世界上最频繁的提交者,也不会总是留下有用的评论,但这不是您不遵循这些好习惯的理由。主要的外卖信息是在分支机构工作是有帮助的。我的想法、想法和开发是非线性进行的,但我可以通过分支来跟踪它们,并在我满意时将它们合并(我也有其他分支没有什么结果,后来被删除了)。如果提交意味着什么(例如,对期刊的初始提交/修改后的提交/等等),我也可以“标记”提交。在这里,我将其标记为“版本1",这就是到目前为止草案所在的位置。这棵树代表了一周的工作。

\alpha更改为\beta everywhere)。这样,您可以恢复更改,而不必回滚其他内容(使用git可以做到这一点,但是,如果您可以避免这种情况,为什么不呢?)。前言中的补充内容也是如此。发布于 2011-05-31 22:28:21
我也有类似的工作流程。尽管一次只处理一个分支,但我发现对于不同的工作状态有单独的分支是有益的。例如,想象一下把你的论文的一份很好的草稿发送给你的导师。然后,你会有一个疯狂的想法!你想要开始改变一些核心概念,重新设计一些主要的部分,等等,所以你分支并开始工作。您的主分支始终处于“可发布”状态(或者与您所处的状态尽可能接近)。因此,当你的另一个分支疯狂并有一些剧烈的变化时,如果另一个出版商想看看你有什么,或者你是一个正在提交会议的学生,主分支总是可以发布的,准备好去(或者准备展示给你的导师)。如果你的PhD顾问想要在早上的第一件事上看到草稿,是的,你可以保存/暂存/提交你当前的更改,使用标签或搜索日志,但为什么不保留单独的分支呢?!
假设您的主分支具有您的工作的“可发布”状态。现在,您希望将其提交给多个同行评审的期刊,每个期刊对相同的内容有不同的格式要求,并且您希望它们返回一些关于如何编辑论文以适应其读者的不同小批评,等等。您可以轻松地为每个期刊创建一个分支,对期刊进行特定的更改,然后在收到反馈时对每个单独的分支进行更改。
我还使用了Dropbox和git来创建您上面描述的系统。您可以在dropbox文件夹中创建一个基本存储库。然后你可以从任何一台电脑推送/拉取到你的dropbox,以保持所有终端的最新状态。这个系统通常只有在合作者数量很少的情况下才起作用,因为如果人们试图同时推送到dropbox repo,就有可能发生腐败。
从技术上讲,您也可以只在dropbox文件夹中保留一个存储库,然后从那里执行所有工作。然而,我不鼓励这样做,因为人们已经提到,dropbox在同步不断变化的文件(gits内部文件)时遇到了一些问题。
发布于 2012-06-02 08:54:53
我试着将它作为一个bash函数来实现,我已经将它包含在我的~/.bashrc中,以使它始终可用。
function git-latexdiff {
if [[ $# != 2 ]];
then
printf "\tusage: git-latexdiff <file> <back-revision> \n";
elif [[ $2 -lt 0 ]];
then
printf "\t<Back-revision> must be positive\n";
else
dire=$(dirname $PWD/$1);
based=$(git rev-parse --show-toplevel);
git show HEAD~$2:$(echo $dire| sed 's!'$(echo $based)'/!!')/$1 > $1_diff.tmp;
latexdiff $1 $1_diff.tmp > $1_diff.tex;
pdflatex $1_diff.tex;
okular $1_diff.pdf;
rm $1_diff*;
fi;
}请注意,此函数需要安装latexdiff (并且可以在路径中找到)。对它来说,找到pdflatex和okular也很重要。
第一种方法是我首选的处理LaTeX的方法,因此您也可以将其更改为latex。第二个是我的PDF阅读器,我想你可能想在gnome下使用evince,或者其他一些解决方案。
这是一个快速的版本,只考虑到一个文档,这是因为使用git,您将会浪费大量的时间和精力来跟踪多个文件的LaTeX文档。你也可以让git来完成这个任务,但是如果你愿意,你也可以继续使用\include。
https://stackoverflow.com/questions/6188780
复制相似问题