高效使用 LaTeX 技巧

但对于一般人而言,你不需要通过学习 Vim 来达到高效编辑 LaTeX 的方式。而是通过一些比较容易实现的方式,使得你能够在原来的基础上更加高效得使用 LaTeX,并达到以思考的速度输入 LaTeX 的方式。

在第一部分,我会首先介绍高效编辑 LaTeX 文档的几种方式,这能够让你在短时间内迅速提高你的 LaTeX 输入速度。

而第二部分,则是将输入 LaTeX 中遇到的常见问题进行一个总结,例如输入数学字母、自定义定理类环境、参考文献的设置等等。尽管网络上已经有各种各样的教程教你如何使用这些特殊的环境,但搜索时依然能搜索到很多没有用的方案。这是因为你用的 TeX 版本可能跟作者不同,或者是作者所说的方案已经过时但网站没有及时更新等等。我在这里给出我对这些基本环境的一个使用,并会经常进行更新。

我用的 TeX 编译器主要是 TeXPadTeX,这是一款支持实时编译的 TeX 编译器,而不需要手动进行编译。而在 TeXPadTeX 无法处理的文档时,我会选择使用 TeX Live。TeXPadTeX 基本兼容 TeX Live,在使用上没有太大的区别。而对于 CTeX,我由于没有安装 CTeX,所以无法测试。


目录

  1. 高效编辑 LaTeX 文档的几种方式

  2. 数学字母

  3. 自定义定理类环境

  4. 插入图片

  5. 参考文献


1 高效编辑 LaTeX 文档的几种方式

1.1 实时预览

用 LaTeX 写文档很好,但它也有一个很明显的缺点,那就是用 LaTeX 写出来的文档,并不是所见即所得。不论是正文还是数学公式或者是参考文献,都需要将其写入 TeX 文件,并进行编译以后才能生成 PDF。而在预览 PDF 文件时,如果你发现有些地方存在书写错误,你就需要更改相应的 TeX 文件,并再次进行编译才能够生成新的 PDF 进行预览。

非所见即所得的 LaTeX 造成了很多困扰,这表示你必须编译以后才能看到内容上的错误,而修改内容又需要重新编译,这是一个重复性操作。另一方面,你只有在编译时,才能够发现 TeX 代码中的错误,这在后期调试时十分不方便。

尽管现在已经有越来越多的编辑器支持「实时预览」,也就是所见即所得。但不论是在功能上,还是体验上,都比不上 TeXPad 这款软件。TeXPad 的一个特色就是左侧编辑右侧预览,几乎无任何延时,并且在报错上也是十分灵敏,方便你在编写的过程中找到错误。

实时预览与实时报错演示

实时预览与实时报错演示

TeXPad 对新手十分友好,通过实时预览和实时报错,能够在入门 LaTeX 时节省很多的时间在调整细节和纠错上。有许多 LaTeX 老手并不喜欢这样的模式,认为再复杂的式子他也可以快速输入。我曾一度也如此认为,直至有一次要输入以下公式:

输入复杂的公式

输入复杂的公式

这个公式的复杂,让我深切体会到 TeXPad 实时编译实时预览的好处。向量需要加粗,括号需要变大,上标需要加上小括号等等。如果没有实时预览,只要有一处没有考虑到就需要重新修改重新编译重新预览,反复如此。而有了实时预览之后,就可以一次性将这个公式打出来。

1.2 文本扩展

在 LaTeX 中插入一张图片或者一个表格并不容易。对于插入图片而言,要定义 figure 环境,设置图片位置、图片的文件名,图片标题等等。对于插入表格而言,需要定义 table 环境,设置表头、对齐方式、表格具体内容等等。插入图片和表格的代码相对比较复杂,不容易记忆。

好在插入图片或者插入表格都有固定的规律可循。比如,插入图片时,我们通常使用类似这样的代码:

\begin{figure}[ht]
   \centering
   \includegraphics[width=0.8\textwidth]{x2}
   \\[0mm]
   \caption{$y=x^2$}
   \label{fig:x2}
\end{figure}

