添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Repository files navigation

Latex-in-Academic-Writing

记录Latex在学术论文写作中的的常见问题和解决方案,并附有详细代码

latex基本知识

这部分的参考链接

  • https://liam.page/2014/09/08/latex-introduction/
  • http://liuchengxu.org/blog-cn/posts/quick-latex/
  • 本质其实就是一种类似html,markdown的标记语言,只不过相比起来所具有的标记更加多样和复杂而已。

  • 或者还可以再拿代码中的宏定义来理解,把一些特定的序列定义为某些操作,某些意思,方便后面的使用。这种特定的序列在latex就叫做是控制序列
  • 所有的的标记符号,或者说控制序列,都是以反斜杠 ""开始,如\ref。。它们不被输出,但是他们会影响输出文档的效果。
  • 控制序列可以在文中的任何一个位置加入,而不仅仅只是开头
  • 刚刚提到latex本质是一种标记语言,用来随时随地的控制文档的文字排版等效果,那么怎么选择我要控制的文字呢?
  • 一个是\begin 和\end 。这两个控制序列以及他们中间的内容被称为「环境」;它们之后的第一个必要参数总是一致的,被称为环境名。如\begin{eqution} \end{eqution}. 就是一个公式环境,中间你输入的公式就会被辅以某种特定的排版。具体要看不同的环境的作用 另一个则是{},把需要标记的文本框起来,而文字的效果则是看具体的操作。如\textbf{a} 就是把a加粗。
  • 其他类似的还有$$等,都是类似的,把需要标记的语言框起来就行。
  • 编译器和编辑器

  • 刚刚提到latex 本质是一种标记语言,那么就肯定存在一个映射关系,记录着什么对应什么。而latex编译器就是记录这个映射的关系的东西。所以无论是你在那写的latex文档,txt,word,等等,只要你利用编译器编译,都可以得到编译之后的规范的文本文档。而你写东西的地方,被称为编辑器。
  • 最开始编译器和编辑器是分开的,后来为了方便用户使用,就合在了一起,叫做IDE发行,比如textstuido。但是实际上过程还是两个过程,latex文本的编辑和编译生成规范文本。就好像你写程序时候的 写代码的过程和编译代码的过程,本质是两个过程,但是你确实在同一个应用上实现的。
  • textstudio
  • overleaf
  • 推荐使用这个。这是一个网页工具,任何时候只要又网络就可以接入。当然坏处就是没网就不能用。
  • 另外去这个不需要配置环境,尤其是中文的开发环境,直接进行开发就行,最大化的降低了用户在编写文档之外其他的精力开销。而其他的工具光是环境可能就需要你去配置很久。
  • 最后,这是一个多端的工具,win linux都可以,而其他的工具往往只在win或者linux环境某一个环境下工作,换一个工作环境就要重新配置一个开发工具非常麻烦
  • 自带一个历史回溯,甚至不需要你去进行git管理。
  • 自带许多模板,不需要自己再去为模板发愁
  • 当然,最重要的还是它免费
  • 本教程的相关代码也会通过overleaf的方式进行展示。
  • .sty 和.cls文件。
  • 模板文件就有点类似于我们写报告常用的报告模板,格式已经订好了,然后为了方便别人使用,直接把模板,也就是格式文件给他们,然后直接利用这个,进行编辑就好了。而一般格式文件就是.sty 和.cls文件。
  • 使用的方式,也就是把格式文件放在目录下,在导言区里面引用它们的东西就好了
  • latex 常用操作笔记

  • https://mirrors.tuna.tsinghua.edu.cn/CTAN/info/lshort/chinese/lshort-zh-cn.pdf
  • latex 写作问题

  • 模板链接: https://www.overleaf.com/read/qbckwmrjjgqm 后面所有的操作的代码也都会放在这里面。读者只能阅读,不能修改。
  • overleaf 工具

    打开 https://www.overleaf.com 注册账户

    首页的各个分类标签介绍: https://blog.csdn.net/xovee/article/details/100734370

    点击 New Project 可以创建自己的工程项目。点击按钮后弹出的列的最下面一个选项,点击之后就可以自己搜索各种所需的模板,比如搜索 CVPR 打开搜索的第一个结果 CVPR 2018 Template(不是这个也行,估计再过几年就不是这个了,但是问题不大,打开一个就可以)。通过模板的内容,你就能知道绝大部分的基础latex操作如:加粗,文献引用,等等。

    模板链接: https://www.overleaf.com/read/qbckwmrjjgqm

    项目界面和介绍如下图:

    输入法问题

  • 在英语论文写作中,所有的符号必须是英语下的格式符号,特别是 逗号 不然后期编译报错的时候往往就会因为这个编译不成功,而找了半天也找不到错误。
  • 相关的代码在参考链接的431行处开始。
  • 所有的数学的符号,公式,都需要放在数学环境里面,否则会报错
  • 这个会自动提示,所以不用担心。
  • 行内模式 (inline) 和行间模式 (display)。前者在正文的行文中,插入数学公式;后者独立排列单独成行,并自动居中。
  • 使用 $ ... $ 可以插入行内公式,使用 $$...$$ 可以插入行间公式
  • 如果需要对公式进行编号,则可以使用 equation 环境:
  • 这三个公式环境可以满足几乎7成的数学公式的编辑,特别是 equation。简单易用。
  • 在公式环境里面的所有的字母不需要再去做斜体变化,它会自己就变成
  • 下标:  _   如 x_{k-1}
  • 上标:^   如 x^{k-1}
  • 公式内符号加粗 \bm{} 命令。注意在公式命令中\textbf{}是不能使用的
  • 使用\left \right 可以把需要括起来的公式括起来。
  • 这个命令往往需要在equation 环境内使用,并且需要和多行公式的环境使用 如\align.
  • 所以这个命令就只能对整个大括号进行编号。因为一个equation 环境,就只有一个编号
  • case+numcases
  • 这个可以对大括号内的所有的公式进行单独编号
  • 需要导入cases的宏包
  • 这个环境和\algin 环境是不兼容的,不过它本身也自带了多行对齐,所以倒也不用\algin.
  • \includegraphics[width=2cm,height=2.5cm]{shennai.jpeg}{shennai.jpeg} //指定图形大小和图形名称,一般将该图形放在latex文件同一路径下就不需要指明路径

    \caption{Proposed Secure Systolic Montgomery modular MultiplierArchitecture} 设置插图的题注

    \label{fig:arch} 设置图形引用名称,方便引用

    \end{figure}

  • 在\includegraphics[width=2cm,height=2.5cm] 中可以随意调整图像大小,这个在插入多张图像的特别有用,可以自己控制
  • 也可以使用\includegraphics[width=0.25\textwidth] 按照比例缩放图像。这里的比例不是图像的放大比例,而是纸张的比例。\textwidth 就是纸张宽度,0.25的纸张宽度,其实就是站宽度的1/4,这样的话,是方便插入多张图,不用自己去慢慢算设置长宽是多少。
  • \linewidth - 当前行的宽度
  • \columnwidth - 当前分栏的宽度
  • \textwidth - 整个页面版芯的宽度
  • \paperwidth - 整个页面纸张的宽度
  • \hsize - Plain TeX 的宏,是 TeX 在行末考虑分词换行时使用的宽度
  • 需要在列表环境中使用表格、图片等宽度的时候,用 \linewidth
  • 插入的图像的大小是一致的时候,推荐使用\textwidth。因为可以根据图像的数量直接确定系数插图。而如果图像大小不一致的时候需要自己控制图像的高度和宽度而不推荐使用\textwidth。因为\textwidth 是按照比例放缩图像,而如果图像大小不同,放缩之后还是不同,非常不美观。从政角度来说自己控制高度和宽度更加通用
  • 如果模板是双栏的,所有的操作都只是插图在在单栏,如果需要跨过双栏只需要把 \begin{figure} 改成 \begin{figure*}。 同样的 \end 也要修改
  • 有时候需要一行插入多图,而且每个图都有自己的编号,这时候就需要用到 \subfigure. \subfigure 本身是一个宏包,需要我们自己导入

  • 使用subfigure的时候默认是行排列。 也就是一行多图
  • 图像编号默认是英语小写字母顺序
  • 每个子图可以用自己的name,参见例程 494行
  • 间隔控制控制参加调整图像大小

  • subfigure本身不支持内部图片换行,所以结合minipage使用。被minipage 包裹住的图片,会被当做一个整体对待。见例程579行
  • minipage可以在每一个includegraphics后跟双斜杠“\”表示换行,也可以像上面代码中写的使用”\vspace{4.pt}”来控制垂直间距,但是需要注意的是”\vspace{4.pt}”必须紧跟在对应的includegraphics,不然得不到想要的结果。
  • 多行多列的时候,以列为单位,所以输入看起来是两行但是不需要换行。
  • 同时有两个不同的尺寸控制,一个是minipage的,控制一列的大小,调整的时候整个列都会变换。然后列内的每一个图像也有自己的大小控制。具体可以见例程。
  • 制表工具: https://www.tablesgenerator.com/#
  • 可以在线绘制表格,生成对应的latex代码。而且这个工具还可以合并,分离表格,也就是你需要的所有的表格的形状应该都能生成。就算是还有什么不满意可以再单独修改,工作量会少很多。
  • 不过这个工具好像需要翻墙,如果不能翻墙就只能手工设计。
  • 参考链接: https://liam.page/2013/08/04/LaTeX-table/
  • 这个链接包含了丰富的指标的例程。这里做细节分析
  • 常用的基本操作
  • \begin{tabular}{|l|r|}
  • l r c 就是左右中对齐
  • 竖线| 表示表格的的竖线,|c|l| 就是表示有两列,第一列居中,第二列居左
  • 竖线不是必须的,可以根据需求把某列的竖线去掉,后面有例子
  • tabular 是可以嵌套的。表格的一个空格也可以是一个tabular,后面会有相关的应用介绍
  • table 环境
  • 为了让表格能够自动编号并尽可能美观的浮动,LaTeX 提供了 table 环境。基本用法如下
  • 一般要炸tabular外面再加一层 table 环境,才可以加上caption,自动编号等操作
  • \hine 加横线
  • & 表示数据的分割。 |c|l| 只是确定了表格有两列,但是每列是什么数据?就是用 & 做区分的。
  • \\ 表示在表格里面另起一行。
  • \\ 必须在tabular 环境里使用。而这时候就存在一种情况,我的一个格子里面想换行怎么办?就需要在这个格子对应的地方重新调用\begin{tabular}. 见例程615 行
  • 总的来说就是竖线和横线确定了表格,&区分实际的表格内容,然后我们是可以对每一个最小单元进行各种操作的。再插入新的表格,或者表格合并等等
  • 表格线条的加粗

    需要宏包:\usepackage{booktabs}

    \toprule

    \midrule

    \bottomrule

  • 只能在\tabular 环境里使用,把单位格子进行合并,而且往往就是在行或者列上操作
  • 行合并 \multicolumn{3}{|c|}{information}
  • 3 表示合并三个表格,|c|表示居中 且两边有竖线,information 是表格里面的内容
  • 合并之后,就没有 & 了。
  • 纵向合并 例程675
  • 需要 multirow 宏包的支持
  • 既跨行又跨列
  • 实现这样的需求需要将上述两个命令结合起来使用。但是只能用 \multicolumn{cols}{pos}{\multirow{rows}{width}{text}} 这样的形式,而不能反过来嵌套。具体原因不明。
  • 例程 693行
  • \scalebox{0.95}{}, 把最大的begin tabular 包裹住
  • \renewcommand\arraystretch{2} 放在table 环境之前,控制列高,数字为几就是几倍。
  • 上下线条加粗
  • 两边的竖线去掉
  • 见例程631行
  • 正确的ref 引用,但是编译之后显示结果不对,一般是label的位置的问题,把label的位置放到caption的后面。公式,图表,都是如此。
  • 引用需要在tex 文件的最后,加上这两个东西,不然编译的时候就会找不到论文的相关引用,就算你在bib文件中已经写好了引用,cite也能自动检索到,但是编译就是会失败
        \bibliographystyle{ieee}
        \bibliography{egbib}
    
  •