用 LaTeX 轻松编写精美 pdf latex怎么运行为pdf
liebian365 2024-10-29 15:52 33 浏览 0 评论
LaTeX 不只是写数学公式
你可能了解过 LaTeX 是一种编写数学公式的语言,它是内嵌在 Markdown 中的,但即使你平时没有写数学公式的需求,也可以用它来编写 pdf,我大学里社会实践的策划书都是使用 LaTeX 编译制作的。
LaTeX 相比 Word 的好处
LaTeX 相比 Word 就好比 Markdown 之于富文本,只要用语句声明这里有一个什么样的样式,就能编译出应该有的效果,让你能够专注于内容。
其中感受最明显的一点是大纲的制作,在 LaTeX 中,标注了层级后,就能用一句命令制作出点击可跳转的目录。
hyperref
这样的效果在 Word 里实现是比较麻烦的,并且由于这大纲是自动生成的,非常利于修改。
LaTeX 编译 pdf 快速上手
文件格式
纯文本文件的格式是 .txt
Markdown 文件的格式是 .md
LaTeX 文件的格式是 .tex
其实它们都是纯文本,都能用文本编辑器打开,后缀名只是决定了打开它们的方式,在 Markdown 编辑器比如 Obsidian 中可以编译 .md,同样,要通过 .tex 生成 pdf,需要 LaTeX 的编译器。
接下来让我们来看一下怎么写 tex 文件吧。
基本结构
要想编译出 pdf,至少需要这么一个结构。
\documentclass{ctexart}
% 导言区
\begin{document}
% pdf 呈现的内容
\end{document}
LaTeX 中的命令都用 \ 作为开头。
\begin{} 和 \end{} 创建了一个环境,在这里,这个环境叫做 document,意味着你写在这里面的内容会被编译到 pdf 中。
而在 \begin{document} 环境之前的内容,不会被编译到 pdf 中,但用于写对 pdf 整体进行设置的语句。
\documentclass{} 是设置文档的类型,只要在你的 pdf 中需要用到中文,就把文档类型设置成 ctexart就好了。
基本信息
了解了基本结构以后,我们来对文档进行一些基本的设置。
- \author{}:作者
- \title{}:标题
- \date{}:日期
有了这些基本的信息以后,我们就可以为 pdf 创建内容了。
在内容区域写下 \maketitle
\documentclass{ctexart}
\author{唐夕洲}
\title{用 $\LaTeX$ 轻松编写精美 pdf}
\date{}
\begin{document}
\maketitle
\end{document}
pdf 已经出现内容啦!
出现内容
大纲结构
在 Markdown 中,我们用 # 的个数来声明这是一个几级标题。
# 一级标题
## 二级标题
### 三级标题
在 LaTeX 中是这样写的
%...
\begin{document}
\section{一级标题}
%一些内容
\subsection{二级标题}
\subsubsection{三级标题}
%一些内容
\end{document}
缩进并不是必须的,但这是一个良好的习惯。
声明了各个层级的标题后,我们就可以制作大纲了。
在 \maketitle 下方写上 \tableofcontents
%...
\begin{document}
\maketitle
\tableofcontents
\section{一级标题}
%一些内容
\subsection{二级标题}
\subsubsection{三级标题}
%一些内容
\end{document}
就会得到这样的效果
目录
但你会发现目录周围并没有红色边框,也就是说不能点击跳转。
这时候只要在导言区写上 \usepackage{hyperref} 就可以了。
\documentclass{ctexart}
\usepackage{hyperref}
\begin{document}
\tableofcontents
%...
\end{document}
引入包
LaTeX 自带的功能是有限的,如果想要扩展功能,就要通过 \usepackage{} 来引入相应的包。
你也可以理解为使用插件,但不需要安装什么东西,只需要写出对应的包的名字就好了。
到此为止,你已经可以做出有模有样的 pdf 了,并且实现这一切并不需要不停移动鼠标调整样式,只需要写下几句命令就可以了!
结语
虽然 LaTeX 包罗万象,但整体看来,无非就是一些命令而已,当想要做出什么效果时,在搜索引擎里搜索一下就能得到答案了。
其实我写的远不止这些,但最终决定将很多内容删去,只留下最基础的部分,我不希望自己只是将其他人已经写过的内容再写一遍,我希望能让这篇文章看起来没有任何技术成分,为你打开 LaTeX 大门。
相关推荐
- zookeeper的Leader选举源码解析(zookeeper选取机制)
-
作者:京东物流梁吉超zookeeper是一个分布式服务框架,主要解决分布式应用中常见的多种数据问题,例如集群管理,状态同步等。为解决这些问题zookeeper需要Leader选举进行保障数据的强一致...
- 接待外国人英文口语(接待外国人英文口语翻译)
-
接待外国人英文口语询问访客身份: MayIhaveyourname,please? 请问您贵姓? Whatcompanyareyoufrom? 您是哪个公司的? Could...
- 一文深入理解AP架构Nacos注册原理
-
Nacos简介Nacos是一款阿里巴巴开源用于管理分布式微服务的中间件,能够帮助开发人员快速实现动态服务发现、服务配置、服务元数据及流量管理等。这篇文章主要剖析一下Nacos作为注册中心时其服务注册与...
- Android面试宝典之终极大招(android 面试宝典)
-
以下内容来自兆隆IT云学院就业部,根据多年成功就业服务经验,以及职业素养课程部分内容,归纳总结:18.请描述一下Intent和IntentFilter。Android中通过Intent...
- 除了Crontab,Swoole Timer也可以实现定时任务的
-
一般的定时器是怎么实现的呢?我总结如下:1.使用Crontab工具,写一个shell脚本,在脚本中调用PHP文件,然后定期执行该脚本;2.ignore_user_abort()和set_time_li...
- Spark源码阅读:DataFrame.collect 作业提交流程思维导图
-
本文分为两个部分:作业提交流程思维导图关键函数列表作业提交流程思维导图collect后Job的提交流程点击「链接」查看DataFrame.collect触发的作业提交流程思维导图。关键函数列表Data...
- Arduino通过串口透传ESP 13板与java程序交互
-
ESP13---是一个无线板子,配置通过热点通信Arduino通过串口透传ESP13板与java程序交互这个程序最基本的想法是用java把Arduino抽象出来,忙活了好几天,虽然没有达到最后的...
- Arduino与两个或多个Arduino板之间的通信
-
问题您希望让两个或多个Arduino板一起工作。您可能希望增加I/O能力或执行比单个板上能够实现的更多处理。您可以使用I2C在板间传递数据,以便它们可以共享工作负载。解决方案本示例中的两段代码展示了如...
- Android开发者必知的5个开源库(安卓开源库)
-
过去的时间里,Android开发逐步走向成熟,一个个与Android相关的开发工具也层出不穷。不过,在面对各种新鲜事物时,不要忘了那些我们每天使用的大量开源库。在这里,向大家介绍的就是,在这个任劳任怨...
- Android 开发中文引导-应用小部件
-
应用小部件是可以嵌入其它应用(例如主屏幕)并收到定期更新的微型应用视图。这些视图在用户界面中被叫做小部件,并可以用应用小部件提供者发布。可以容纳其他应用部件的应用组件叫做应用部件的宿主(1)。下面的截...
- Android | 如何在设备启动完成后打开应用
-
读完这篇文章大概需要1分钟最近,在做一个应用(暂且称之为MyApp),里面需要有provisioning(配置)的部分,也就是在应用启动前有个配置的过程,由好几个Activity组成,一个...
- 2021款欧版标致3008 1.5T柴油版:更为舒适的家用SUV
-
自文艺复兴时期及以后以来闻名的法国人的外向性为现代汽车文化注入了另一块石头,但如今已被大量技术所装饰。这标致3008出生时是畅销书。这是您在看到新船体时就知道的情况之一,那是在2016年,当年几乎...
- 媒库文选估计波士顿动力公司机器狗大军的拉力
-
EstimatethePullingForceofBostonDynamics'Robo-DogArmy估计波士顿动力公司机器狗大军的拉力RhettAllain雷特·阿兰When...
- Three.js建模基础(threejs3d)
-
在Three.js中,一个可见的物体是由几何体和材料构成的。在这个教程中,我们将学习如何从头开始创建新的网格几何体,研究Three.js为处理几何对象和材质所提供的相关支持。1、索引面集/Indexe...
- 如何用2 KB代码实现3D赛车游戏?2kPlus Jam大赛了解一下
-
选自frankforce作者:Frank机器之心编译参与:王子嘉、GeekAI控制复杂度一直是软件开发的核心问题之一,一代代的计算机从业者纷纷贡献着自己的智慧,试图降低程序的计算复杂度。然而,将一款...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)