当前位置: 首页 > news >正文

Beamer-LaTeX学习(教程批注版)【4】

众所周知,随着显示器普及宽屏化,PPT排版需要多列化来充分利用页面的横向空间。
这节课我们来学习如何创建列,即在beamer中增加列内容,以及如何对齐列。

1 使用不同的宽度来创建列

在beamer中我们通过在页面上使用columns环境来创建列。接着,在最开始的地方我们使用\column命令,再在后面添加上列的宽度,或者使用\begin{column}...\end{column}

在接下来的这个实例中,我们创建了两个不同宽度的列:

% !TEX program = xelatex\documentclass[aspectratio=169]{beamer}
\usetheme{AnnArbor}
\usecolortheme{crane}
\usepackage{fontspec}
\usepackage{xeCJK}
\usepackage{tikz}
\usetikzlibrary{intersections}
\setmainfont{AlibabaPuHuiTi-3-55-Regular.ttf}
\setCJKmainfont{AlibabaPuHuiTi-3-55-Regular.ttf}
\setsansfont{Arial}
\setmonofont{Consolas}\title[中间脚注]{耳东小白的beamer学习测试}
\subtitle{哆哆嗦嗦的历险之旅}
\author[左侧脚注]{耳东小白\inst{1} \and 耳东大白\inst{2}}
\institute[]{\inst{1} 耳东小白工作室 \and \inst{2} 耳东大白工作室}
\date[右侧脚注]{\today}
\titlegraphic{\begin{tikzpicture}[overlay, remember picture]\node[left=0.2cm] at (current page.15){\includegraphics[width = 1cm]{./pics/Logo.png}};\end{tikzpicture}
}\begin{document}\begin{frame}{Columns in beamer}\begin{columns}\column{0.6\textwidth}\centeringThis is column one with 0.6 text width.\column{0.4\textwidth}\centeringThis is column two with 0.4 text width.\end{columns}\end{frame}\end{document}

这里可以忽略一下小白这个风格的相关设置,仅关注今天这个话题的核心部分:

% Columns in beamer
\documentclass{beamer}% Theme choice:
\usetheme{AnnArbor}
\usecolortheme{crane}\begin{document}\begin{frame}{Columns in beamer}\begin{columns}\column{0.6\textwidth}\centeringThis is column one with 0.75 text width.\column{0.4\textwidth}\centeringThis is column two with 0.25 text width.\end{columns}
\end{frame}\end{document}

在这里插入图片描述

初步评论:

  • 我们使用了AnnArbor主题,因为小白喜欢这个主题,载入的方法是\usetheme{AnnArbor}
  • 页面的标题为"Columns in beamer";
  • 我们创建了两列:其中一个占文本宽度的60%,另一个占文本宽度的40%;
  • 文本在每列中使用\centering来居中文本。

2 beamer中文字旁边的附图

与以上的方法相同,我们可以把文本和图片像下面这样放在同一页中:

\begin{document}\begin{frame}{Text and Image in beamer}\begin{columns}\column{0.4\textwidth}This is an example of text and image in the same slide using columns environment.\column{0.6\textwidth}\begin{figure}\centering\includegraphics[width=\textwidth]{Neural-Network.jpg}\caption{Neural Network with 5 neurons in the hidden layer. }\end{figure}\end{columns}
\end{frame}\end{document}

其中,页面右列插入了一张神经网络图。这里插入的是一张jpg图片,名字就叫Neural-Network.jpg.

在这里插入图片描述

需要注意的是,右侧的图像是通过一个叫tikz的包绘制的,而这个包的作者和beamer的作者是同一人——Till TanTau,小白目前正在努力学习这个强大的绘图包,相信很快也会有一个系列的文章来和大家一同学习如何使用它。

至于如何绘制这张图,可以参考以下网址的博客:
read the post

那么小白因为略微看了一下Tantau大神的tikz的文档(这位神是一个文档狂热爱好者,tikz的文档长达上千页,你敢信),所以暂时帮大家把这段绘图代码直接嵌入到beamer中:

\begin{frame}{Text and Image in beamer}\begin{columns}\column{0.4\textwidth}This is an example of text and image in the same slide using columns environment.\column{0.6\textwidth}\begin{figure}% Input layer neurons'number\newcommand{\inputnum}{3} % Hidden layer neurons'number\newcommand{\hiddennum}{5}  % Output layer neurons'number\newcommand{\outputnum}{2} \begin{tikzpicture}% Input Layer\foreach \i in {1,...,\inputnum}{\node[circle, minimum size = 6mm,fill=orange!30] (Input-\i) at (0,-\i) {};}% Hidden Layer\foreach \i in {1,...,\hiddennum}{\node[circle, minimum size = 6mm,fill=teal!50,yshift=(\hiddennum-\inputnum)*5 mm] (Hidden-\i) at (2.5,-\i) {};}% Output Layer\foreach \i in {1,...,\outputnum}{\node[circle, minimum size = 6mm,fill=purple!50,yshift=(\outputnum-\inputnum)*5 mm] (Output-\i) at (5,-\i) {};}% Connect neurons In-Hidden\foreach \i in {1,...,\inputnum}{\foreach \j in {1,...,\hiddennum}{\draw[->, shorten >=1pt] (Input-\i) -- (Hidden-\j);   }}% Connect neurons Hidden-Out\foreach \i in {1,...,\hiddennum}{\foreach \j in {1,...,\outputnum}{\draw[->, shorten >=1pt] (Hidden-\i) -- (Output-\j);}}% Inputs\foreach \i in {1,...,\inputnum}{            \draw[<-, shorten <=1pt] (Input-\i) -- ++(-1,0)node[left]{$x_{\i}$};}% Outputs\foreach \i in {1,...,\outputnum}{            \draw[->, shorten <=1pt] (Output-\i) -- ++(1,0)node[right]{$y_{\i}$};}\end{tikzpicture}\caption{Neural Network with 5 neurons in the hidden layer.}\end{figure}\end{columns}
\end{frame}

绘制的效果大家可以和直接导入jpg的效果比较下:需要说明的是,tikz直接绘制出来的是矢量图,效果非常赞, 图像细节无惧放大和缩小。

在这里插入图片描述

3 两列之间的分割线

为了更明显地区分两列或更多列的区域,我们可以创建一竖直线来分割它们。这可以通过简单地加上一句\rule命令,在两列中间添另一根极窄的线来完成。以下是在两列间添加分割线的示例:

\begin{frame}{Vertical line between columns}\begin{columns}
% Column 1\begin{column}{0.49\textwidth}\begin{itemize}\item Input layer: 2 neurons.\item Hidden layer: 5 neurons.\item Output layer: 2 neurons.\end{itemize}\end{column}% Column 2 (vertical line)\begin{column}{.02\textwidth}\rule{.1mm}{0.7\textheight}\end{column}% Column 3    \begin{column}{0.49\textwidth}\includegraphics[width=\textwidth]{Neural-Network.jpg}\end{column}\end{columns}
\end{frame}

得到的效果如下所示:
在这里插入图片描述

总结一下:

  • 这里创建了三列,宽度分别为页面文本宽度的0.49, 0.02, 0.49倍;
  • 第一列包含一个无序列表,第二列包含这条垂直分割线,第三列包含一张图片;
  • 垂直分割线的宽度为0.1mm,其高度为文本区域高度的70%,这是通过命令\rule{<width>}{<height>}来实现的。

注意:前面我们使用\column命令而这里使用\begin{column}...\end{column}, 这两种用法是等价的。

4 列的垂直对齐

列内容的对齐,对演讲稿的美观度来说非常重要。文本和图像可以被放置在页面的三种位置:顶部、底部和居中。通过在column环境开始之后指定[c][T][b],即可分别将短内容对齐到中心、顶部和底部。

4.1 顶部对齐

\begin{frame}{Vertical alignment (top)}\begin{columns}[T]
% Column 1\begin{column}{0.5\textwidth}This is a neural network with two inputs and two outputs. It has the following parameters:\begin{itemize}\item Input layer: 2 neurons.\item Hidden layer: 5 neurons.\item Output layer: 2 neurons.\end{itemize}The neural network is drawn in \LaTeX{} using Ti\textit{k}Z package. Check latexdraw.com for more details.In Xiaobai's Example, we need to write more text to show the effect of alignment.So these words are just for space occupying.\end{column}% Column 2    \begin{column}{0.5\textwidth}\includegraphics[width=\textwidth]{Neural-Network1.jpg}\end{column}\end{columns}
\end{frame}

