首页 > 其他分享 >一行命令使用 Docker 编译 Latex 文件,简单优雅

一行命令使用 Docker 编译 Latex 文件,简单优雅

时间:2023-06-27 13:36:41浏览次数:46  
标签:LaTeX 命令 Latex latexmk 编译 文件 Docker

使用 Docker 编译 LaTeX 文章

LaTeX 是一种常用的排版系统,它可以帮助用户创建漂亮、专业的文档。但是,安装和配置 LaTeX 比较麻烦,特别是对于初学者而言。

Docker 是一个开源平台,可以让用户通过容器化技术来构建、发布和运行应用程序。使用 Docker 容器可以避免依赖问题,从而使得在不同平台上的部署变得更加简单。

为了简化 LaTeX 安装和文件编译流程,可以使用下面的步骤,通过 Docker 运行 Latex 镜像来编译 LaTeX 文章。

注意:这里给出的方法需要提前安装好 docker,所以也不是完全适用于纯小白……只是把安装配置 LaTeX 的麻烦转变为了安装配置 Docker 的麻烦。但是胜在一劳永逸!

下面是如何使用 Docker 编译 LaTeX 文章的步骤。

步骤 0: 编写你的 LaTeX 文件

步骤 1:编写 .latexmk 文件

为了方简化编译命令,可以在编写 LaTeX 文件的目录下,额外添加一个名为 .latexmk 的文件,用于告诉 latexmk 脚本如何处理 LaTeX 文档。具体来说,它包含了一些变量和设置,如下所示:

$pdf_mode = 1;
$bibtex_use = 2;
$out_dir = 'build';
$clean_ext = 'aux bbl blg log nav out snm toc';
@default_files = ('main.tex');

其中,

  • $pdf_mode = 1 表示使用 pdflatex 工具生成 PDF 输出文件,如果文档存在中文字符的话,设为 3 表示使用 xelatex 工具编译;
  • $bibtex_use = 2 表示使用 biber 来管理 BibTeX 参考文献,用于处理参考文献的引用;
  • $out_dir = 'build' 表示生成的输出文件(中间过程文件、pdf 文件等)存储在当前目录的 build 文件夹中;
  • $clean_ext = 'aux bbl blg log nav out snm toc' 设置要清理的文件类型;
  • @default_files = ('main.tex') 表示默认编译 main.tex 文件,也就是说,你的要编译的 Latex 文件名为 main.tex ,如果不设置该选项,则默认编译所有 tex 文件。

步骤 2:运行 Docker 命令

接下来,我们需要运行一个 Docker 命令,用于编译 LaTeX 文章。具体来说,命令如下所示:

docker run --rm -t \
       --user="$(id -u):$(id -g)" \
       --net=none \
       -v "$(pwd):/tmp" \
       --workdir /tmp \
       leplusorg/latex \
       latexmk

这行命令使用了 Docker 镜像 leplusorg/latex,运行 latexmk 编译当前工作目录下的 LaTeX 文章。
命令会自动依据 .latexmk 文件中的设定,编译 tex 文件并输出生成的 PDF。如果需要重新编译,只需要修改 LaTeX 文件后再次运行上面的命令即可。

最后

使用到的 docker 镜像为 leplusorg/latex,更多信息参见链接:GitHub - leplusorg/docker-latex: A convenient way to run LaTeX on various platform using Docker (latexmk, pdflatex...). 上面的 docker 命令为 Linux 下的命令,Windows 下的命令在这里可以找到。

本质上是用了 latexml 编译工具对文件进行编译,所以更多选项参见这个工具的使用说明:Using Latexmk - homepage

标签:LaTeX,命令,Latex,latexmk,编译,文件,Docker
From: https://www.cnblogs.com/zkmjolnir/p/17508578.html

