【CNB】论文赶工?CNB+LaTeX助你八臂之力

本文最后更新于:2025年6月29日 下午

前言

word这一块

大家平时写文章一般用的都是word,但是对于我们这种程序派的来说,word这样简单傻瓜的需求还是不能满足,要精通word太难了,一片4万字的文章,七八十张图表,要自己设置标注,设置格式,设置编号,弹出来的页面窗口七七八八,功能多到对它的开发不足5%,再加上一个不小心改了某个段落的格式,还有可能整篇文章就散架了。改一版,发一版,发来发去你一个字体我一个字体,你一个文件我20个文件,硬盘不够整。合并所有人的文章的时候,直接复制粘贴还可能丢格式,格式刷刷来刷去,手都得抽筋了。

请在此添加图片描述

word虽然简单傻瓜,但是面对复杂公式、复杂排版,或者我想对全文精确控制、全局掌控的话,word这块就略显不足,你不能全选文章一次性更改,即便设置了模板,从网上或者其他人的文章里面复制过来照样会把模板污染了。

再加上一个世纪难题,数学公式的排版。考考你,word里面怎么打出求和符号,怎么用word打出下面这个公式

$ \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. $

再继续考你,这个公式如何用qq发给你的朋友,在不使用word保存文件的前提下。当然你可以选择图片,但是公式错了他没法编辑。即使你发了word给他,他粘贴过来万一变成图片了,文章散架了,甚至把一些莫名其妙的标签搞过来,文章废了,这就得不偿失了。虽然概率很小,但是在大学期间我见过无数这样的例子,并不是说不会用word,而是调整很麻烦,操作界面功能复杂,要设置一个东西,需要点开数百个窗口去设置,还要针对不同文本进行不同设置,非常复杂。

有没有一种可能,可以以写代码的形式,类似html那样,先把排版大概的样式写了,至于排版长什么样,让计算机自己去渲染,因此,下文用命令的方式写文章,真是个伟大的发明

写文章就像写代码

markdown

对于程序员来说,markdown绝对是最广为人知的一种用命令排版文章的格式了,开源项目的readme、各种文章编辑器都看得到markdown的身影。来见见腾讯云社区的编辑器

请在此添加图片描述

以及各大开源平台自己的markdown渲染

请在此添加图片描述

它是一种轻量型的标记语言,类似html那样,通过一些标签就能对你的文章进行定义,比如#是标题、##是二级标题、是代码块、**是加粗,所有的这些命令都能够在你的键盘上找到,而且熟练之后打下这些标记非常方便。

再加上它是以纯文本的方式存储的,分享非常方便,迁移文章的时候只需要把.md文件内容全部复制,引用的图片一并打包即可,也正是这一特性非常适合git进行版本管理。而word是二进制,git并不一定知道两个文件直接diff了什么,你发我我发他一次次循环就会堆积一大片.docx文件,非常难受。

但是markdown仍然还是跟html一个性质的,复杂排版写起来仍然需要更多定义,比如颜色,你会发现大部分编辑器都没这个功能,有了也不一定渲染得出来,正是因为不支持。

请在此添加图片描述

再来,上文提到的公式,在支持LaTeX的markdown里面就非常简单,而且还可以复制粘贴给你的朋友,不用担心复制过去乱了,带底色了,字大了甚至变图片了。

1
`$ \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. $`

LaTeX

理工科的小伙伴可能比较熟悉,国外很多文献,例如arxiv这种平台,都是只接收LaTeX(大写L小写a大写T小写e大写X)这种格式的。latex的前身是TeX,广泛用于生成高质量的科技和数学文档,由美国计算机科学家Leslie Lamport在 20 世纪 80 年代开发。TeX由Donald Knuth开发的底层排版引擎,主要用于处理复杂的数学公式和高质量的排版。

而对于超长文章来说,LaTeX可以实现全局控制,比如正文统一16pt字号,标题统一以「第x章 一级标题」、「x.y.z 三级标题」等的格式统一控制,而且只需要写命令就能控制,复制粘贴,甚至交给AI修改都非常方便。

当然,不是所有文章都适合LaTeX,没有公式或者内容不复杂、模板不容易乱的文章,单独配置很复杂,有这个时间去调一下word或许更快

适合用latex的可以参考下文:

  • 需要插入复杂数学公式和参考文献的文档。
  • 精确调节和自动处理排版细节,生成符合国际出版标准的文档格式。
  • 超大型文档(如书籍、论文、技术手册),LaTeX能够自动生成目录、索引、参考文献,并支持交叉引用和自动编号。
  • 数学、物理、工程学等领域的文章写作
  • (我自己加的)利用git特性进行版本管理的,用纯文本方式分享和批阅的文章

听起来高大上,但是和markdown没有什么区别,不吓唬大家了,下面就是一个latex写的简单文章:

请在此添加图片描述

如何选择

如果LaTeX满足你写文章排版的需求,那就继续往下看;如果不需要,也可以学习一下,以后露一手也不亏。

LaTeX语法并不复杂,跟markdown类似,只不过换成了一些英文单词,H1~H3是\section,\subsection,\subsubsection,图片和表格比较复杂,但是有很多工具可以实现转换,下文会提到。