这样,对于每一张图片,只需这三个大括号中依次填入: 图片名称、图片标题、标签即可。通过 Keyboard Maestro 或 Text Expander 等等软件能够十分方便得通过这三条信息来生成一段插入图片的 LaTeX 代码。例如我设置通过输入 ffig 来插入一张图片,此时会弹出一个对话框,这个对话框就要求我输入这三条信息,输入完成后点击 OK,即可在当前应用程序中生成一段插入指定图片的 LaTeX 代码。

快速插入一张图片

快速插入一张图片

这样的场景在 LaTeX 中十分常见,例如 align 环境、itemize 环境、array 环境、section 环境等等都可以通过这样的方式来自动插入 LaTeX 代码。

使用文本扩展不仅仅意味着你可以少输入很多字母,它更深刻的用处是在你不需要去记忆任何环境的代码规则。在一台新的电脑上,我无法在不查找资料的情况下在 LaTeX 中插入一张图片,但在我自己的电脑上,我很轻松的通过 Keyboard Maestro 来插入一张图片。

1.3 设置缩写

在 LaTeX 中,可以给常用的命令设置缩写。例如在公式中需要对向量 x 进行加粗,但每次都采用 \bm{x} 来进行加粗会比较麻烦。这时我们可以通过 \def 来指定缩写,例如 \def\bx{\bm{x}},此时 \bx 与 \bm{x} 完全等价。

设置缩写

设置缩写

通过设置缩写,可以将 LaTeX 中较长的代码直接通过一个小命令来使用,这在编写 TeX 文档时可以节省不少时间。

1.4 文本扩展与缩写的比较

文本扩展是通过设置短语,来实现快速输入,在内容上与原来完全一致。而缩写则是通过在导言区定义新的命令,在正文中可以通过这个命令来达到指定的功能。他们的优缺点分别有:

  • 文本扩展的优点

  • 可以设置模板 (例如插入图片、表格等等)

  • 简化了打字方式,但在内容呈现上与原来一样

  • 文本扩展与当前软件无关,无论是在不同的文件中,甚至在不同的软件中,文本扩展永远可以使用

  • 缩写的优点

  • 复杂公式中,更加容易看清公式的结构

  • 文本扩展的缺点

  • 所有内容都是按照原样来写,这样复杂的公式的代码会超级长

  • 缩写的缺点

  • 在每一个文件中,都需要设置缩写才可以使用

  • 不同的人对于缩写的设置习惯不同,不利于协作

以上就是文本扩展和缩写的比较,在实际使用中,我们需要结合起来使用。

1.5 使用 MathPix 识别公式

Mathpix Snip 是一个能够将图片中的公式转成 LaTeX 代码的工具,它能够通过截取你想要识别的公式,并输出 LaTeX 代码。

图片转 LaTeX 的工具很多,但大部分软件做得不是太好,识别准确率也不高。很多软件虽然可以识别,但后期的修正 bug 会浪费很多的时间。而 MathPix 在识别准确率上做得很好,可以让你在截图以后直接可以放心使用识别出来的 LaTeX 代码,这非常快速并且节省时间。

通过 MathPix 截图并转换成 LaTeX 代码

通过 MathPix 截图并转换成 LaTeX 代码

下面是转换完成的 LaTeX 代码,整体来说还是转换的很不错的。

$$
\frac{\partial}{\partial \theta} \int \psi_{\theta}(x) d \nu=\int \frac{\partial}{\partial \theta} \psi_{\theta}(x) d \nu
$$

总结

工欲善其事,必先利其器。在学习上我们不应该偷懒,但在写 LaTeX 代码上,我们应该用最高效地方式来进行编写,以达到节省时间节省精力的目的。通过一款支持实时预览的编辑器,使用文本扩展和缩写相结合,再配合 MathPix 之类的图片转 LaTeX 工具,这将让你编写 LaTeX 代码足够地高效。


2 数学字母

在数学公式中,你可能需要为公式中的字母设置字体,例如向量或矩阵的加粗、线性变换的花体、数集的字体等等。

几种常用字体

几种常用字体

2.1 清除公式中的字母格式

在数学公式中,直接输入的字母都会变为斜体。例如输入 sin(x) 会得到一个全是斜体的 sin(x),通过 \sin(x) 进行输入则其中的 sin 为正体。