相关文章

  • ubunut 虚拟机 , 编译过程中, 内存爆满, 卡死 ,重启后报错。
    问题: 在虚拟机中编译linux 过程中,内存沾满,之后强制重启,之后,虚拟机无法启动。报错如下:  解决的方法就是,找到虚拟机的文件夹,然后删除以.lck后缀的文件夹,所有的都产出,重启就可以了。 ......
  • docker compose部署mysql数据库
    1.想要达成的目标通过dockercompose来部署mysql,并实现一些列需求在mysql容器初始化时设置字符类型设置mysql容器的时区为中国时区设置mysqlroot密码,采用.env传入参数初始化时创建一个数据库初始化时创建用户名和密码挂载本地目录到容器内容器初始化时执行脚本,导入......
  • 不能使用astyle对Linux的Kconfig和Makefile进行排版,会导致编译错误
    代码排版工具不同人代码的排版习惯不一样。遇到自己不喜欢的格式,看起来比较麻烦。可以使用astyle对代码进行排版。我喜欢以"otbs"格式的排版。命令如下:astyle-s--style=otbs*.castyle-s--style=otbs*.h错误排版一次使用时,不小心对所有文件进行了排版。hankf@XSZGS4......
  • 解决PetaLinux编译Microblaze的U-Boot的错误 “undefined reference to `eth_get_dev_
    错误PetaLinux编译Microblaze的U-Boot时,遇到下列错误,链接时提示找不到相关函数。|microblazeel-xilinx-linux-ld.bfd-Bstatic--no-dynamic-linker-Ttext0x80100000-ou-boot-Tu-boot.ldsarch/microblaze/cpu/start.o--start-grouparch/microblaze/cpu/built-......
  • LaTeX写作基本模板
    main.tex\documentclass{ThesisStyle}\begin{document}\maketitle\section{绪论}引用测试\citep{liu2023dynamic}\bibliography{ref}\end{document}ThesisStyle.cls\LoadClass[a4paper,12pt]{ctexart}%支持中文的ctex宏包%\RequirePackage{ctex}%页面布局\Re......
  • autoware docker安装
    1、用源码编译还是安装docker版?用docker版,源码编译的依赖项不好装2、autowaredocker的版本有哪些?装什么版本?3、docker的基本使用(1)权限sudogroupadddockersudogpasswd-a$USERdockernewgrpdockerdockerps(2)命令(3)共享文件夹的使用等问题4、autoware的基本使用......
  • 什么是Docker
    什么是DockerDocker是一个开源的应用容器引擎,基于 Go语言 并遵从Apache2.0协议开源。ogo解释:标志是一头鲸鱼携带着一堆容器。它正在向您发送这些信息的途中。Docker直译过来是码头工人,然而Docker给人的第一感觉是容器,容器技术英译为LinuxContainer,Container的直译有......
  • Docker技术架构概述
    1、Docker技术构成Docker软件采用客户-服务(CS架构)的技术架构模式,DockerClient和DockerDaemon交互,DockerDaemon负责创建、运行、发布容器,DockerClient和DockerDaemon可以在同一个系统中,或者DockerClient可以通过RESTAPI远程控制DockerDaemon。DockerCompose负责控制一组应......
  • 使用 Debian、Docker 和 Nginx 部署 Web 应用
    前言本文将介绍基于Debian的系统上使用Docker和Nginx进行Web应用部署的过程。着重介绍了Debian、Docker和Nginx的安装和配置。第1步:更新和升级Debian系统通过SSH连接到服务器。更新软件包列表:sudoaptupdate升级已安装的软件包:sudoaptupgrade第2步:......
  • ​​统信UOS服务器操作系统迁移docker目录​​
    原文链接:统信UOS服务器操作系统迁移docker目录hello,大家好啊,今天给大家带来一篇在统信UOS服务器操作系统上迁移docker目录的文章,在工作中我们会发现,当我们没有将/var目录单独分区的时候,运行docker容器后,会将根目录挤压,因此我们可以通过迁移docker目录的方式,释放根路径的磁盘空间,文......