注意小白因为采用了宽屏比,为了凸显出对齐效果,特意在文本中加长了一部分“废话”,目的是为了把文本增高,这样才能看出图片与文本块的对齐关系。

在这里插入图片描述

4.2 中间对齐

\begin{frame}{Vertical alignment (center)}\begin{columns}[c]
% Column 1\begin{column}{0.5\textwidth}This is a neural network with two inputs and two outputs. It has the following parameters:\begin{itemize}\item Input layer: 2 neurons.\item Hidden layer: 5 neurons.\item Output layer: 2 neurons.\end{itemize}The neural network is drawn in \LaTeX{} using Ti\textit{k}Z package. Check latexdraw.com for more details.In Xiaobai's Example, we need to write more text to show the effect of alignment.So these words are just for space occupying.\end{column}% Column 2    \begin{column}{0.5\textwidth}\includegraphics[width=\textwidth]{Neural-Network1.jpg}\end{column}\end{columns}
\end{frame}
\begin{frame}{Vertical alignment (bottom)}

在这里插入图片描述

4.3 底部对齐

\begin{columns}[b]
% Column 1\begin{column}{0.5\textwidth}This is a neural network with two inputs and two outputs. It has the following parameters:\begin{itemize}\item Input layer: 2 neurons.\item Hidden layer: 5 neurons.\item Output layer: 2 neurons.\end{itemize}The neural network is drawn in \LaTeX{} using Ti\textit{k}Z package. Check latexdraw.com for more details.In Xiaobai's Example, we need to write more text to show the effect of alignment.So these words are just for space occupying.\end{column}% Column 2    \begin{column}{0.5\textwidth}\includegraphics[width=\textwidth]{Neural-Network1.jpg}\end{column}\end{columns}
\end{frame}

在这里插入图片描述

全文总结

  • 在beamer中可通过column环境创建多列。我们在主列中通过预定义的宽度来实现添加内部列:\begin{columns}{<width>}...\end{columns}
  • 通过使用命令\rule{<width>}{<height>}可以在两列间使用极小的宽度创建垂直分割线;
  • 不同列的内容,其对齐方式可以通过添加[T][b][c],分别对应顶部对齐、底部对齐和中间对齐。

在这里插入图片描述

http://www.dtcms.com/a/265266.html

相关文章:

  • (LangChain)RAG系统链路向量检索器之Retrievers(五)
  • 设计模式精讲 Day 23:访问者模式(Visitor Pattern)
  • Python 的内置函数 print
  • RT Thread Studio修改堆区大小的方法
  • Python 中 http.client 与 requests 的对比及适用场景
  • 数据结构20250620_数据结构考试
  • android核心技术摘要
  • 冲突检测美国服务器:原理剖析与实战解决方案
  • Zig 安装使用教程
  • HCIA-以太网链路聚合
  • Flask 安装使用教程
  • C#上位机串口接口
  • Hamilton系统特征线法下的非线性PDE解与爆破时间分析
  • C++ 完美转发(泛型模板函数)
  • ssh连接服务器,有了ip和private key,还需要其它吗
  • 技术学习_大语言模型
  • el-button/button置灰及原理
  • 应急响应类题练习——玄机第一章 应急响应- Linux入侵排查
  • 代码随想录算法训练营第四十三天|动态规划part10
  • 2025-6GESP六级编程题分析
  • 如何保证缓存和数据库的双写一致性
  • Python训练营Day1
  • 软件测试用例大全
  • 基于大模型的智能体中由自主性引发的安全风险综述
  • CLIP heat map generation
  • 【深度学习:进阶篇】--4.2.词嵌入和NLP
  • MinHook 如何对 .NET 母体 CoreCLR 进行拦截
  • 在米联客4EV上部署tinyriscv
  • 【深度学习新浪潮】国内零样本抗体设计的科研进展如何?
  • docker-compose.yml 文件详解——AI教你学Docker