左: sin(x),右: \sin(x)

左: sin(x),右: \sin(x)

但公式中,并不是所有的数学符号都在 LaTeX 中有对应的命令。例如矩阵的迹: tr 或者 trace,在 LaTeX 中并没有特定的命令来输入。这时,可以通过 \mathrm{} 来进行输入。

左: tr(A),右: \mathrm{tr}(A)

左: tr(A),右: \mathrm{tr}(A)

通过 \mbox{} 来进行输入时,也可以达到一样的效果,但这两种方法在字体和字母间距上有细微差别。

2.2 字母加粗

对于公式中的向量或者矩阵,常常需要对字母进行加粗。对字母进行加粗有两种情况,一种是字母为正体并加粗,一种是字母为斜体并加粗。这两种分别可以通过 \mathbf{} 和 \bm{} 来实现。其中 bm 需要引入一个包: bm

\bm{u},\bm{v}\in\mathbf{Col}(\mathbf{M})

\bm{u},\bm{v}\in\mathbf{Col}(\mathbf{M})

2.3 使用花体字母

在有些情况下,你可以需要使用到花体字母,例如描述线性空间的线性变换等等。花体字母常用的有两种,\mathcal{} 与 \mathscr{} ,其中 mathscr 需要引入包: mathrsfs

\mathcal{A}\in \mathrm{End}(V)

\mathcal{A}\in \mathrm{End}(V)

2.4 使用空心字母

在描述数集时,常采用空心字母来表示。通过 \mathbb{} 能够输入空心字母,需要引入包: amsfonts

a, b, c\in\mathbb{R}

a, b, c\in\mathbb{R}

2.5 其他数学字母

其他数学字母

其他数学字母

图片来源: Texdoc Symbols


3 自定义定理类环境

定理类环境是指,文档中关于定理、引理、命题、推论等等的环境。LaTeX 可以实现自定义定理类环境,包括设置排序单位、设置字体、分隔符等等。在 LaTeX 中,自定义定理类环境不需要另外的包 (网络上大多的资料都提示需要 amsmath 这个包,但我不用这个包的时候也能够正常运行),但在调整定理类环境的样式时需要使用 ntheorem 这个包。

3.1 基本语法

通过在导言区添加 \newtheorem{环境名}{标题}[排序单位] 即可自定义定理环境。其中:

  • 环境名: 必选参数,在你的 TeX 文件中,\begin{}\end{} 中大括号内的内容。

  • 标题: 必选参数,在你的 PDF 文件中,该环境显示出来的内容。

  • 排序单位: 可选参数,设置你的自定义环境自动标号的内容。

未设置排序单位

未设置排序单位

  • 定理名字: 可选参数,在 \begin{}[]\end{} 中中括号内的内容即为定理的名字,会通过小括号显示在定理中。

设置定理名字

设置定理名字

3.2 排序单位

  • 取消排序: 若需要取消定理类环境的编号,你只需在定义定理类环境时,加上星号。

取消排序

取消排序

  • 按照 section 或 subsection 等排序: 只需在排序单位中设置即可。

按照 section 排序

按照 section 排序

  • 将 theoremlemma 等统一编号排序: 此时要将 theorem 用中括号的形式放入环境名和标题之间,不可放至末尾。

theorem, lemma 统一编号

theorem, lemma 统一编号

3.3 设置字体

  • 定理类环境默认的字体为斜体,可以通过 \theorembodyfont 来设置字体,其中 \upshape 为正体,\itshape 为斜体。\theorembodyfont 必须放在 newthorem 的上方

将定理类环境中的内容设置为正体

将定理类环境中的内容设置为正体

  • 需要注意的是,这个设置会对接下来所有定义的 newtheorem 都会产生影响。在仍然需要设置斜体时,可以通过 \theorembodyfont{\itshape} 将字体变为斜体。

设置正体和斜体

设置正体和斜体

3.4 设置换行

  • 可以通过设置 \theoremstyle{break} 来使定理和正文中进行换行。\theoremstyle 必须放在 newthorem 的上方

设置换行

设置换行

  • 这个命令会对接下来所有定义的 newtheorem 都会产生影响,可以通过 \theoremstyle{plain} 使其恢复为原来的样式。

