在GolangConf'2019上准备报告的过程中,我使用了LaTeX。 尽管有些过时的事情,一些不寻常的行为,微不足道或复杂的文档,但我突然很喜欢它。 我没有成为LaTeX的“专家”,但我能够制作出很好的幻灯片。 我想描述在LaTeX上创建现代演示文稿的要点。 这尤其适合按职业进行编程的IT专家。 编写演示文稿很有趣。

为什么选择LaTeX:
- 灵活的叠加层(当幻灯片上的信息依次出现时)
- 重复性和独特性
- 我们作为程序编写。 某些资源可以存储在单独的文件中-代码,链接列表
为什么不乳胶:
- 仅PDF输出
- 如果需要,对表和列进行微调可能比移动鼠标花费更多的时间。 无需在LaTeX中的五张复杂幻灯片中进行演示。 而在55岁-这是必要的
让我们开始安装
实际上,现在有一种领先的LaTeX / TeX实用程序发行版已吸收了其余所有内容-TexLive。 那里的问题按年份编号。 不要在2018年之前放置考古版本。 因此,几乎所有Ubuntu用户都在这里 。 罂粟驱动程序有单独的一套 。 或者,您可以使用通用安装程序,包括Windows 。
CentOS用户必须受苦。
无论如何,您都可以创建自己的Dockerfile并使用它。 但是请注意,某些实用程序将要查看系统字体。
TexLive分发繁重,最多需要5Gb。 您需要安装texlive-full或类似的软件包(名称可能因发行版本而异)。
但是,在二十一世纪的庭院中,您可以使用一种在线服务来与LaTeX一起使用。 由于某种原因,甚至没有科学家对此一无所知。 例如,最先进的之一。
关于LaTeX的一些知识
这不是有关LaTeX入门的分步指南。 我们将快速介绍如何进行演示,以及您自己使用Google的过程。 但是我会做基本的参考。 也要注意Wikiquote 。
这看起来像是使用Beamer软件包的简单演示-负责演示的是他:
\documentclass{beamer}
走吧
这是我在GolangConf2019上的总结演讲 。 在她周围,我们将旋转。
首先,您应该做的是忘掉所有对TeX字体的引用作为噩梦。 Donald Knuth于1977年开始开发METAFONT字体系统,并于1979年进行了介绍。 当时真酷。 但是在2019年的院子里,今天您只能在无聊的几分钟内拖动文件名8 + 3和特殊位图字体的标准。 所有现代系统都使用现代矢量字体。 TexLive实用程序具有一个新的文档编译器-xelatex。 它与pdflatex完全兼容,但可与系统字体一起使用。 所有需要做的就是加载fontspec或xltxtra包(它加载fontspec)并设置字体:
在示例中,我们立即设置演示文稿的大小(16厘米至9厘米),对如何组装演示文稿进行了评论,并连接了babel软件包,而我们不会对其进行拆卸。 对于Linux用户,我提醒您,2019年TTF字体可以放入主目录的.fonts目录中。
您可以进行演示,而无需任何特殊设计,但是默认情况下,在Beamer中的美感很奇怪,因此几乎每个人都使用某些主题。 通常,皮肤是.sty文件的集合,位于编译器可以找到它们的位置,即 与演示文件本身位于同一位置。 该主题与演示文稿序言中的相应行相关:
\usetheme{gcr2019}
顺便说一句,它是创建最简单的演示设计主题的绝妙指南 。 我在下一次Oleg Bunin会议上提出了3个主题,一个是我自己的,两个是为了说明这篇文章的: 一个 , 两个和三个 。
原则上,这些主题中定义的所有内容都可以是演示文稿文件中的常规工作表。 这没有错。 需要重复性时,需要主题。 在以上每个主题中,都有一个用法示例和一个汇总结果。
叠加层
重叠式-这是您的信息逐渐出现在同一张幻灯片上的时间。 这是一个例子:
\begin{frame} \begin{itemize} \item<1-> , !.. , ! \item<2-> – . \item<2-> – \item<3-> ! \end{itemize} \end{frame}
首先,出现第一行,然后出现第二和第三行,然后出现第四行。 同时,我们看到了如何制作无序列表。 覆盖系统几乎可以固定在任何地方。 例如,我这样做是为了突出显示代码行(我们将在下面考虑)。
注意模板中的行:
\setbeamercolor{itemize item}{fg=black} \setbeamercolor{itemize subitem}{fg=black} \setbeamercolor{alerted text}{fg=black} \setbeamertemplate{itemize items}{\textbullet}
注释掉行(使用%符号进行注释),看看会发生什么。 不是那种颜色,而是蓝色三角形。
我找不到在哪里确定这一点。 投影机提供了多次使用同一张幻灯片的功能。 这真的很酷:
\begin{frame}[label=again]{ } ... \end{frame} ... \againframe{again}
图片
以我的演示为例。 两列,左侧为无序列表,右侧为图片:
\begin{frame}{ Acme} \begin{columns}[T,onlytextwidth] \begin{column}{0.44\textwidth} \begin{itemize} \item \item --- \emph{ } \item Alef \item Alef = Acme \item 30 \end{itemize} \end{column} \begin{column}{0.56\textwidth} \includegraphics[width=\textwidth]{acme-alef.png} \end{column} \end{columns} \end{frame}
[T,onlytextwidth]参数指示沿行的基线进行垂直对齐,并且列块的宽度等于文本框架的宽度。 LaTeX本身将按需压缩图片。 您可以创建自己的示例,并使用参数来查看如何以及将如何重叠。

