gyro永不抽风！ - LaTeX
type: channel
link: https://gallery.gyrojeff.top/index.php/tag/LaTeX/
items: LaTeX的算法 | 伪代码排版
items: LaTeX调整itemize和enumerate间距
items: LaTeX中排版时的宽度问题
items: LaTeX | 图像的简单排版
items: LaTeX模板——CVPR | 以及Tikz宏包使用的修复
items: 使用LaTeX的TikZ宏包绘制流程图

LaTeX的算法 | 伪代码排版
type: item
date: 2020-12-19T11:16:00+00:00
description: 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

LaTeX调整itemize和enumerate间距
type: item
date: 2020-12-19T07:38:00+00:00
description: 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

LaTeX中排版时的宽度问题
type: item
date: 2020-12-18T03:41:00+00:00
description: 注：本文部分转载自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更为常用，可以较好地进行排版。

LaTeX | 图像的简单排版
type: item
date: 2020-12-17T10:08:00+00:00
description: 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

LaTeX模板——CVPR | 以及Tikz宏包使用的修复
type: item
date: 2020-12-16T15:21:00+00:00
description: 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

使用LaTeX的TikZ宏包绘制流程图
type: item
date: 2020-11-25T13:43:00+00:00
description: 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] (proces…