3.5 设置分隔符

可以通过 \theoremseparator{} 设置定理和正文的分隔符。

设置分隔符

设置分隔符


4 插入图片

4.1 插入单张图片

插入图片需要引入包: graphicx,通过 \includegraphics 即可插入一张图片。但一般情况下,你需要将图片放入到一个 figure 环境中。默认情况下,在一个空白页中,图片会插入到页面中间,但在一个非空白页中,图片会插入到页面顶部。若想要图片按照你指定的位置来进行插入,那就需要设定 figure 环境的参数。

没有设置任何参数时,图片显示在顶部

没有设置任何参数时,图片显示在顶部

figure 环境包括 4 个参数:

  • h: here,此处

  • t: top,页顶

  • b: bottom,页底

  • p: page,独立一页

在设置参数时,通常使用 ht。这表示 LaTeX 试图将图片放在此位置,如果不行 (此处没有足够的空白能够插入该图片) 则会将图片放在新页面的顶部 (如果页面为空时,放入页面中央)。

在设置好图片放置的位置以后,还需要设置图片居中,使用 \centering 即可设置图片居中。

接下来可以插入图片了,插入图片的命令是 \includegraphics{},大括号中输入图片的文件名即可,在不引起混淆的情况下,可以不输入文件的扩展名。可选项为设置图片的大小,一般情况下,设置图片宽度占文字宽度的多少即可,例如: width=0.8\textwidth

之后则是设置图片与标题的距离、标题、标签等等。这就得到插入一张图片时需要的代码:

\begin{figure}[ht]
   \centering
   \includegraphics[width=0.8\textwidth]{}
   \\[0mm]
   \caption{}
   \label{}
\end{figure}

4.2 插入两张图片并水平排列

与插入一张图片的方式基本相同,只不过需要使用 minipage 包将图片进行包裹,并分别设置宽度即可。

插入两张图片并水平排列

插入两张图片并水平排列

代码如下:

\begin{figure}[ht]
   \centering
   \begin{minipage}[t]{0.48\textwidth}
       \centering
       \includegraphics[width=0.8\textwidth]{x2}
       \caption{$y=x^2$}
   \end{minipage}
   \begin{minipage}[t]{0.48\textwidth}
       \centering
       \includegraphics[width=0.8\textwidth]{x3}
       \caption{$y=x^3$}
   \end{minipage}
\end{figure}

4.3 设置图片存放路径

在图片较多的情况下,将图片都存放在根目录会导致根目录文件较多。但如果将图片保存在子目录,那插入图片时会比较麻烦,每次都需要写上子目录的名称。你可以通过设置图片存放路径的方式,使得图片存放指定的目录,并在插入图片时直接使用图片名称即可。

通过 \graphicspath{{figures/}} 可以设置图片的路径为 figures/,此时即可将图片存入该文件夹,而在代码中,可以直接通过文件名进行调用。


5 参考文献

在写文章的过程中,参考文献的引用是一个很重要的部分,但同时这也是一个很复杂的事情,这体现在以下几个方面

  • 参考文献对大小写,正体斜体等的要求极其严格,并且有不同的规范。

  • 正文中引用参考文献时有很多不同的格式,例如通过 [1][2] 等等的数字进行引用,或者通过 Erhan et al. (2010) 这样的作者年份来引用等等。

  • 在文章的参考文献页,各参考文献的排序方式有很多规范,例如通过引用顺序进行排序或者通过作者名字进行排序等等。

在 LaTeX 中,自动生成参考文献也有诸多不同的方式。这里以 natbib 这个包来做示例,正文中显示的引用为作者加上年份,参考文献按照作者名字进行排序。对于别的参考文献样式,只需进行少许更改,即可达到指定的要求。

5.1 基本结构

首先你要引入包 natbib 并设置参数 authoryear 和 round。这里的 authoryear 表示要显示的内容,而 round 表示年份用小括号进行包裹 (默认用中括号进行包裹)。

然后你需要在 TeX 文档的末尾添加参考文献的文件,即在 \end{document} 之前加上以下两行:

\bibliographystyle{plainnat}
\bibliography{reference}

