这是thomasWeise/texlive图像的重大改革。现在,它基于thomasweise/docker-pandoc ,反过来又基于thomasweise/docker-texlive-full 。这意味着它变得更大,但是现在它具有最新的pandoc , TeX Live的发行版,并且包含比以前更多的Pandoc过滤器。有关容器的原始版本,请参阅标签1.0.0。
这是一个包含TeX Live安装(版本2015.2016)的Docker映像,其中有几个支持脚本,用于将乳胶文件汇编为PDF。目的是提供一个统一的环境,用于以可预测且可再现的行为编译乳胶文档,同时减少安装和维护乳胶安装所需的精力。该图像旨在特别适合中国观众,并配备了几种预装的开放式字体。
可以按照以下准则安装Docker:
curl -fsSL http://get.docker.com/ | sh在您的命令curl -fsSL http://get.docker.com/ | sh上,一切都会自动完成(如果您安装了curl ,通常是这种情况),在下面,我们讨论运行时可以传递给此图像的各种参数。如果您已经安装了Docker,则无需执行任何其他安装:您第一次进行docker run -t -i thomasweise/texlive或类似的东西(请参见下文),该图像将自动下载并从Docker Hub安装。
此图像有两个基本用例:
此外,有两种方式向容器提供数据:
命令的常见形式如下:
docker run -v /my/path/to/document/:/doc/ -v /path/to/fonts/:/usr/share/fonts/external/ -t -i thomasweise/texlive COMMAND ARG1 ARG2...
在哪里
/my/path/to/document/必须用包含要编译的乳胶文档的文件夹的路径替换。该文件夹将作为文件夹/doc/在容器内部提供。如果您使用没有命令参数的图像(请参见下文),则将在此/doc/文件夹中获得BASH命令提示符。-v /path/to/fonts/:/usr/share/fonts/external/ parameter。这里, /path/to/fonts/必须用包含这些字体的文件夹的路径代替。如果您不需要其他字体,则可以将整个-v /path/to/fonts/:/usr/share/fonts/external/ away留下整个-v/path/for。COMMAND ARG1 ARG2...在上面命令行中的代表。如果您指定了此类命令,则容器将启动,执行命令,然后关闭。如果您不提供这样的命令,则容器将启动,并在文件夹/doc/中为您提供bash提示。为了在文件夹/my/path/to/document/使用xelatex.sh中编译一些名为myDocument.tex的文档,并使用文件夹/path/to/fonts/使用其他字体,您将在下面的命令中输入类似于正常终端的命令(Linux), Docker QuickStart QuickStart终端(MAC OS)或Docker Toolbox Terminal (Windows)(Windows):
docker run -v /my/path/to/document/:/doc/ -v /path/to/fonts/:/usr/share/fonts/external/ -t -i thomasweise/texlive
xelatex.sh myDocument
exit
或者,您也可以做
docker run -v /my/path/to/document/:/doc/ -v /path/to/fonts/:/usr/share/fonts/external/ -t -i thomasweise/texlive xelatex.sh myDocument
第一个版本启动了容器,并在命令提示符下将您留下。现在,您可以使用我们的xelatex.sh助手脚本编译文档,然后exit容器。在第二版中,您将命令直接提供给容器。容器执行它,然后直接退出。
两者都应将编译的PDF文件留在文件夹/my/path/to/document/中。如果您不使用我的预定义脚本进行构建(请参见下面的第3.1点),我建议在编译后执行chmod 777 myDocument.pdf ,以确保可以在您的真实(Host)系统的用户中访问生产的文档,而不仅仅是从Docker容器中访问。如果您直接提供一个单个命令进行执行,则容器尝试启发您的pdf并正确设置其权限。
-v sourcepath:destpath选项是可选的。它们允许您从本地系统“安装”文件夹( sourcepath )到Docker容器中,在该容器中作为路径destpath可用。我们可以使用此方法允许在容器中运行的乳胶编译器通过将其文件夹安装到名为/doc/文件夹中,从而在您的乳胶文档上工作。但是我们还可以将带字体的外部文件夹安装到Linux字体目录结构中。为此,请始终将您的本地字体目录安装到/usr/share/fonts/external/ 。
如果您只想在不安装外部文件夹的情况下使用(或偷窥)图像,则可以通过以下方式运行此图像:
docker run -t -i thomasweise/texlive
使用语法直接传递单个命令执行的另一个示例是基于USTC论文模板编制论文。可以使用make来编译此类文档,因此您可以做类似的事情
docker run -v /path/to/my/thesis/:/doc/ -v /path/to/fonts/:/usr/share/fonts/external/ -t -i thomasweise/texlive make
图像具有以下组件:
TeX Live版本2015.2016ghostscript版本9.18你可以用它来构建
docker build -t thomasweise/texlive .
我们提供一组脚本(在/bin/ )中,可用于编译乳胶文档:
通常,乳胶编译意味着调用乳胶编译器程序,然后是bibtex,然后是编译器,然后再调整编译器,然后将各个编译器输出格式的一些转换程序转换为PDF。使用编译器脚本,我们尝试将这些调用凝结到一个程序调用中。
latex.sh <document>用乳胶(也可以bibtex)编译乳胶<document>lualatex.sh <document>用lualatex(也可以bibtex)编译乳胶<document>pdflatex.sh <document>用pdflatex编译乳胶<document> (也做bibtex)xelatex.sh <document>用Xelatex编译乳胶<document> (也做bibtex)mintex.sh <document> <compiler1> <compiler2> ...允许您调用上述编译器脚本的任意选择以产生最小的pdf 。例如,使用mintex.sh mydoc latex lualatex xelatex将使用latex.sh , lualatex.sh和xelatex.sh编译mydoc.tex ,并保留最小的最小的pdf文件。我们还提供了一些用于使用PDF , PS和EPS文件的实用脚本。
eps2pdf.sh <document>将EPS文件<document>转换为PDFfilterPdf.sh <document>将文档(以PostScript/ PS , EPS或PDF格式)转换为PDF ,并将文档中使用的同样多的字体包含在最终的PDF中。这允许从.ps文件<document>产生PDF ,该PDF应在尽可能多的计算机上正确显示。sudo是伪sudo命令:在Docker容器中,我们不需要sudo 。但是,如果您只使用一个符合要求的命令来称呼普通的sudo (没有其他参数),则此脚本将模仿sudo 。通过什么都不做。downscalePdf.sh <document> {resolution}通过缩小所有包含的图像(指定分辨率),使PDF文档较小。findNonASCIIChars.sh <document>在文档中找到非ASCII字符。在.tex文档中,此类字符可能会带来问题。 此图像均根据GNU通用公共许可证版本3,2007年6月29日,您可以在文件许可证中找到。许可证适用于构建图像的方式,而图像内部的软件组件则在其各自的版权持有人选择的相应许可下。
如果您有任何疑问或建议,请联系中国安河Hefei的Hefei University Applied优化研究所的Thomas Weise。