Preface 写论文时要陈述自己提出来的算法，遂学。 方法1（deprecated） 引入宏包： \usepackage{algorithm} \usepackage{algorithmic} 重新定义样式： \renewcommand{\algorithmicrequire}{\textbf{Input:}} \renewcommand{\algorithmicensure}{\textbf{Output:}} 下面是一些简单的使用： \begin{algorithm}[H] \caption{algorithm 1} \begin{algorithmic}[1] % 此处的[1]控制一下算法中的每句前面都有标号 \REQUIRE input \ENSURE output \STATE {Step A} \STATE {Step B} \FOR {$ i = 1 $; $ i < n $; $ i ++ $ } \STATE {Step C} \ENDFOR \WHILE {$ |E_n| \leq L_1 $} \STATE {Step D} \ENDWHILE \FORALL {...} \STATE {Step E} \ENDFOR \IF {condition} \STATE {Step F} \ENDIF \end{algorithmic} \end{algorithm} 效果图： 方法二：algorithm2e 引入宏包： \usepackage[ruled]{algorithm2e} 常见用法： \begin{algorithm}[t] \caption{Algorithm Test} \label{algorithm:test} \LinesNumbered \KwIn {input} \KwOut {output} \For{i = 1 to n}{ \eIf{condition} { Step A \tcp*{comment inline} \tcp{new line comment} } { i ++; } } \While{condition}{ do something } Step B \; Step C \; Step D ; \end{algorithm} 效果图： 如果引用宏包时附带其他参数，如： \usepackage[ruled,vlined]{algorithm2e} 效果： 更详细的用法详见文档： https://ctan.org/pkg/algorithm2e https://mirrors.hit.edu.cn/CTAN/macros/latex/contrib/algorithm2e/doc/algorithm2e.pdf
Preface 使用cvpr的$\LaTeX$模板的时候发现它的itemize距离非常大，故我需要手动调整。写下此文以记录。 方法 首先，若需要调整enumitem的内容需要引入enumitem宏包： \usepackage{enumitem} 注：该宏包的文档, https://mirrors.concertpass.com/tex-archive/macros/latex/contrib/enumitem/enumitem.pdf 下图是一张浅显易懂的位置参考： 简单易懂的实现 \begin{itemize}[itemsep=2pt,topsep=0pt,parsep=0pt] \item item1 \item item2 \item item3 \end{itemize} Reference [1] https://mirrors.concertpass.com/tex-archive/macros/latex/contrib/enumitem/enumitem.pdf [2] https://blog.csdn.net/robert_chen1988/article/details/83179571
注：本文部分转载自http://liam0205.me/2015/08/17/width-in-latex/，以及https://blog.csdn.net/robert_chen1988/article/details/52739825 宽度 涉及到页面宽度，有这么几个： \linewidth - 当前行的宽度 \columnwidth - 当前分栏的宽度 \textwidth - 整个页面版芯的宽度 \paperwidth - 整个页面纸张的宽度 \hsize - Plain TeX 的宏，是 TeX 在行末考虑分词换行时使用的宽度 这些宽度里，\hsize 是 Plain TeX 的宏，不推荐 LaTeX 用户使用，简单地当它不存在就好了。 在单栏文本中，\columnwidth 和 \textwidth 保持一致；在多栏文本中 \textwidth = n * \columnwidth + (n - 1) * \columnsep（其中 n 是分栏数）。 在 minipage 环境中，除了 \paperwidth 之外，其它三个 \****width 都会根据 minipage 的宽度发生改变（因为虚拟出了一个小的纸张页面），然后在 minipage 环境结束的时候恢复原样。在 parbox 中，\textwidth 和 \columnwidth 不会改变，不过 \linewidth 会发生变化。 \linewidth 是相对最灵活的宽度值。在 list 环境里（包括 enumerate 和 itemize 等环境），在 \parbox 里，\linewidth 都会发生变化。 总的来说，当* 需要在列表环境中使用表格、图片等宽度的时候，用 \linewidth 需要充满整个页面宽度的时候，用 \textwidth （比如 figure/table 等） 需要充满整个分栏的时候，用 \columnwidth （比如 figure/table/tabularx/tabu 等） 单位 单位 名称 说明 mm 毫米 1 mm = 2.845 pt pt 点 1 pt = 0.351 mm bp 大点 1 bp = 0.353 mm > 1 pt dd 迪多 1 dd = 0.376 mm = 1.07 pt pc 排卡 1 pc = 4.218 mm = 12 pt sp 定标点 65536 sp = 1 pt cm 厘米 1 cm= 10 mm= 28.453 pt cc 西塞罗 1 cc= 4.513 mm= 12 dd = 12.84 pt in 英寸 1 in = 25.4 mm = 72.27 pt ex ex 1 ex = 当前字体尺寸中 x 的高度 em em 1 em = 当前字体尺寸中 M 的宽度 使用感受 相较于固定宽度，个人认为使用比例结合***width更为常用，可以较好地进行排版。
Preface 写论文时由于有较多图像需要排版，遂学了一把。 实现 \begin{figure}[htb] \begin{center} \includegraphics[height=5cm]{figures/bad-1.jpg} ~~ \fbox{ \includegraphics[height=5cm]{figures/bad-2.jpg} } \end{center} \caption{图中示例了某款软件只能进行单纯的透视变换，无法处理弯曲边缘} \label{fig:bad} \end{figure} 用法解释 figure后的参数[] [h] 表示的当前位置（here），也就是说图片排在你设置的当前位置，但是如果这一页的空间不足以放下这个图片，此时图片会转到下一页 [t] 顶端 (top)，优先将图片放置在页面的顶部 [b] 底部 (bottom) ，是优先将图片放置在页面的底部 [p] 这个是将图片设置为浮动状态，也就是可以根据系统排版的，自动放置图片的位置 对于组合参数例如[htb]： 优先使用h 若无法满足使用t 最后使用b 此外，还可以使用!符号来进行强制生效，比如：[t!]强制将图片放置在页面上方 includegraphics 使用\includegraphics[<options>]{<image path>}来引入图片： <image path>是路径 常用的<options>： width=<width>，常用单位：cm, in, 0.5\textwidth, 0.5\linewidth等等 height=<height>，同上 scale=<scale>，缩放比例 caption caption中的内容即为对图片的解释说明 label 对这张图片设一个标签，方便后续引用，引用时使用\ref{} 比如对于前面的fig:bad的引用： 注：这里有红色框是因为模板的原因，没有的话是正常情况。 Reference [1] https://jingyan.baidu.com/article/c74d6000cc4e1e0f6a595db3.html
Preface 由于要改冬令营的论文，想着$\LaTeX$这回得好好做下排版了，于是便开始搜索模板。 CVPR模板 在查找模板的过程当中，几经波折。由于我是用的是WSL[Ubuntu]，之前太懒没有装Windows下的TeXLive而且也懒得再倒腾，WSL中的TeX中文环境也只适配了XeTeX，所以这些都成为了找米板路上的阻碍。 最后，在Overleaf上找到了2018年的CVPR模板，如下：https://www.overleaf.com/latex/templates/cvpr-2018-template/qgmrfntfbqns 要使用的话直接复制所有的文件自己创建然后编译就行。 关于此模板的Bug 今天由于我需要使用tikz宏包画流程图，然而一include就会编译过不了，于是借助万能的互联网，找到了如下的解决方案：https://tex.stackexchange.com/questions/373873/sharelatex-cvpr-template-not-compiling-tikz That template looks pretty horribly broken. The eso-pic.sty file isn't actually the real file. It's hacked to \input{cvpr_eso.sty} rather than \RequirePackage{atbeginshi} at least. But cvpr_eso.sty appears to actually be everyshi. To fix it, delete cvpr_eso.sty and eso-pic.sty. Now everything should compile with \usepackage{tikz}. Other bad things about that template: The epsfig package should not be used; graphicx replaces it. The times package should probably not be used. Use mathptmx instead. 所以，只需删除cvpr_eso.sty和eso-pic.sty，然后不建议使用epsfig和times宏包即可。 Reference [1] https://tex.stackexchange.com/questions/373873/sharelatex-cvpr-template-not-compiling-tikz [2] https://www.overleaf.com/latex/templates/cvpr-2018-template/qgmrfntfbqns
Preface 答辩PPT需要画流程图，遂学。 方法 注 注：本文大部分为Overleaf的翻译与总结 这个由五部分组成的系列文章结合了视频和文字说明，以教授使用TikZ创建LaTeX图形的基础。这些教程于2013年8月首次在原始ShareLateX博客网站上发布；因此，由于ShareLaTeX的发展以及ShareLaTeX和Overleaf的合并，今天的编辑器界面（Overleaf）发生了很大变化。但是，许多内容仍然有意义，并会教给您一些基本的LaTeX，这些技能和专业知识将适用于所有平台。 此外，多年来，用于定位节点的TikZ库和方法已经发生了变化。如果您今天正在学习TikZ，则最好使用该positioning库以below=of的语法放置节点。该positioning库语法是更灵活和强大。below of=以下视频和示例中使用的较旧样式的语法已正式弃用，但仍然可以使用。此外，arrows现在不建议使用该库，而希望使用较新的arrows.meta库。这里使用的其他TikZ命令和库可能具有更现代的等效项。在我们制作新的视频教程之前，我们将按原样保留代码示例，以便它们与视频内容相对应。 样例 宏包的引用： \usepackage{tikz} \usetikzlibrary{shapes,arrows} \usetikzlibrary{shapes.geometric, arrows} 定义流程图的组件样式： \tikzstyle{startstop} = [rectangle,rounded corners, minimum width=3cm,minimum height=1cm,text centered, draw=black,fill=red!30] \tikzstyle{io} = [trapezium, trapezium left angle = 70,trapezium right angle=110,minimum width=3cm,minimum height=1cm,text centered,draw=black,fill=blue!30] \tikzstyle{process} = [rectangle,minimum width=3cm,minimum height=1cm,text centered,text width =3cm,draw=black,fill=orange!30] \tikzstyle{decision} = [diamond,minimum width=3cm,minimum height=1cm,text centered,draw=black,fill=green!30] \tikzstyle{arrow} = [thick,->,>=stealth] 画流程图： \begin{tikzpicture}[node distance=2cm] \node (start) [startstop] {Start}; \node (input1) [io,below of=start] {Input}; \node (process1) [process,below of=input1] {Process 1}; \node (decision1) [decision,below of=process1,yshift=-0.5cm] {Decession 1}; \node (process2a) [process,below of=decision1,yshift=-0.5cm] {Process 2aaaaaa aaaaaaa aaaa}; \node (process2b) [process,right of =decision1,xshift=2cm] {Process 2b}; \node (out1) [io,below of=process2a] {Output}; \node (stop) [startstop,below of=out1] {Stop}; \draw [arrow] (start) -- (input1); \draw [arrow] (input1) -- (process1); \draw [arrow] (process1) -- (decision1); \draw [arrow] (decision1) -- node[anchor=east] {yes} (process2a); \draw [arrow] (decision1) -- node[anchor=south] {no} (process2b); \draw [arrow] (process2b) |- (process1); \draw [arrow] (process2a) -- (out1); \draw [arrow] (out1) -- (stop); \end{tikzpicture} 结果： 某些可选参数 箭头样式 \tikzstyle{arrow} = [thick,->,>=stealth] 解析： # 线粗： thick:粗 thin:细 # 箭头 -> : 正向箭头 <- : 反向箭头 <-> : 双向箭头 # 虚线 dashed # 箭头形状 >=stealth 画箭头 \draw [arrow] (decision1) -- node[anchor=east] {yes} (process2a); 解析： # 属性 [arrow]: 需要调用的箭头的样式名称 (decision1)：箭头的起始节点名称 (process2a)：箭头的末端节点名称 # 线型 --：直线 |-：先竖线后横线 -|：向横线后竖线 # 文字：如果需要在箭头上添加文字 {yes}: 需要添加的文字 # 文字的位置,上南下北左东右西(与地图方位不一致) [anchor=east] [anchor=south] [anchor=west] [anchor=north] [anchor=center] 节点样式 \tikzstyle{process} = [rectangle,minimum width=3cm,minimum height=1cm,text centered,text width =3cm,draw=black,fill=orange!30] 解析： # 节点形状 rectangle: 矩形，可加圆角(rounded corners) trapezium: 平行四边形 diamond: 菱形 # 尺寸 minimum width minimum height # 文本 text centered: 文本居中 # 文本宽度 text width=3cm: 文本超过3cm时会自动换行 # 边框 draw # 填充颜色 fill 画节点 \node (decision1) [decision,below of=process1,yshift=-0.5cm] {Decession 1}; 解析： # name (decision1):这个节点的name，后面需要用这个name调用这个节点。 # 属性 decision：需要调用的节点的样式名称 # 位置 below of=process1：定义节点的位置 left of: right of: # 偏移,对位置进行微调 yshift: xshift: # title {Decession 1}: 结果显示的标题 总结 类似于css的思想，这个其实就是先定义一下样式然后调用，调用的时候也可以修改，大多数参数也能猜（确信 Reference [1] 5 Latex 画流程图 - 简书 (jianshu.com) [2] Latex 绘制流程图_tuzixini的博客-CSDN博客_latex 流程图 [3] LaTeX Graphics using TikZ: A Tutorial for Beginners (Part 3)—Creating Flowcharts