这两行的顺序不能够调换,第一行表示参考文献的样式是 plainnat,而第二行表示参考文献的文件是 reference 这个文件。这时,TexPad 会自动问我们是否需要新建该文件。

创建 reference.bib 文件

创建 reference.bib 文件

此时的 TeX 文件结构如下,并在目录中多出了一个 reference.bib 文件。

基本结构

基本结构

5.2 bib 文件结构

这个 bib 文件其实是一个文献数据库,你可以将你所有阅读过的文献都放到这个文件中进行管理。需要注意的是,只有你在正文中引用到的文献,才会出现在参考文献的列表中。

bib 文件存放所有需要使用到的参考文献,对每一个文献,都有一个固定的格式,例如下述内容就代表一个文献。

@article{erhan2010does,
 title={Why does unsupervised pre-training help deep learning?},
 author={Erhan, Dumitru and Bengio, Yoshua and Courville, Aaron and Manzagol, Pierre-Antoine and Vincent, Pascal and Bengio, Samy},
 journal={Journal of Machine Learning Research},
 volume={11},
 number={Feb},
 pages={625--660},
 year={2010}
}

这并不需要你手动进行输入,你可以通过任何文献管理软件如 Papers、EndNote 等等将文章引用为 BibTeX 格式,或者在 Google 学术上点击引用并选择 BibTeX。

从 Google 学术中获取 BibTeX 格式的参考文献

从 Google 学术中获取 BibTeX 格式的参考文献

5.3 引用参考文献

在正文中引用参考文献的方式非常简单,只需输入 \cite{} 即可,此时 TexPad 会自动弹出一个框用于选择需要引入的参考文献。

引用参考文献

从上图中你也可以看到,References 下面的参考文献列表,会随着正文中引用的参考文献的变化而变化。而关于 Reference 与正文在同一页的问题,这只需在参考文献前添加 \newpage 即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/640977.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IPKISS ------ AMF 添加自定义层

IPKISS ------ AMF 添加自定义层 正文 正文 很多时候,我们想要添加属于我们自己的层,此时我们需要向 AMF pdk 中的 gdsii.py 和 layers.py 文件添加层的信息。这两个文件的目录如下: 在 gdsii.py 文件下的 TECH.GDSII.LAYERTABLE 字典中我们…

JVM学习-垃圾收集器(三)

G1回收器-区域化分代式 为了适应不断扩大的内存和不断增加的处理器数量,进一步降低暂停时间,同时兼顾良好的吞吐量官方给G1设定的目标:延迟可控的情况下获得尽可能高的吞吐量,所以才担当起“全功能收集器”的重任与期望G1是一款面…

篮球论坛|基于SprinBoot+vue的篮球论坛系统(源码+数据库+文档)

篮球论坛系统 目录 基于SprinBootvue的篮球论坛系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&#xff…

ASP+ACCESS教师档案管理系统

3.1 系统功能模块图 3.2 E-R模型图 3.3 系统使用流程图 3.4 各个模块功能简介: 本系统分为五个功能模块,它们分别是教师信息录入模块、教师信息修改模块、教师信息查询模块、教师信息打印模块。 下面分别介绍各个模块的功能用途&#x…

AI赋能银行业务新突破:合合信息助力银行流水智能识别系统

官.网地址:合合TextIn - 合合信息旗下OCR云服务产品 在银行零售与对公业务中,流水单作为分析申请人财务情况的重要材料,是银行业务的重要数据来源。小微企业也常常使用流水代替财报,用以反映企业的财务与经营情况。如何高效地识别…

LoFTR 笔记和理解

文章目录 解决什么实际问题?算法结构 解决什么实际问题? 主要是解决传统特征匹配和之前的基于深度学习特征匹配不稳定和不准确的问题。传统的特征匹配方法主要依赖于特征点的检测,如果特征点的检测出现问题,比如某一些的关键点没…

Unity Physics入门

概述 在unity中物理属性是非常重要的,它可以模拟真实物理的效果在unity中,其中的组件是非常多的,让我们来学习一下这部分的内容吧。 Unity组件入门篇总目录----------点击导航 Character Controller(角色控制) 说明:组件是Unity提…