环境安装

这里推荐TeXLive部署,但是再怎么推荐,最好的办法是使用CNB,所以就不过多展开,毕竟他们官网学术味太浓了,很难有看下去的欲望。简单来说就是下载安装包,安装,过程因为网络导致特别久,要支持中文和常见文章,至少需要10个GB的空间,

请在此添加图片描述

常用语法

既然都到这里了,如果大家没接触过latex的话可以学习一下常见的语法

  • \section,\subsection,\subsubsection:一级到三级标题
  • \textbf{} 加粗的内容
  • \centering 居中的内容
  • \ref{} 引用某个label(如表x,图x)
  • \begin{实现的命令}

begin

这里,需要展开讲一讲

这里主要实现一些命令,比如项目分点,表格,图片等等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
\subsubsection{可以插入一张图片}
如图\ref{fig:xilonen}
\begin{figure}[H]
\centering
\includegraphics[width=0.3\textwidth]{1.png}
\caption{我永远喜欢希诺宁}
\label{fig:xilonen}
\end{figure}

\subsubsection{插入longtblr表格}
\begin{longtblr}[
caption = {CNB资源使用费定价},
]{
width = \linewidth,
colspec = {Q[168]Q[187]Q[204]Q[372]},
hlines,
vlines,
}
计费项 & 免费额度 & 超额计费标准 & 使用场景\\
仓库存储 & 100 GiB & 1 元/GiB/月 & Git 对象\\
对象存储 & 100 GiB & 1 元/GiB/月 & 制品、LFS 对象、图片及附件\\
云原生构建 & 160 核时/月 & 0.125 元/核时 & 云原生构建\\
云原生开发 & 1600 核时/月 & 0.125 元/核时 & 云原生开发
\end{longtblr}

基于 Docker 生态,对环境、缓存、插件进行抽象,通过声明式的语法,帮助开发者以更酷的方式构建软件。
\begin{enumerate}
\item 声明式:声明式语法,可编程、易分享。
\item 易管理:与代码一起,同源管理。
\item 云原生:资源池化,屏蔽基础设施复杂性。
\end{enumerate}

效果如下

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

由于篇幅限制,这里不展开太多关于LaTeX的知识。

CNB

往期文章提到了很多CNB。CNB基于Docker生态,对环境、缓存、插件进行抽象,通过声明式的语法,帮助开发者以更酷的方式构建软件。

通俗来说,它是个简单的云服务器,这台服务器运行在容器里,配置什么的需要你自己定义,运行结束后就销毁。

这样的特性适合我们要做的事情,因为latex环境大小太恐怖了。

开始使用

有请

https://cnb.cool/arsrna/cnb-latex/

直接进入项目,fork到自己的仓库下。我已经安装了全部texlive包,以及常用中文字体,可以通过fc-list查询。常用的推荐SIMSUN,kaiti_GB2312宋体和黑体。

请在此添加图片描述

点击右上角云原生开发,趁你不注意进到了第二页,点击webide就来到熟悉的界面

请在此添加图片描述

这里不需要操作什么,接下来要做的,就是开始写作

开始写作

这里推荐新建一个文件夹专门存放写作的内容,方便打包下载到本地,以及产生缓存的清理。

请在此添加图片描述

把文章基本框架写进去

请在此添加图片描述

点击右上角的运行按钮,等待一会可以看到在目录下就出现了一个pdf,这个就是latex输出的文章

请在此添加图片描述

为了方便,可以把pdf拖动到屏幕右侧,实现边写latex边预览

请在此添加图片描述

文章写完后,使用git功能,把tex编辑的内容commit+push,就可以保存到cnb上了,下次再使用同样的方法进入,找到那个文件接着编译即可。

也可以使用tar命令,打包文件下载到本地接着写作。

教程就到这里,很简单

配置

.cnb.yml

这是CNB变NB的核心文件

请在此添加图片描述

在这里,使用了我打包的texlive环境,配置了16核心32G的机器,可以参考项目目录下Dockerfile

请在此添加图片描述

注意,构建一次非常耗时间,所以我把构建方式改为web按钮构建(上图未更新),防止浪费账号资源。

你也可以定制构建环境,在Dockerfile里面都有,手动点击构建按钮,然后更换.cnb.yml的docker镜像地址为自己制品库的即可。

webide

.vscode/settings.json 里面对设置做了介绍,我也对texlive做了设置,适配了XeTeX中文环境,更多的可以参考文件内注释。

请在此添加图片描述

已知问题

文章加载卡

这个是网络问题,卡的时候什么都动不了,千万不要刷新,等到webide加载完毕后保存再刷新,否则没有保存的内容就丢了,或者关闭自动更新。

字体报错

检查导言设置的CJKmainfont,必须是系统已经安装的字体,通过fc-list就可以查询,安装的方法参考Dockerfile


【CNB】论文赶工?CNB+LaTeX助你八臂之力
https://www.arirs.cn/posts/2535825/
作者
Ar-Sr-Na
发布于
2025年6月29日
许可协议