代码清单
立即预订,无需在演示文稿的代码清单中突出显示语法。 如果在那儿需要她,那说明您做错了。 需要更多选择。 我使用标准清单软件包,该软件包可以突出显示语法,并且无法选择。 您可以在任何我的示例中看到列表块的布局设置:
\definecolor{acmebg}{HTML}{FFFFEF} \definecolor{acmel}{HTML}{52AAAD} \lstset{ columns=flexible, keepspaces=true, showstringspaces=false, showtabs=false, tabsize=4, frame=single, basicstyle=\fontsize{10pt}{12}\bf\ttfamily\color{black}, backgroundcolor=\color{acmebg}, commentstyle=\color{black}, keywordstyle=\color{black}, stringstyle=\color{red}, rulecolor=\color{acmel}, framerule=1pt }
为了突出显示背景,我使用了“废弃”的lstlinebgrd软件包。 您必须插入纠正代码 。 但是, 此附加代码为我提供了\ btLstHL命令,该命令使我可以突出显示叠加层中的行:
\begin{frame}[fragile]{Limbo. } \begin{lstlisting}[basicstyle=\fontsize{12pt}{12}\bf\ttfamily\color{black},linebackgroundcolor={% \btLstHL<1>{1}% \btLstHL<2>{2-3}% \btLstHL<3>{5,6}% \btLstHL<4>{8,9}% \btLstHL<5>{11}% }] i, j: int; k := 1; # int b := byte 2; # byte s: string; # s1 := s[0:]; # a: array of int; a = array[10] of int; myfunc: fn(i, k: int, s: string) : (list of string, int); \end{lstlisting} \end{frame}

参考书目
为了简单起见,我使用biblatex软件包。 这是困难。 Beamer软件包将覆盖某些biblatex默认设置。 这些命令删除图标并设置书目的字体:
\setbeamertemplate{bibliography item}{\insertbiblabel} \renewcommand*{\bibfont}{\fontsize{8}{1}\selectfont}
我们必须记住一个要点-书目设置在单独的文件中。 在模板的示例中,我使用filecontents包在正文中编写了参考书目,这反过来又创建了所需的实际文件。 编译分四个步骤进行。 首先,xelatex只需编译文件并创建支持文件。 然后,biber实用程序将编译书目文件,然后您需要再次运行xelatex。 是的,有了预处理器,那里的一切都很复杂。
biblatex软件包也是可定制的。 但是,我第一次拥有了示例中的所有内容。
后记
我很喜欢准备演示文稿和准备本文的材料。 我希望有人愿意,但不能决定在他们的工作中开始使用LaTeX-我打破了这个障碍。 当然,我没有制作包装,没有深入研究,没有提到重要的绘画主题。 但是我认为,一旦您开始使用该工具,所有这些都将出现。 在Habr上有不错的实用文章,标签为#latex 。
我希望我的模板能在即将到来的会议上对某人有所帮助。 也许有人会用合适的包装用互联网上已经存在多年的背光来绘制那些辅助代码的碎片。 加油!