元年科技数据智能研发部负责人张亚东受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 北京元年科技股份有限公司数据智能研发部负责人张亚东先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“大模型时代,AI创新型工具提升项目管理效率”。大会将于6月29-30日在北京举办,敬请关注&a…

VOS3000被DDOS攻击后该怎么办

VOS3000遭受DDoS攻击的应对措施 当VOS3000遭受DDoS攻击时,可以采取以下几个步骤来应对: 立即启动防火墙:尽管难以完全阻止DDoS攻击,但防火墙可以在一定程度上帮助抵御攻击,减轻其造成的危害。 联系服务器提供商&#…

JVM运行时内存:垃圾回收

文章目录 1. 什么是垃圾2. 为什么需要垃圾回收3. Java 中垃圾回收的重点区域是什么4. 常见的垃圾回收算法 1. 什么是垃圾 垃圾 是指 在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。 如果不及时对内存中的垃圾进行清理,那么&#…

【问题解决】Android Studio Jellyfish新建Kotlin项目后Gradle Sync及Maven下载很慢

创建新项目之后,Gradle Sync和Build都很慢,因为下载Gradle和Maven等工具。 代码默认配置 settings.gradle.kts pluginManagement {repositories {google {content {includeGroupByRegex("com\\.android.*")includeGroupByRegex("com\\.g…

单片机io扩展

输入输出扩展 i2c扩展 方案1:PCF8575 PCF8575双向IO口扩展模块 16位输入输出I2C通讯 单片机级联扩展板 方案2:PCA955A 输出扩展 74HC595 io口扩展模块输出口扩展 参考链接 中微爱芯发[2004] 1号           签发人: (szlcsc.com)https://…

vue项目elementui刷新页面弹窗问题

bug:每次刷新页面都有这个鬼弹窗。 刚开始以为是自己的代码问题,于是我翻遍了每一行代码,硬是没找出问题。 后来在网上找了些资料,原来是引入的问题。 解决方案: 改一下引入方式即可。 错误姿势 import Vue from …

构建高效AI代理:单代理与多代理架构的策略与挑战

AI代理架构正成为实现复杂任务自动化的关键技术。这些代理不仅需要处理信息、做出决策,还要能够与外部环境进行交互。随着ChatGPT等生成式AI应用的兴起,研究者们开始探索下一代AI应用,其中AI代理的角色愈发重要。单代理架构以其简洁高效的特点…

牛皮!亚信安全《2024国家级攻防演练100+必修高危漏洞合集》.pdf

上次分享了2023攻防演练高危漏洞,获得了很多粉丝的好评。 今天再分享一份由亚信安全服务团队结合自身的“外部攻击面管理”服务能力和专业的红队能力,最新发布的《2024攻防演练必修高危漏洞合集》,一共108页,非常详细&#xff0c…

五分钟部署开源运维平台Spug结合内网穿透实现远程登录管理

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件…

【产品经理】输出

引言:        在最近频繁的产品管理职位面试中,我深刻体会到了作为产品经理需要的不仅仅是对市场和技术的敏锐洞察,更多的是在复杂多变的环境中,如何运用沟通、领导力和决策能力来引导产品从概念走向市场。这一系列博客将分享…

RoboMaster机甲大师赛

RoboMaster机甲大师赛 RoboMaster机甲大师赛中部赛区承办方主要赛事:机甲大师高校联盟赛(RMUL,RoboMaster University League)组别概况比赛规则 RoboMaster机甲大师赛中部赛区 昨天现场观看了机甲师中部赛区,感觉很受震撼&#x…

dmanywhere的docker制作

dmanywhere的docker制作 官网地址: http://www.dmanywhere.cn/ 下载相关执行文件。 Dockerfile的默认命名是“Dockerfile”, 在构建镜像时,如果没有指定Dockerfile文件,Docker通常会寻找名为“Dockerfile”的文件 1.Dockerf…

校园二手书交易|基于SprinBoot+vue的校园二手书交易管理系统(源码+数据库+文档)

校园二手书交易管理系统 目录 基于SprinBootvue的校园二手书交易管理系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3 卖家用户功能模块 4 用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八…