使用 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

一行命令使用 Docker 编译 Latex 文件,简单优雅的更多相关文章

  1. 用csc命令行手动编译cs文件

    一般初学c#时,用记事本写代码,然后用命令行执行csc命令行可以编译cs文件.方法有两种 1:配置环境,一劳永逸 一般来说在C:\Windows\Microsoft.NET\Framework\v4. ...

  2. c# 命令行下编译c#文件 // c# file类读写文件

    c# 命令行下编译c#文件 2010-03-01 15:02:14|  分类: c# 学习|字号 订阅     在 开始  ——>程序 ——>vstool中打开vs2008命令提示. 通过 ...

  3. php 命令行脚本运行php文件简单演示

    众说周知,php在web服务器领域有着很重要的角色,可是它不仅仅在web领域,只是在web领域表现更为优秀! 它基本有三种用途: web服务端脚本的编写 应用程序图形界面(类似windows自带的计算 ...

  4. 一行命令安装docker和docker-compose(CentOS7)

    想快速装好docker和docker-compose ?那就随本文用一次复制粘贴来完成安装: 环境信息 操作系统:CentOS Linux release 7.7.1908 (Core, 操作账号:r ...

  5. Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包

    一,实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path-.将依赖包添加到工程中后,eclipse不报错了.但是用Maven命令 mv ...

  6. [java] DOS编译 .java 文件得到 .class 文件 并执行 以及使用外部 .jar包 时的命令

    当写一个java文件后,在DOS中进行编译与执行时,如果没有引入外来的包,那情况很简单 例如: public class hello_world { public static void main(S ...

  7. Latex文件如何拆分进行独立编译?

    Latex文件如何拆分并进行独立编译? --latex源文件分批独立编译     最近使用Latex编写长文档,对于文件的组织有些困扰.   如果LaTeX文档比较大,可以考虑拆分为几个部分.比如编辑 ...

  8. 简单的反编译class文件并重新编译的方法

    在没有.java源码的情况下,如果想修改一个.class文件.可以通过以下步骤实现: 修改前的class文件: 一.反编译.class文件成.java文件. 1.可以使用Java Decompiler ...

  9. 一键编译go文件命令.bat

    一键编译go文件命令.bat    , 请新建 一键编译go文件命令.bat    文件,放到你的xxx.go文件目录下 ( 欢迎加入go语言群: 218160862 , 群内有实践) 点击加入 @e ...

  10. CocoaPods常用终端命令及Profile文件简单介绍

    Pod常用终端命令 pod init 创建pod文件 pod install 开始安装第三方框架,如果网上有更新,会安装最新的 pod install --verbose--no-repo-updat ...

随机推荐

  1. Hydra详细使用

    1. 简介 Hydra是什么 Hydra是什么: Hydra是一款网络登录破解工具,可以通过暴力破解方式来猜解用户名和密码,从而获取系统的访问权限.它可以支持多种协议,如FTP.SSH.Telnet. ...

  2. ORA-12560: TNS: 协议适配器错误 windows

    1.监听服务没有起起来.windows平台个一如下操作:开始-程序-管理工具-服务,打开服务面板,启动oraclehome92TNSlistener服务. 2.database instance没有起 ...

  3. Smt贴片换料口诀及注意事项

    Smt贴片换料口诀及注意事项 一.Smt贴片送料口诀 1.若飞达没料,机器报警,操作员根据机器的提示消警 2.取出缺失飞达料,把用完的料盘取下 3.把备好的物料与换下来的料盘核对,确认无误装飞达 4. ...

  4. 随手记:linux校准时间

    记录一下校准时间操作的执行步骤: 首先使用 date 查看当前时间是否准确 校准时间命令 ntpdate cn.pool.ntp.org 如果没有权限: sudo -i 会出现输入密码,直接输入密码即 ...

  5. LangChain vs Semantic Kernel

    每当向他人介绍 Semantic Kernel, 会得到的第一个问题就是 Semantic Kernel 类似于LangChain吗,或者是c# 版本的LangChain吗? 为了全面而不想重复的回答 ...

  6. 一个可用于生产项目 基于 .NET 6 自研ORM

    Fast Framework 作者 Mr-zhong 代码改变世界.... 一.前言 Fast Framework 基于NET6.0 封装的轻量级 ORM 框架 支持多种数据库 SqlServer O ...

  7. 微信小程序搜索不到腾讯服务路线规划插件的解决方法

    具体操作如下: 提示:主要内容都是按开发文档来写的 开发文档: 链接: https://lbs.qq.com/miniProgram/plugin/pluginGuide/routePlan 添加插件 ...

  8. Java 新的生态型应用开发框架,Solon v2.2.14 发布

    Java 新的生态型应用开发框架,Solon :更快.更小.更简单.从零开始构建,有自己的标准规范与开放生态: 150多个生态插件,可以满足各种场景开发 大量的国产框架适配,可以为应用软件国产化提供更 ...

  9. Django, urls的参数name的demo

    Django的路由变化 遇到需要修改路由的需求,特别记录一下 项目开始 django-admin startproject sandboxOA. # 外部文件夹可以改变名字, '.'的意思是上一级不需 ...

  10. 2023-03-23:音视频解混合(demuxer)为PCM和YUV420P,用go语言编写。

    2023-03-23:音视频解混合(demuxer)为PCM和YUV420P,用go语言编写. 答案2023-03-23: 大体步骤如下: 1.打开媒体文件,并获取音频和视频流. 2.对于每个流,找到 ...