使用 LaTeX 标记语言来撰写文档。LaTeX 文件准备系统有一段有趣的历史。在 1968 年，程序员 Don Knuth 用一种老式印刷排版方式，撰写了他的第一本书《 计算机程序设计艺术 The Art of Computer Programming 》。当他在 1976 年出版第二版时，出版商已经转向现代照相排版技术。Knuth 对新版本的外观不满意。他从程序员的角度解决问题，决定创建他自己的文字处理系统，这样以后他出版的书就可以以相同格式排版，拥有相同的外观。因此，Don Knuth 在 1978 年编写了第一版 TeX 。几年后，Leslie Lamport 创建了一组宏定义，以便作者更容易编写复杂文档。Lamport 的宏定义扩展，即 LaTeX，有效地扩展了 TeX 能够轻松创建各种文档。例如，许多学术组织使用 LaTeX 出版期刊和论文集。使用 LaTeX 编写文档通过写一些短文就可以很容易掌握 LaTeX 基础。让我们从 Opensource.com 介绍页面借用一下内容，创建一个示例：$ cat about.tex \documentclass{article} \begin{document} Opensource.com is a premier, daily publication focused on open source and Linux tutorials, stories, and resources. We're a diverse and inviting group, made up of staff editors, Correspondents, contributors, and readers. We value differences in skills, talents, backgrounds, and experiences. There are a few different ways to get involved as a reader or a writer. \end{document} 类似其他文档格式程序， LaTeX 会将单词汇集起来，填充成段落 。这意味着你可以在段落中间添加新文本，而不用担心最终文档的段落参差不齐。只要你不在段落中添加空行， LaTeX 就会创建完全对齐的段落。当它找到一个空行时， LaTeX 会开启一个新段落。LaTeX 需要一些定义文档的控制语句。任何 LaTeX 文档应当以“文档类别”声明开始。LaTeX 支持多种文档，包括书信、书籍和文章。例如，我使用 \documentclass{article} 设置类别为 “文章” 。使用 \begin{document} 和 \end{document} 声明来定义文本的开始和结束。如果你在 \begin{document} 前添加了文本，那么 LaTeX 会报错。在 \end{document} 之后的文本都会被忽略。使用 LaTeX 的 latex 命令处理文档：$ latex about.tex This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./about.tex LaTeX2e <2020-10-01> patch level 4 (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2020/04/10 v1.4m Standard LaTeX document class (/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo)) (/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-dvips.def) No file about.aux. [1] (./about.aux) ) Output written on about.dvi (1 page, 736 bytes). Transcript written on about.log. LaTeX 会输出许多文本，这样你就可以知道它在干什么。若你的文档包含错误， LaTeX 会报错并提示它可以做什么。大多数情况下，你可以在提示后输入 exit 来强制退出 LaTeX 。如果用 LaTeX 成功生成一个文档，会生成一个带 .dvi 后缀的文件。DVI 表示 “ 设备无关 Device Independent ”，因为你可以使用不同的工具来生成其他格式。例如， dvipdf 程序可以将 DVI 文件转换为 PDF 文件。$ dvipdf about.dvi 添加列表LaTeX 支持两种列表：一种以数字开头的 “枚举” 列表，一种 “逐项” 或 “项目符号” 列表。在第二段后添加一个简短的枚举列表，列出人们可以参与 Opensource.com 的方式：\begin{enumerate} \item Be a writer \item Be a reader \end{enumerate} 与在文档定义中添加 \begin 和 \end 声明类似，你也需要在列表前后添加 \begin 和 \end 声明。在列表中，每个项目以 \item 命令开始。当你用 LaTeX 处理该文档并转换为 PDF 格式后，你会看到该列表为数字列表：你也可以在列表中嵌套列表。这是一个优雅的功能，如果你需要在列表中为每个条目添加选项。例如，你可以为想要在 Opensource.com 中成为作者的人们提供一些不同的资源。嵌入列表使用单独的 \begin 和 \end 声明。为了看起来方便，我在示例中添加了空行，但是 LaTeX 会忽略这些空行：\begin{enumerate} \item Be a writer \begin{itemize} \item Resources for writers \item Contributor Club \item Correspondent Program \end{itemize} \item Be a reader \end{enumerate} 作为嵌套列表，新列表嵌入在编号 1 的项目中，因为你在原先的 \item 声明之间添加了列表。你可以通过在 \end{enumerate} 语句前添加新列表，作为编号 2 项目的嵌套列表。章节和小节你可以将冗长文章分成多个章节，这样更易于阅读。使用 \section{...} 语句在大括号内添加章节标题。例如，你可以在文档顶部添加一个标题为 “About Opensource.com” 的新章节：$ head about.tex \documentclass{article} \begin{document} \section{About Opensource.com} Opensource.com is a premier, daily publication focused on open source and Linux tutorials, stories, and resources. We're a diverse and inviting group, made up of staff editors, Correspondents, contributors, and readers. We article 文档类会在每个主要章节添加编号，并使字体变大来突出显示。你可以使用 \subsection{...} 命令来组织文档。就像 \section{...} 命令一样，在大括号中输入副标题名称。$ head about.tex \documentclass{article} \begin{document} \section{About Opensource.com} Opensource.com is a premier, daily publication focused on open source and Linux tutorials, stories, and resources. \subsection{Welcome to the Opensource.com community} 标题和作者用于出版的科学类的文章需要标题、作者以及发表日期。LaTeX 提供了通过插入命令的方式来添加这些信息，然后使用单独的 \maketitle 命令生成文章的标题。将 “About Us” 作为文章标题，作者为 “Opensource.com Editors”，发表日期为 “July 10, 2022” 。你必须在 \begin{document} 之后，文章内容前插入这些内容。\title{About Us} \author{Opensource.com Editors} \date{July 10, 2022} \maketitle 当你在生成文档时，LaTeX 会将标题、作者和日期添加到文章的顶部：着重强调科学和其他技术类文章通常会突出术语和短语。 LaTeX 提供了几种可以在技术文档中使用的字体效果，包括强调文本（通常以斜体显示）、粗体文本和 小型大写字母 small caps 。将短语“staff editors, Correspondents, contributors, and readers”放在斜体文本中，并将特定词“reader”和“writer”放在段落后面的强调文本中。你也可以将“skills, talents, backgrounds, and experiences”加粗。虽然这不是正确的样式设置方式，但你可以使用小型大写字母来键入 “Linux” 。$ head -20 about.tex \documentclass{article} \begin{document} \title{About Us} \author{Opensource.com Editors} \date{July 10, 2022} \maketitle \section{About Opensource.com} Opensource.com is a premier, daily publication focused on open source and \textsc{Linux} tutorials, stories, and resources. \subsection{Welcome to the Opensource.com community} We're a diverse and inviting group, made up of \textit{staff editors, Correspondents, contributors, and readers}. We value differences in \textbf{skills, talents, backgrounds, and experiences}. There are a few different ways to get involved as a \emph{reader} or a \emph{writer}. 该示例展示了不同样式的文本的应用方法。当你需要强调时，使用 \emph{...} 命令，将强调主题放在大括号内。要以斜体、粗体或小型大写字母显示文本，使用 \text 命令的变体：\textit{...} 用于斜体，\textbf{...} 用于粗体，以及 \ textsc{...} 用于小型大写字母。LaTeX 支持许多其他方式来设置文本样式，这些样式有助于你编写科学技术类文章。使用 LaTeX我只是介绍了使用 LaTeX 撰写科学技术文章的几种方式。你也可以在 LaTeX 中添加脚注，进行数学公式和方程的排版，取决于你的需求。你也可以通过阅读 Opensource.com 中的文章 《在 LaTeX 中创建文档的介绍》 ，了解使用 LaTeX 撰写科学技术文章的其他方式。via: https://opensource.com/article/22/8/pdf-latex作者：Jim Hall 选题：lkxed 译者：Donkey 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
Kile 是 Linux 上最好的 LaTeX 编辑器之一，来自 KDE。让我们来看一看它提供了什么？你可以用 TeX/LaTeX 编辑器处理各种文件。不仅仅限于科学研究，你还可以添加你的代码、开始写书（学术/创作）、或者起草文章。如果你经常处理 LaTeX 文档，一个具有预览选项和若干功能的交互式解决方案应该会很方便。Kile 是 KDE 提供选择之一，可用于 Linux 和其他平台。事实上，它是 可用于 Linux 的最佳 LaTeX 编辑器 之一，我们决定重点介绍一下它。一个开源的集成 LaTeX 编辑器Kile 可能不是最受欢迎的选择，但它确实因其提供的东西而脱颖而出。如果你正在寻找一个简单的 LaTeX 编辑器，它可能不是完美的选择。然而，它尽力为你提供友好的体验，同时从一开始就为你提供指导。让我重点强调以下特点。Kile 的特点正如我提到的，Kile 是一个功能丰富的 LaTeX 编辑器。如果你是 TeX/LaTeX 文档的新手，它可能会让你不知所措，但它仍然值得探索。其主要特性包括：设置向导可以轻松开始使用 LaTeX 编辑器。可用的模板可以节省文件大纲的时间。自动完成 LaTeX 命令。在不离开窗口的情况下，一键编译和预览你的文档。上百种预设模式来定义文档的类型（JSON、R 文档、VHDL、HTML 等）。日志查看器。转换文档的能力。添加/删除和转换 PDF 文件的 PDF 向导工具。反向和正向搜索功能。创建项目以组织文件集合。大量的 LaTeX 选项，无需键入任何东西即可添加所需的命令（如创建一个列表，添加一个数学函数等）。在各章或各节中轻松导航。使用小窗口预览浏览整个文件（如果文件太大需要滚动）。除了这些，你还可以配置外观，调整键盘快捷键，找到各种编码支持等。此外，设置向导（以及应用内的其他向导）的存在使用户体验变得轻而易举。例如，以下是你第一次启动该应用时：它将检查任何配置问题，帮助你确保无缝体验。设置完成后，它将迅速提示你可用的模板，让你开始：因此，指导性的设置和上述所有的功能应该构成一个出色的 LaTeX 编辑体验。在 Linux 中安装 Kile你应该可以在默认的 Linux 仓库和软件中心找到 Kile。对于 KDE，你应该看到它被列在“发现”中。不幸的是，它不提供 Flatpak 或 Snap 包。所以，你将不得不依靠从仓库中获得的标准软件包。如果你依赖终端（基于 Ubuntu），你可以输入以下命令安装：sudo apt install kile 对于 Windows 用户，你可以在 微软商店 中找到它。如果你感到好奇，你可以查看 源代码 或访问官方网站。Kile总结作为一个 LaTeX 用户，你应该发现所有这些选项对高效的编辑经体验都很有用。如果你是 TeX/LaTeX 文档的新手，你仍然可以使用它的模板、快速函数、自动完成功能，使体验变得简单。你最喜欢的 LaTeX 文档编辑器是什么？欢迎在下面的评论中告诉我。via: https://itsfoss.com/kile/作者：Ankush Das 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
本 系列 介绍了 LaTeX 中的基本格式。第 1 部分 介绍了列表。第 2 部分 阐述了表格。在第 3 部分中，你将了解 LaTeX 的另一个重要特性：细腻灵活的文档排版。本文介绍如何自定义页面布局、目录、标题部分和页面样式。页面维度当你第一次编写 LaTeX 文档时，你可能已经注意到默认边距比你想象的要大一些。页边距与指定的纸张类型有关，例如 A4、letter 和 documentclass（article、book、report） 等等。要修改页边距，有几个选项，最简单的选项之一是使用 fullpage 包。该软件包设置页面的主体，可以使主体几乎占满整个页面。—— FULLPAGE PACKAGE DOCUMENTATION另一个选择是使用 geometry 包。在探索 geometry 包如何操纵页边距之前，请首先查看如下所示的页面尺寸。1 英寸 + \hoffset1 英寸 + \voffset\oddsidemargin = 31pt\topmargin = 20pt\headheight = 12pt\headsep = 25pt\textheight = 592pt\textwidth = 390pt\marginparsep = 35pt\marginparwidth = 35pt\footskip = 30pt要使用 geometry 包将边距设置为 1 英寸，请使用以下示例\usepackage{geometry} \geometry{a4paper, margin=1in} 除上述示例外，geometry 命令还可以修改纸张尺寸和方向。要更改纸张尺寸，请使用以下示例：\usepackage[a4paper, total={7in, 8in}]{geometry} 要更改页面方向，需要将横向（landscape）添加到 geometery 选项中，如下所示：\usepackage{geometery} \geometry{a4paper, landscape, margin=1.5in 目录默认情况下，目录的标题为 “contents”。有时，你想将标题更改为 “Table of Content”，更改目录和章节第一节之间的垂直间距，或者只更改文本的颜色。若要更改文本，请在导言区中添加以下行，用所需语言替换英语（english）：\usepackage[english]{babel} \addto\captionsenglish{ \renewcommand{\contentsname} {\bfseries{Table of Contents}}} 要操纵目录与图、小节和章节列表之间的虚拟间距，请使用 tocloft 软件包。本文中使用的两个选项是 cftbeforesecskip 和 cftaftertoctitleskip。tocloft 包提供了控制目录、图表列表和表格列表的排版方法。—— TOCLOFT PACKAGE DOUCMENTATION\usepackage{tocloft} \setlength\ctfbeforesecskip{2pt} \setlength\cftaftertoctitleskip{30pt} 默认目录定制目录边框在文档中使用包 hyperref 时，目录中的 LaTeX 章节列表和包含 \url 的引用都有边框，如下图所示。要删除这些边框，请在导言区中包括以下内容，你将看到目录中没有任何边框。\usepackage{hyperref} \hypersetup{ pdfborder = {0 0 0}} 要修改标题部分的字体、样式或颜色，请使用程序包 titlesec。在本例中，你将更改节、子节和三级子节的字体大小、字体样式和字体颜色。首先，在导言区中增加以下内容。\usepackage{titlesec} \titleformat*{\section}{\Huge\bfseries\color{darkblue}} \titleformat*{\subsection}{\huge\bfseries\color{darkblue}} \titleformat*{\subsubsection}{\Large\bfseries\color{darkblue}} 仔细看看代码，\titleformat*{\section} 指定要使用的节的深度。上面的示例最多使用第三个深度。{\Huge\bfseries\color{darkblue}} 部分指定字体大小、字体样式和字体颜色。页面样式要自定义的页眉和页脚，请使用 fancyhdr。此示例使用此包修改页面样式、页眉和页脚。下面的代码简要描述了每个选项的作用。\pagestyle{fancy} %for header to be on each page \fancyhead[L]{} %keep left header blank \fancyhead[C]{} %keep centre header blank \fancyhead[R]{\leftmark} %add the section/chapter to the header right \fancyfoot[L]{Static Content} %add static test to the left footer \fancyfoot[C]{} %keep centre footer blank \fancyfoot[R]{\thepage} %add the page number to the right footer \setlength\voffset{-0.25in} %space between page border and header (1in + space) \setlength\headheight{12pt} %height of the actual header. \setlength\headsep{25pt} %separation between header and text. \renewcommand{\headrulewidth}{2pt} % add header horizontal line \renewcommand{\footrulewidth}{1pt} % add footer horizontal line 结果如下所示：页眉页脚小贴士集中导言区如果要编写许多 TeX 文档，可以根据文档类别创建一个包含所有导言区的 .tex 文件并引用此文件。例如，我使用结构 .tex 如下所示。$ cat article_structure.tex \usepackage[english]{babel} \addto\captionsenglish{ \renewcommand{\contentsname} {\bfseries{\color{darkblue}Table of Contents}} } % Relable the contents %\usepackage[margin=0.5in]{geometry} % specifies the margin of the document \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{graphicx} % allows you to add graphics to the document \usepackage{hyperref} % permits redirection of URL from a PDF document \usepackage{fullpage} % formate the content to utilise the full page %\usepackage{a4wide} \usepackage[export]{adjustbox} % to force image position %\usepackage[section]{placeins} % to have multiple images in a figure \usepackage{tabularx} % for wrapping text in a table %\usepackage{rotating} \usepackage{multirow} \usepackage{subcaption} % to have multiple images in a figure %\usepackage{smartdiagram} % initialise smart diagrams \usepackage{enumitem} % to manage the spacing between lists and enumeration \usepackage{fancyhdr} %, graphicx} %for header to be on each page \pagestyle{fancy} %for header to be on each page %\fancyhf{} \fancyhead[L]{} \fancyhead[C]{} \fancyhead[R]{\leftmark} \fancyfoot[L]{Static Content} %\includegraphics[width=0.02\textwidth]{virgin_voyages.png}} \fancyfoot[C]{} % clear center \fancyfoot[R]{\thepage} \setlength\voffset{-0.25in} %Space between page border and header (1in + space) \setlength\headheight{12pt} %Height of the actual header. \setlength\headsep{25pt} %Separation between header and text. \renewcommand{\headrulewidth}{2pt} % adds horizontal line \renewcommand{\footrulewidth}{1pt} % add horizontal line (footer) %\renewcommand{\oddsidemargin}{2pt} % adjuct the margin spacing %\renewcommand{\pagenumbering}{roman} % change the numbering style %\renewcommand{\hoffset}{20pt} %\usepackage{color} \usepackage[table]{xcolor} \hypersetup{ pdfborder = {0 0 0}} % removes the red boarder from the table of content %\usepackage{wasysym} %add checkbox %\newcommand\insq[1]{% % \Square\ #1\quad% %} % specify the command to add checkbox %\usepackage{xcolor} %\usepackage{colortbl} %\definecolor{Gray}{gray}{0.9} % create new colour %\definecolor{LightCyan}{rgb}{0.88,1,1} % create new colour %\usepackage[first=0,last=9]{lcg} %\newcommand{\ra}{\rand0.\arabic{rand}} %\newcolumntype{g}{>{\columncolor{LightCyan}}c} % create new column type g %\usesmartdiagramlibrary{additions} %\setcounter{figure}{0} \setcounter{secnumdepth}{0} % sections are level 1 \usepackage{csquotes} % the proper was of using double quotes %\usepackage{draftwatermark} % Enable watermark %\SetWatermarkText{DRAFT} % Specify watermark text %\SetWatermarkScale{5} % Toggle watermark size \usepackage{listings} % add code blocks \usepackage{titlesec} % Manipulate section/subsection \titleformat{\section}{\Huge\bfseries\color{darkblue}} % update sections to bold with the colour blue \titleformat{\subsection}{\huge\bfseries\color{darkblue}} % update subsections to bold with the colour blue \titleformat*{\subsubsection}{\Large\bfseries\color{darkblue}} % update subsubsections to bold with the colour blue \usepackage[toc]{appendix} % Include appendix in TOC \usepackage{xcolor} \usepackage{tocloft} % For manipulating Table of Content virtical spacing %\setlength\cftparskip{-2pt} \setlength\cftbeforesecskip{2pt} %spacing between the sections \setlength\cftaftertoctitleskip{30pt} % space between the first section and the text ``Table of Contents'' \definecolor{navyblue}{rgb}{0.0,0.0,0.5} \definecolor{zaffre}{rgb}{0.0, 0.08, 0.66} \definecolor{white}{rgb}{1.0, 1.0, 1.0} \definecolor{darkblue}{rgb}{0.0, 0.2, 0.6} \definecolor{darkgray}{rgb}{0.66, 0.66, 0.66} \definecolor{lightgray}{rgb}{0.83, 0.83, 0.83} %\pagenumbering{roman} 在你的文章中，请参考以下示例中所示的方法引用 structure.tex 文件：\documentclass[a4paper,11pt]{article} \input{/path_to_structure.tex}} \begin{document} ...... \end{document} 添加水印要在 LaTeX 文档中启用水印，请使用 draftwatermark 软件包。下面的代码段和图像演示了如何在文档中添加水印。默认情况下，水印颜色为灰色，可以将其修改为所需的颜色。\usepackage{draftwatermark} \SetWatermarkText{\color{red}Classified} %add watermark text \SetWatermarkScale{4} %specify the size of the text 结论在本系列中，你了解了 LaTeX 提供的一些基本但丰富的功能，这些功能可用于自定义文档以满足你的需要或将文档呈现给的受众。LaTeX 海洋中，还有许多软件包需要大家自行去探索。via: https://fedoramagazine.org/latex-typesetting-part-3-formatting/作者：Earl Ramirez 选题：Chao-zhi 译者：Chao-zhi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
LaTeX 提供了许多工具来创建和定制表格，在本系列中，我们将使用 tabular 和 tabularx 环境来创建和定制表。基础表格要创建表，只需指定环境 \begin{tabular}{列选项}：\begin{tabular}{c|c} Release &Codename \\ \hline Fedora Core 1 &Yarrow \\ Fedora Core 2 &Tettnang \\ Fedora Core 3 &Heidelberg \\ Fedora Core 4 &Stentz \\ \end{tabular} 在上面的示例中，花括号中的 ”{c|c}” 表示文本在列中的位置。下表总结了位置参数及其说明。参数位置c将文本置于中间l将文本左对齐r将文本右对齐p{宽度}文本对齐单元格顶部m{宽度}文本对齐单元格中间b{宽度}文本对齐单元格底部m{宽度} 和 b{宽度} 都要求在最前面指定数组包。使用上面的例子，让我们来详细讲解使用的要点，并描述你将在本系列中看到的更多选项：选项意义&定义每个单元格，这个符号仅用于第二列\\这将终止该行并开始一个新行``指定表格中的垂直线（可选）\hline指定表格中的水平线（可选）*{数量}{格式}当你有许多列时，可以使用这个，并且是限制重复的有效方法` `指定表格中垂直双线定制表格学会了这些选项，让我们使用这些选项创建一个表。\begin{tabular}{*{3}{|l|}} \hline \textbf{Version} &\textbf{Code name} &\textbf{Year released} \\ \hline Fedora 6 &Zod &2006 \\ \hline Fedora 7 &Moonshine &2007 \\ \hline Fedora 8 &Werewolf &2007 \\ \hline \end{tabular} 管理长文本如果列中有很多文本，那么它的格式就不好处理，看起来也不好看。下面的示例显示了文本的格式长度，我们将在导言区中使用 blindtext，以便生成示例文本。\begin{tabular}{|l|l|}\hline Summary &Description \\ \hline Test &\blindtext \\ \end{tabular} 正如你所看到的，文本超出了页面宽度；但是，有几个选项可以克服这个问题。指定列宽，例如 m{5cm}利用 tablarx 环境，这需要在导言区中引用 tablarx 宏包。使用列宽管理长文本通过指定列宽，文本将被折行为如下示例所示的宽度。\begin{tabular}{|l|m{14cm}|} \hline Summary &Description \\ \hline Test &\blindtext \\ \hline \end{tabular}\vspace{3mm} 使用 tabularx 管理长文本在我们利用表格之前，我们需要在导言区中加上它。tabularx 方法见以下示例：\begin{tabularx}{宽度}{列选项}。\begin{tabularx}{\textwidth}{|l|X|} \hline Summary & Tabularx Description\\ \hline Text &\blindtext \\ \hline \end{tabularx} 请注意，我们需要处理长文本的列在花括号中指定了大写 X。合并行合并列有时需要合并行或列。本节描述了如何完成。要使用 multirow 和 multicolumn，请将 multirow 添加到导言区。合并行multirow 采用以下参数 \multirow{行的数量}{宽度}{文本}，让我们看看下面的示例。\begin{tabular}{|l|l|}\hline Release &Codename \\ \hline Fedora Core 4 &Stentz \\ \hline \multirow{2}{*}{MultiRow} &Fedora 8 \\ &Werewolf \\ \hline \end{tabular} 在上面的示例中，指定了两行，* 告诉 LaTeX 自动管理单元格的大小。合并列multicolumn 参数是 {multicolumn{列的数量}{单元格选项}{位置}{文本}，下面的示例演示合并列。\begin{tabular}{|l|l|l|}\hline Release &Codename &Date \\ \hline Fedora Core 4 &Stentz &2005 \\ \hline \multicolumn{3}{|c|}{Mulit-Column} \\ \hline \end{tabular} 使用颜色可以为文本、单个单元格或整行指定颜色。此外，我们可以为每一行配置交替的颜色。在给表添加颜色之前，我们需要在导言区引用 \usepackage[table]{xcolor}。我们还可以使用以下颜色参考 LaTeX Color 或在颜色前缀后面添加感叹号（从 0 到 100 的阴影）来定义颜色。例如，gray！30。\definecolor{darkblue}{rgb}{0.0, 0.0, 0.55} \definecolor{darkgray}{rgb}{0.66, 0.66, 0.66} 下面的示例演示了一个具有各种颜色的表，\rowcolors 采用以下选项 \rowcolors{起始行颜色}{偶数行颜色}{奇数行颜色}。\rowcolors{2}{darkgray}{gray!20} \begin{tabular}{c|c} Release &Codename \\ \hline Fedora Core 1 &Yarrow \\ Fedora Core 2 &Tettnang \\ Fedora Core 3 &Heidelberg \\ Fedora Core 4 &Stentz \\ \end{tabular} 除了上面的例子，\rowcolor 可以用来指定每一行的颜色，这个方法在有合并行时效果最好。以下示例显示将 \rowColors 与合并行一起使用的影响以及如何解决此问题。你可以看到，在合并行中，只有第一行能显示颜色。想要解决这个问题，需要这样做：\begin{tabular}{|l|l|}\hline \rowcolor{darkblue}\textsc{\color{white}Release} &\textsc{\color{white}Codename} \\ \hline \rowcolor{gray!10}Fedora Core 4 &Stentz \\ \hline \rowcolor{gray!40}&Fedora 8 \\ \rowcolor{gray!40}\multirow{-2}{*}{Multi-Row} &Werewolf \\ \hline \end{tabular} 让我们讲解一下为解决合并行替换颜色问题而实施的更改。第一行从合并行上方开始行数从 2 更改为 -2，这意味着从上面的行开始读取\rowcolor 是为每一行指定的，更重要的是，多行必须具有相同的颜色，这样才能获得所需的结果。关于颜色的最后一个注意事项是，要更改列的颜色，需要创建新的列类型并定义颜色。下面的示例说明了如何定义新的列颜色。\newcolumntype{g}{>{\columncolor{darkblue}}l} 我们把它分解一下：\newcolumntype{g}：将字母 g 定义为新列{>{\columncolor{darkblue}}l}：在这里我们选择我们想要的颜色，并且 l 告诉列左对齐，这可以用 c 或 r 代替。\begin{tabular}{g|l} \textsc{Release} &\textsc{Codename} \\ \hline Fedora Core 4 &Stentz \\ &Fedora 8 \\ \multirow{-2}{*}{Multi-Row} &Werewolf \\ \end{tabular}\ 横向表有时，你的表可能有许多列，纵向排列会很不好看。在导言区加入 rotating 包，你将能够创建一个横向表。下面的例子说明了这一点。对于横向表，我们将使用 sidewaystable 环境并在其中添加表格环境，我们还指定了其他选项。\centering 可以将表格放置在页面中心\caption{} 为表命名\label{} 这使我们能够引用文档中的表\begin{sidewaystable} \centering \caption{Sideways Table} \label{sidetable} \begin{tabular}{ll} \rowcolor{darkblue}\textsc{\color{white}Release} &\textsc{\color{white}Codename} \\ \rowcolor{gray!10}Fedora Core 4 &Stentz \\ \rowcolor{gray!40} &Fedora 8 \\ \rowcolor{gray!40}\multirow{-2}{*}{Multi-Row} &Werewolf \\ \end{tabular}\vspace{3mm} \end{sidewaystable} 列表和表格要将列表包含到表中，可以使用 tabularx，并将列表包含在指定的列中。另一个办法是使用表格格式，但必须指定列宽。用 tabularx 处理列表\begin{tabularx}{\textwidth}{|l|X|} \hline Fedora Version &Editions \\ \hline Fedora 32 &\begin{itemize}[noitemsep] \item CoreOS \item Silverblue \item IoT \end{itemize} \\ \hline \end{tabularx}\vspace{3mm} 用 tabular 处理列表\begin{tabular}{|l|m{6cm}|}\hline Fedora Version &amp;amp;Editions \\\ \hline Fedora 32 &amp;amp;\begin{itemize}[noitemsep] \item CoreOS \item Silverblue \item IoT \end{itemize} \\\ \hline \end{tabular} 总结LaTeX 提供了许多使用 tablar 和 tablarx 自定义表的方法，你还可以在表环境 （\begin\table） 中添加 tablar 和 tablarx 来添加表的名称和定位表。LaTeX 宏包所需的宏包有如下这些：\usepackage{fullpage} \usepackage{blindtext} % add demo text \usepackage{array} % used for column positions \usepackage{tabularx} % adds tabularx which is used for text wrapping \usepackage{multirow} % multi-row and multi-colour support \usepackage[table]{xcolor} % add colour to the columns \usepackage{rotating} % for landscape/sideways tables 额外的知识这是一堂关于表的小课，有关表和 LaTex 的更多高级信息，请访问 LaTex Wikivia: https://fedoramagazine.org/latex-typesetting-part-2-tables/作者：Earl Ramirez 选题：lujun9972 译者：Chao-zhi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
LaTeX 是一个服务于高质量排版的文档准备系统。通常用于大量的技术和科学文档的排版。不过，你也可以使用 LaTex 排版各种形式的文档。教师可以编辑他们的考试和教学大纲，学生可以展示他们的论文和报告。这篇文章让你尝试使用 TeXstudio。TeXstudio 是一个便于编辑 LaTeX 文档的软件。启动 TeXstudio如果你使用的是 Fedora Workstation，请启动软件管理，然后输入 TeXstudio 以搜索该应用程序。然后选择安装并添加 TeXstudio 到你的系统。你可以从软件管理中启动这个程序，或者像以往一样在概览中启动这个软件。或者，如果你使用终端，请输入 texstudio。如果未安装该软件包，系统将提示你安装它。键入 y 开始安装。$ texstudio bash: texstudio: command not found... Install package 'texstudio' to provide command 'texstudio'? [N/y] y 你的第一份文档LaTeX 命令通常以反斜杠 \ 开头，命令参数用大括号 {} 括起来。首先声明 documentclass 的类型。这个例子向你展示了该文档的类是一篇文章。然后，在声明 documentclass 之后，用 begin 和 end 标记文档的开始和结束。在这些命令之间，写一段类似以下的内容：\documentclass{article} \begin{document} The Fedora Project is a project sponsored by Red Hat primarily to co-ordinate the development of the Linux-based Fedora operating system, operating with the vision that the project "creates a world where free culture is welcoming and widespread, collaboration is commonplace, and people control their content and devices". The Fedora Project was founded on 22 September 2003 when Red Hat decided to split Red Hat Linux into Red Hat Enterprise Linux (RHEL) and a community-based operating system, Fedora. \end{document} 使用间距要创建段落分隔符，请在文本之间保留一个或多个换行符。下面是一个包含四个段落的示例：从该示例中可以看出，多个换行符不会在段落之间创建额外的空格。但是，如果你确实需要留出额外的空间，请使用 hspace 和 vspace 命令。这两个命令分别添加水平和垂直空间。下面是一些示例代码，显示了段落周围的附加间距：\documentclass{article} \begin{document} \hspace{2.5cm} The four essential freedoms \vspace{0.6cm} A program is free software if the program's users have the 4 essential freedoms: The freedom to run the program as you wish, for any purpose (freedom 0).\vspace{0.2cm} The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.\vspace{0.2cm} The freedom to redistribute copies so you can help your neighbour (freedom 2).\vspace{0.2cm} The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this. \end{document} 如果需要，你也可以使用 noindent 命令来避免缩进。这里是上面 LaTeX 源码的结果：使用列表和格式如果把自由软件的四大基本自由列为一个清单，这个例子看起来会更好。通过在列表的开头使用\begin{itemize}，在末尾使用 \end{itemize} 来设置列表结构。在每个项目前面加上 \item 命令。额外的格式也有助于使文本更具可读性。用于格式化的有用命令包括粗体、斜体、下划线、超大、大、小和 textsc 以帮助强调文本：\documentclass{article} \begin{document} \hspace{2cm} {\huge The four essential freedoms} \vspace{0.6cm} \noindent {\large A program is free software if the program's users have the 4 essential freedoms}: \begin{itemize} \item \vspace{0.2cm} \noindent \textbf{The freedom to run} the program as you wish, for any purpose \textit{(freedom 0)}. \vspace{0.2cm} \item \noindent \textbf{The freedom to study} how the program works, and change it so it does your computing as you wish \textit{(freedom 1)}. Access to the source code is a precondition for this.\vspace{0.2cm} \item \noindent \textbf{The freedom to redistribute} copies so you can help your neighbour \textit{(freedom 2)}.\vspace{0.2cm} \item \noindent \textbf{The freedom to distribute copies of your modified versions} to others \textit{(freedom 3)}. \tiny{By doing this you can give the whole community a chance to benefit from your changes.\underline{\textsc{ Access to the source code is a precondition for this.}}} \end{itemize} \end{document} 添加列、图像和链接列、图像和链接有助于为文本添加更多信息。LaTeX 包含一些高级功能的函数作为宏包。\usepackage 命令加载宏包以便你可以使用这些功能。例如，要使用图像，可以使用命令 \usepackage{graphicx}。或者，要设置列和链接，请分别使用 \usepackage{multicol} 和 \usepackage{hyperref}。\includegraphics 命令将图像内联放置在文档中。（为简单起见，请将图形文件包含在与 LaTeX 源文件相同的目录中。）下面是一个使用所有这些概念的示例。它还使用下载的两个 PNG 图片。试试你自己的图片，看看它们是如何工作的。\documentclass{article} \usepackage{graphicx} \usepackage{multicol} \usepackage{hyperref} \begin{document} \textbf{GNU} \vspace{1cm} GNU is a recursive acronym for "GNU's Not Unix!", chosen because GNU's design is Unix-like, but differs from Unix by being free software and containing no Unix code. Richard Stallman, the founder of the project, views GNU as a "technical means to a social end". Stallman has written about "the social aspects of software and how Free Software can create community and social justice." in his "Free Society" book. \vspace{1cm} \textbf{Some Projects} \begin{multicols}{2} Fedora \url{https://getfedora.org} \includegraphics[width=1cm]{fedora.png} GNOME \url{https://getfedora.org} \includegraphics[width=1cm]{gnome.png} \end{multicols} \end{document} 这里的功能只触及 LaTeX 功能的表面。你可以在该项目的帮助和文档站点了解更多关于它们的信息。via: https://fedoramagazine.org/typeset-latex-texstudio-fedora/作者：Julita Inca Chiroque 选题：Chao-zhi 译者：Chao-zhi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
本系列基于前文《在 Fedora 上用 LaTex 和 TeXstudio 排版你的文档》和《LaTeX 基础》，本文即系列的第一部分，是关于 LaTeX 列表的。列表类型LaTeX 中的列表是封闭的环境，列表中的每个项目可以取一行文字到一个完整的段落。在 LaTeX 中有三种列表类型：itemize： 无序列表 unordered list / 项目符号列表 bullet list enumerate： 有序列表 ordered list description： 描述列表 descriptive list 创建列表要创建一个列表，需要在每个项目前加上控制序列 \item，并在项目清单前后分别加上控制序列 \begin{<类型>} 和 \end{<类型>}（将其中的<类型>` 替换为将要使用的列表类型），如下例：itemize（无序列表）\begin{itemize} \item Fedora \item Fedora Spin \item Fedora Silverblue \end{itemize} enumerate（有序列表）\begin{enumerate} \item Fedora CoreOS \item Fedora Silverblue \item Fedora Spin \end{enumerate} description（描述列表）\begin{description} \item[Fedora 6] Code name Zod \item[Fedora 8] Code name Werewolf \end{description} 列表项目间距可以通过在导言区加入 \usepackage{enumitem} 来自定义默认的间距，宏包 enumitem 启用了选项 noitemsep 和控制序列 \itemsep，可以在列表中使用它们，如下例所示：使用选项 noitemsep将选项 noitemsep 封闭在方括号内，并同下文所示放在控制序列 \begin 之后，该选项将移除默认的间距。\begin{itemize}[noitemsep] \item Fedora \item Fedora Spin \item Fedora Silverblue \end{itemize} 使用控制序列 \itemsep控制序列 \itemsep 必须以一个数字作为后缀，用以表示列表项目之间应该有多少空间。\begin{itemize} \itemsep0.75pt \item Fedora Silverblue \item Fedora CoreOS \end{itemize} 嵌套列表LaTeX 最多最多支持四层嵌套列表，如下例：嵌套无序列表\begin{itemize}[noitemsep] \item Fedora Versions \begin{itemize} \item Fedora 8 \item Fedora 9 \begin{itemize} \item Werewolf \item Sulphur \begin{itemize} \item 2007-05-31 \item 2008-05-13 \end{itemize} \end{itemize} \end{itemize} \item Fedora Spin \item Fedora Silverblue \end{itemize} 嵌套有序列表\begin{enumerate}[noitemsep] \item Fedora Versions \begin{enumerate} \item Fedora 8 \item Fedora 9 \begin{enumerate} \item Werewolf \item Sulphur \begin{enumerate} \item 2007-05-31 \item 2008-05-13 \end{enumerate} \end{enumerate} \end{enumerate} \item Fedora Spin \item Fedora Silverblue \end{enumerate} 每种列表类型的列表样式名称enumerate（有序列表）itemize（无序列表）\alph* （小写字母）$\bullet$ （●）\Alph* （大写字母）$\cdot$ （•）\arabic* （阿拉伯数字）$\diamond$ （◇）\roman* （小写罗马数字）$\ast$ （✲）\Roman* （大写罗马数字）$\circ$ （○） $-$ （－）按嵌套深度划分的默认样式嵌套深度enumerate（有序列表）itemize（无序列表）1阿拉伯数字（●）2小写字母（－）3小写罗马数字（✲）4大写字母（•）设置列表样式下面的例子列举了无序列表的不同样式。% 无序列表样式 \begin{itemize} \item[$\ast$] Asterisk \item[$\diamond$] Diamond \item[$\circ$] Circle \item[$\cdot$] Period \item[$\bullet$] Bullet (default) \item[--] Dash \item[$-$] Another dash \end{itemize} 有三种设置列表样式的方式，下面将按照优先级从高到低的顺序分别举例。方式一：为各项目单独设置将需要的样式名称封闭在方括号内，并放在控制序列 \item 之后，如下例：% 方式一 \begin{itemize} \item[$\ast$] Asterisk \item[$\diamond$] Diamond \item[$\circ$] Circle \item[$\cdot$] period \item[$\bullet$] Bullet (default) \item[--] Dash \item[$-$] Another dash \end{itemize} 方式二：为整个列表设置将需要的样式名称以 label= 前缀并封闭在方括号内，放在控制序列 \begin 之后，如下例：% 方式二 \begin{enumerate}[label=\Alph*.] \item Fedora 32 \item Fedora 31 \item Fedora 30 \end{enumerate} 方式三：为整个文档设置该方式将改变整个文档的默认样式。使用 \renewcommand 来设置项目标签的值，下例分别为四个嵌套深度的项目标签设置了不同的样式。% 方式三 \renewcommand{\labelitemi}{$\ast$} \renewcommand{\labelitemii}{$\diamond$} \renewcommand{\labelitemiii}{$\bullet$} \renewcommand{\labelitemiv}{$-$} 总结LaTeX 支持三种列表，而每种列表的风格和间距都是可以自定义的。在以后的文章中，我们将解释更多的 LaTeX 元素。关于 LaTeX 列表的延伸阅读可以在这里找到：LaTeX List Structuresvia: https://fedoramagazine.org/latex-typesetting-part-1/作者：Earl Ramirez 选题：lujun9972 译者：rakino 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
这篇教程将带你遍历在 Emacs 使用强大的开源排版系统 LaTex 来创建文档的全过程。一篇由 Aaron Cocker 写的很棒的文章 “在 LaTeX 中创建文件的介绍” 中，介绍了 LaTeX 排版系统 并描述了如何使用 TeXstudio 来创建 LaTeX 文档。同时，他也列举了一些很多用户觉得创建 LaTeX 文档很方便的编辑器。Greg Pittman 对这篇文章的评论吸引了我：“当你第一次开始使用 LaTeX 时，他似乎是个很差劲的排版……” 事实也确实如此。LaTeX 包含了多种排版字体和调试，如果你漏了一个特殊的字符比如说感叹号，这会让很多用户感到沮丧，尤其是新手。在本文中，我将介绍如何使用 GNU Emacs 来创建 LaTeX 文档。创建你的第一个文档启动 Emacs：emacs -q --no-splash helloworld.org参数 -q 确保 Emacs 不会加载其他的初始化配置。参数 --no-splash-screen 防止 Emacs 打开多个窗口，确保只打开一个窗口，最后的参数 helloworld.org 表示你要创建的文件名为 helloworld.org 。GNU Emacs 打开文件名为 helloworld.org 的窗口时的样子。现在让我们用 Emacs 添加一些 LaTeX 的标题吧：在菜单栏找到 “Org” 选项并选择 “Export/Publish”。导入一个默认的模板在下一个窗口中，Emacs 同时提供了导入和导出一个模板。输入 #（“[#] Insert template”）来导入一个模板。这将会使光标跳转到一个带有 “Options category:” 提示的 mini-buffer 中。第一次你可能不知道这个类型的名字，但是你可以使用 Tab 键来查看所有的补全。输入 “default” 然后按回车，之后你就能看到如下的内容被插入了：#+TITLE: helloworld #+DATE: <2018-03-12 Mon> #+AUTHOR: #+EMAIL: makerpm@nubia #+OPTIONS: ':nil *:t -:t ::t <:t H:3 \n:nil ^:t arch:headline #+OPTIONS: author:t c:nil creator:comment d:(not "LOGBOOK") date:t #+OPTIONS: e:t email:nil f:t inline:t num:t p:nil pri:nil stat:t #+OPTIONS: tags:t tasks:t tex:t timestamp:t toc:t todo:t |:t #+CREATOR: Emacs 25.3.1 (Org mode 8.2.10) #+DESCRIPTION: #+EXCLUDE_TAGS: noexport #+KEYWORDS: #+LANGUAGE: en #+SELECT_TAGS: export根据自己的需求修改标题、日期、作者和 email。我自己的话是下面这样的：#+TITLE: Hello World! My first LaTeX document #+DATE: \today #+AUTHOR: Sachin Patil #+EMAIL: psachin@redhat.com我们目前还不想创建一个目录，所以要将 toc 的值由 t 改为 nil，具体如下：#+OPTIONS: tags:t tasks:t tex:t timestamp:t toc:nil todo:t |:t现在让我们添加一个章节和段落吧。章节是由一个星号（*）开头。我们从 Aaron 的贴子（来自 Lipsum Lorem Ipsum 生成器）复制一些文本过来：* Introduction \paragraph{} Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras lorem nisi, tincidunt tempus sem nec, elementum feugiat ipsum. Nulla in diam libero. Nunc tristique ex a nibh egestas sollicitudin. \paragraph{} Mauris efficitur vitae ex id egestas. Vestibulum ligula felis, pulvinar a posuere id, luctus vitae leo. Sed ac imperdiet orci, non elementum leo. Nullam molestie congue placerat. Phasellus tempor et libero maximus commodo.helloworld.org 文件将内容修改好后，我们要把它导出为 PDF 格式。再次在 “Org” 的菜单选项中选择 “Export/Publish”，但是这次，要输入 l（“export to LaTeX”），紧跟着输入 o（“as PDF file and open”）。这次操作不止会打开 PDF 文件让你浏览，同时也会将文件保存为 helloworld.pdf，并保存在与 helloworld.org 的同一个目录下。将 helloworld.org 导出为 helloworld.pdf打开 helloworld.pdf 文件你也可以按下 Alt + x 键，然后输入 org-latex-export-to-pdf 来将 org 文件导出为 PDF 文件。可以使用 Tab 键来自动补全命令。Emacs 也会创建 helloworld.tex 文件来让你控制具体的内容。Emacs 在三个不同的窗口中分别打开 LaTeX，org 和 PDF 文档。你可以使用命令来将 .tex 文件转换为 .pdf 文件：pdflatex helloworld.tex你也可以将 .org 文件输出为 HTML 或是一个简单的文本格式的文件。我最喜欢 .org 文件的原因是他们可以被推送到 GitHub 上，然后同 markdown 一样被渲染。创建一个 LaTeX 的 Beamer 简报现在让我们更进一步，通过少量的修改上面的文档来创建一个 LaTeX Beamer 简报，如下所示：#+TITLE: LaTeX Beamer presentation #+DATE: \today #+AUTHOR: Sachin Patil #+EMAIL: psachin@redhat.com #+OPTIONS: ':nil *:t -:t ::t <:t H:3 \n:nil ^:t arch:headline #+OPTIONS: author:t c:nil creator:comment d:(not "LOGBOOK") date:t #+OPTIONS: e:t email:nil f:t inline:t num:t p:nil pri:nil stat:t #+OPTIONS: tags:t tasks:t tex:t timestamp:t toc:nil todo:t |:t #+CREATOR: Emacs 25.3.1 (Org mode 8.2.10) #+DESCRIPTION: #+EXCLUDE_TAGS: noexport #+KEYWORDS: #+LANGUAGE: en #+SELECT_TAGS: export #+LATEX_CLASS: beamer #+BEAMER_THEME: Frankfurt #+BEAMER_INNER_THEME: rounded * Introduction *** Programming - Python - Ruby *** Paragraph one Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras lorem nisi, tincidunt tempus sem nec, elementum feugiat ipsum. Nulla in diam libero. Nunc tristique ex a nibh egestas sollicitudin. *** Paragraph two Mauris efficitur vitae ex id egestas. Vestibulum ligula felis, pulvinar a posuere id, luctus vitae leo. Sed ac imperdiet orci, non elementum leo. Nullam molestie congue placerat. Phasellus tempor et libero maximus commodo. * Thanks *** Links - Link one - Link two我们给标题增加了三行：#+LATEX_CLASS: beamer #+BEAMER_THEME: Frankfurt #+BEAMER_INNER_THEME: rounded导出为 PDF，按下 Alt + x 键后输入 org-beamer-export-to-pdf。用 Emacs 和 Org 模式创建的 Latex Beamer 简报希望你会爱上使用 Emacs 来创建 LaTex 和 Beamer 文档（注意：使用快捷键比用鼠标更快些）。Emacs 的 Org 模式提供了比我在这篇文章中说的更多的功能，你可以在 orgmode.org 获取更多的信息.via: https://opensource.com/article/18/4/how-create-latex-documents-emacs作者：Sachin Patil 选题：lujun9972 译者：oneforalone 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
这篇指南介绍如何使用 Pandoc 将文档转换为多种不同的格式。Pandoc 是一个命令行工具，用于将文件从一种标记语言转换为另一种标记语言。标记语言使用标签来标记文档的各个部分。常用的标记语言包括 Markdown、ReStructuredText、HTML、LaTex、ePub 和 Microsoft Word DOCX。简单来说，Pandoc 允许你将一些文件从一种标记语言转换为另一种标记语言。典型的例子包括将 Markdown 文件转换为演示文稿、LaTeX，PDF 甚至是 ePub。本文将解释如何使用 Pandoc 从单一标记语言（在本文中为 Markdown）生成多种格式的文档，引导你完成从 Pandoc 安装，到展示如何创建多种类型的文档，再到提供有关如何编写易于移植到其他格式的文档的提示。文中还将解释使用元信息文件对文档内容和元信息（例如，作者姓名、使用的模板、书目样式等）进行分离的意义。Pandoc 安装和要求Pandoc 默认安装在大多数 Linux 发行版中。本教程使用 pandoc-2.2.3.2 和 pandoc-citeproc-0.14.3。如果不打算生成 PDF，那么这两个包就足够了。但是，我建议也安装 texlive，这样就可以选择生成 PDF 了。通过以下命令在 Linux 上安装这些程序：sudo apt-get install pandoc pandoc-citeproc texlive您可以在 Pandoc 的网站上找到其他平台的 安装说明。我强烈建议安装 pandoc-crossref，这是一个“用于对图表，方程式，表格和交叉引用进行编号的过滤器”。最简单的安装方式是下载 预构建的可执行文件，但也可以通过以下命令从 Haskell 的软件包管理器 cabal 安装它：cabal update cabal install pandoc-crossref如果需要额外的 Haskell 安装信息，请参考 pandoc-crossref 的 GitHub 仓库。几个例子我将通过解释如何生成三种类型的文档来演示 Pandoc 的工作原理：由包含数学公式的 LaTeX 文件创建的网页由 Markdown 文件生成的 Reveal.js 幻灯片混合 Markdown 和 LaTeX 的合同文件创建一个包含数学公式的网站Pandoc 的优势之一是以不同的输出文件格式显示数学公式。例如，我们可以从包含一些数学符号（用 LaTeX 编写）的 LaTeX 文档（名为 math.tex）生成一个网页。math.tex 文档如下所示：% Pandoc math demos $a^2 + b^2 = c^2$ $v(t) = v_0 + \frac{1}{2}at^2$ $\gamma = \frac{1}{\sqrt{1 - v^2/c^2}}$ $\exists x \forall y (Rxy \equiv Ryx)$ $p \wedge q \models p$ $\Box\diamond p\equiv\diamond p$ $\int_{0}^{1} x dx = \left[ \frac{1}{2}x^2 \right]_{0}^{1} = \frac{1}{2}$ $e^x = \sum_{n=0}^\infty \frac{x^n}{n!} = \lim_{n\rightarrow\infty} (1+x/n)^n$通过输入以下命令将 LaTeX 文档转换为名为 mathMathML.html 的网站：pandoc math.tex -s --mathml -o mathMathML.html参数 -s 告诉 Pandoc 生成一个独立的网页（而不是网页片段，因此它将包括 HTML 中的 head 和 body 标签），-mathml 参数强制 Pandoc 将 LaTeX 中的数学公式转换成 MathML，从而可以由现代浏览器进行渲染。看一下 网页效果 和 代码，代码仓库中的 Makefile 使得运行更加简单。制作一个 Reveal.js 幻灯片使用 Pandoc 从 Markdown 文件生成简单的演示文稿很容易。幻灯片包含顶级幻灯片和下面的嵌套幻灯片。可以通过键盘控制演示文稿，从一个顶级幻灯片跳转到下一个顶级幻灯片，或者显示顶级幻灯片下面的嵌套幻灯片。 这种结构在基于 HTML 的演示文稿框架中很常见。创建一个名为 SLIDES 的幻灯片文档（参见 代码仓库）。首先，在 ％ 后面添加幻灯片的元信息（例如，标题、作者和日期）：% Case Study % Kiko Fernandez Reyes % Sept 27, 2017这些元信息同时也创建了第一张幻灯片。要添加更多幻灯片，使用 Markdown 的一级标题（在下面例子中的第5行，参考 Markdown 的一级标题 ）生成顶级幻灯片。例如，可以通过以下命令创建一个标题为 “Case Study”、顶级幻灯片名为 “Wine Management System” 的演示文稿：% Case Study % Kiko Fernandez Reyes % Sept 27, 2017 # Wine Management System使用 Markdown 的二级标题将内容（比如包含一个新管理系统的说明和实现的幻灯片）放入刚刚创建的顶级幻灯片。下面添加另外两张幻灯片（在下面例子中的第 7 行和 14 行 ，参考 Markdown 的二级标题 ）。第一个二级幻灯片的标题为 “Idea”，并显示瑞士国旗的图像第二个二级幻灯片的标题为 “Implementation”% Case Study % Kiko Fernandez Reyes % Sept 27, 2017 # Wine Management System ## Idea ## Implementation我们现在有一个顶级幻灯片（＃Wine Management System），其中包含两张幻灯片（## Idea 和 ## Implementation）。通过创建一个由符号 > 开头的 Markdown 列表，在这两张幻灯片中添加一些内容。在上面代码的基础上，在第一张幻灯片中添加两个项目（第 9-10 行），第二张幻灯片中添加五个项目（第 16-20 行）：% Case Study % Kiko Fernandez Reyes % Sept 27, 2017 # Wine Management System ## Idea >- Swiss love their **wine** and cheese >- Create a *simple* wine tracker system ![](img/matterhorn.jpg) ## Implementation >- Bottles have a RFID tag >- RFID reader (emits and read signal) >- **Raspberry Pi** >- **Server (online shop)** >- Mobile app上面的代码添加了马特洪峰的图像，也可以使用纯 Markdown 语法或添加 HTML 标签来改进幻灯片。要生成幻灯片，Pandoc 需要引用 Reveal.js 库，因此它必须与 SLIDES 文件位于同一文件夹中。生成幻灯片的命令如下所示：pandoc -t revealjs -s --self-contained SLIDES \ -V theme=white -V slideNumber=true -o index.html上面的 Pandoc 命令使用了以下参数：-t revealjs 表示将输出一个 revealjs 演示文稿-s 告诉 Pandoc 生成一个独立的文档--self-contained 生成没有外部依赖关系的 HTML 文件-V 设置以下变量：theme=white 将幻灯片的主题设为白色slideNumber=true 显示幻灯片编号-o index.html 在名为 index.html 的文件中生成幻灯片为了简化操作并避免键入如此长的命令，创建以下 Makefile：all: generate generate: pandoc -t revealjs -s --self-contained SLIDES \ -V theme=white -V slideNumber=true -o index.html clean: index.html rm index.html .PHONY: all clean generate可以在 这个仓库 中找到所有代码。制作一份多种格式的合同假设你正在准备一份文件，并且（这样的情况现在很常见）有些人想用 Microsoft Word 格式，其他人使用自由软件，想要 ODT 格式，而另外一些人则需要 PDF。你不必使用 OpenOffice 或 LibreOffice 来生成 DOCX 或 PDF 格式的文件，可以用 Markdown 创建一份文档（如果需要高级格式，可以使用一些 LaTeX 语法），并生成任何这些文件类型。和以前一样，首先声明文档的元信息（标题、作者和日期）：% Contract Agreement for Software X % Kiko Fernandez-Reyes % August 28th, 2018然后在 Markdown 中编写文档（如果需要高级格式，则添加 LaTeX）。例如，创建一个固定间隔的表格（在 LaTeX 中用 \hspace{3cm} 声明）以及客户端和承包商应填写的行（在 LaTeX 中用 \hrulefill 声明）。之后，添加一个用 Markdown 编写的表格。创建的文档如下所示：创建此文档的代码如下：% Contract Agreement for Software X % Kiko Fernandez-Reyes % August 28th, 2018 ... ### Work Order \begin{table}[h] \begin{tabular}{ccc} The Contractor & \hspace{3cm} & The Customer \\ & & \\ & & \\ \hrulefill & \hspace{3cm} & \hrulefill \\ % Name & \hspace{3cm} & Name \\ & & \\ & & \\ \hrulefill & \hspace{3cm} & \hrulefill \\ ... \end{tabular} \end{table} \vspace{1cm} +--------------------------------------------|----------|-------------+ | Type of Service | Cost | Total | +:===========================================+=========:+:===========:+ | Game Engine | 70.0 | 70.0 | | | | | +--------------------------------------------|----------|-------------+ | | | | +--------------------------------------------|----------|-------------+ | Extra: Comply with defined API functions | 10.0 | 10.0 | | and expected returned format | | | +--------------------------------------------|----------|-------------+ | | | | +--------------------------------------------|----------|-------------+ | **Total Cost** | | **80.0** | +--------------------------------------------|----------|-------------+要生成此文档所需的三种不同输出格式，编写如下的 Makefile：DOCS=contract-agreement.md all: $(DOCS) pandoc -s $(DOCS) -o $(DOCS:md=pdf) pandoc -s $(DOCS) -o $(DOCS:md=docx) pandoc -s $(DOCS) -o $(DOCS:md=odt) clean: rm *.pdf *.docx *.odt .PHONY: all clean4 到 7 行是生成三种不同输出格式的具体命令：如果有多个 Markdown 文件并想将它们合并到一个文档中，需要按照希望它们出现的顺序编写命令。例如，在撰写本文时，我创建了三个文档：一个介绍文档、三个示例和一些高级用法。以下命令告诉 Pandoc 按指定的顺序将这些文件合并在一起，并生成一个名为 document.pdf 的 PDF 文件。pandoc -s introduction.md examples.md advanced-uses.md -o document.pdf模板和元信息编写复杂的文档并非易事，你需要遵循一系列独立于内容的规则，例如使用特定的模板、编写摘要、嵌入特定字体，甚至可能要声明关键字。所有这些都与内容无关：简单地说，它就是元信息。Pandoc 使用模板生成不同的输出格式。例如，有一个 LaTeX 的模板，还有一个 ePub 的模板，等等。这些模板的元信息中有未赋值的变量。使用以下命令找出 Pandoc 模板中可用的元信息：pandoc -D FORMAT例如，LaTex 的模版是：pandoc -D latex按照以下格式输出：$if(title)$ \title{$title$$if(thanks)$\thanks{$thanks$}$endif$} $endif$ $if(subtitle)$ \providecommand{\subtitle}[1]{} \subtitle{$subtitle$} $endif$ $if(author)$ \author{$for(author)$$author$$sep$ \and $endfor$} $endif$ $if(institute)$ \providecommand{\institute}[1]{} \institute{$for(institute)$$institute$$sep$ \and $endfor$} $endif$ \date{$date$} $if(beamer)$ $if(titlegraphic)$ \titlegraphic{\includegraphics{$titlegraphic$}} $endif$ $if(logo)$ \logo{\includegraphics{$logo$}} $endif$ $endif$ \begin{document}如你所见，输出的内容中有标题、致谢、作者、副标题和机构模板变量（还有许多其他可用的变量）。可以使用 YAML 元区块轻松设置这些内容。 在下面例子的第 1-5 行中，我们声明了一个 YAML 元区块并设置了一些变量（使用上面合同协议的例子）：--- title: Contract Agreement for Software X author: Kiko Fernandez-Reyes date: August 28th, 2018 --- (continue writing document as in the previous example)这样做非常奏效，相当于以前的代码：% Contract Agreement for Software X % Kiko Fernandez-Reyes % August 28th, 2018然而，这样做将元信息与内容联系起来，也即 Pandoc 将始终使用此信息以新格式输出文件。如果你将要生成多种文件格式，最好要小心一点。例如，如果你需要以 ePub 和 HTML 的格式生成合同，并且 ePub 和 HTML 需要不同的样式规则，该怎么办？考虑一下这些情况：如果你只是尝试嵌入 YAML 变量 css:style-epub.css，那么将从 HTML 版本中移除该变量。这不起作用。复制文档显然也不是一个好的解决方案，因为一个版本的更改不会与另一个版本同步。你也可以像下面这样将变量添加到 Pandoc 命令中：pandoc -s -V css=style-epub.css document.md document.epub pandoc -s -V css=style-html.css document.md document.html我的观点是，这样做很容易从命令行忽略这些变量，特别是当你需要设置数十个变量时（这可能出现在编写复杂文档的情况中）。现在，如果将它们放在同一文件中（meta.yaml 文件），则只需更新或创建新的元信息文件即可生成所需的输出格式。然后你会编写这样的命令：pandoc -s meta-pub.yaml document.md document.epub pandoc -s meta-html.yaml document.md document.html这是一个更简洁的版本，你可以从单个文件更新所有元信息，而无需更新文档的内容。结语通过以上的基本示例，我展示了 Pandoc 在将 Markdown 文档转换为其他格式方面是多么出色。via: https://opensource.com/article/18/9/intro-pandoc作者：Kiko Fernandez-Reyes 选题：lujun9972 译者：jlztan 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
学习如何用 Markdown 管理章节引用、图像、表格以及更多。这篇文章对于使用 Markdown 语法做一篇调研论文进行了一个深度体验。覆盖了如何创建和引用章节、图像（用 Markdown 和 LaTeX）和参考书目。我们也讨论了一些棘手的案例和为什么使用 LaTex 是一个正确的做法。调研调研论文一般包括对章节、图像、表格和参考书目的引用。Pandoc 本身并不能交叉引用这些，但是它能够利用 pandoc-crossref 过滤器来完成自动编号和章节、图像、表格的交叉引用。让我们从重写原本以 LaTax 撰写的 一个教育调研报告的例子 开始，然后用 Markdown（和一些 LaTax）、Pandoc 和 Pandoc-crossref 重写。添加并引用章节要想章节被自动编号，必须使用 Markdown H1 标题编写。子章节使用 H2-H4 子标题编写（通常不需要更多级别了）。例如一个章节的标题是 “Implementation”，写作 # Implementation {#sec: implementation}，然后 Pandoc 会把它转化为 3. Implementation（或者转换为相应的章节编号）。Implementation 这个标题使用了 H1 并且声明了一个 {#sec: implementation} 的标签，这是作者用于引用该章节的标签。要想引用一个章节，输入 @ 符号并跟上对应章节标签，使用方括号括起来即可： [@ sec:implementation]在这篇论文中, 我们发现了下面这个例子：we lack experience (consistency between TAs, [@sec:implementation]).Pandoc 转换：we lack experience (consistency between TAs, Section 4).章节被自动编号（这在本文最后的 Makefile 当中说明）。要创建无编号的章节，输入章节的标题并在最后添加 {-}。例如：### Designing a game for maintainability {-} 就以标题 “Designing a game for maintainability”，创建了一个无标号的章节。添加并引用图像添加并引用一个图像，跟添加并引用一个章节和添加一个 Markdown 图片很相似：![Scatterplot matrix](data/scatterplots/RScatterplotMatrix2.png){#fig:scatter-matrix}上面这一行是告诉 Pandoc，有一个标有 Scatterplot matrix 的图像以及这张图片路径是 data/scatterplots/RScatterplotMatrix2.png。{#fig:scatter-matrix} 表明了用于引用该图像的名字。这里是从一篇论文中进行图像引用的例子：The boxes "Enjoy", "Grade" and "Motivation" ([@fig:scatter-matrix]) ...Pandoc 产生如下输出：The boxes "Enjoy", "Grade" and "Motivation" (Fig. 1) ...添加及引用参考书目大多数调研报告都把引用放在一个 BibTeX 的数据库文件中。在这个例子中，该文件被命名为 biblio.bib，它包含了论文中所有的引用。下面是这个文件的样子：@inproceedings{wrigstad2017mastery, Author = {Wrigstad, Tobias and Castegren, Elias}, Booktitle = {SPLASH-E}, Title = {Mastery Learning-Like Teaching with Achievements}, Year = 2017 } @inproceedings{review-gamification-framework, Author = {A. Mora and D. Riera and C. Gonzalez and J. Arnedo-Moreno}, Publisher = {IEEE}, Booktitle = {2015 7th International Conference on Games and Virtual Worlds for Serious Applications (VS-Games)}, Doi = {10.1109/VS-GAMES.2015.7295760}, Keywords = {formal specification;serious games (computing);design framework;formal design process;game components;game design elements;gamification design frameworks;gamification-based solutions;Bibliographies;Context;Design methodology;Ethics;Games;Proposals}, Month = {Sept}, Pages = {1-8}, Title = {A Literature Review of Gamification Design Frameworks}, Year = 2015, Bdsk-Url-1 = {http://dx.doi.org/10.1109/VS-GAMES.2015.7295760} } ...第一行的 @inproceedings{wrigstad2017mastery, 表明了出版物 的类型（inproceedings），以及用来指向那篇论文的标签（wrigstad2017mastery）。引用这篇题为 “Mastery Learning-Like Teaching with Achievements” 的论文, 输入：the achievement-driven learning methodology [@wrigstad2017mastery]Pandoc 将会输出：the achievement- driven learning methodology [30]这篇论文将会产生像下面这样被标号的参考书目：引用文章的集合也很容易：只要引用使用分号 ; 分隔开被标记的参考文献就可以了。如果一个引用有两个标签 —— 例如： SEABORN201514 和 gamification-leaderboard-benefits—— 像下面这样把它们放在一起引用：Thus, the most important benefit is its potential to increase students' motivation and engagement [@SEABORN201514;@gamification-leaderboard-benefits].Pandoc 将会产生：Thus, the most important benefit is its potential to increase students’ motivation and engagement [26, 28]问题案例一个常见的问题是所需项目与页面不匹配。不匹配的部分会自动移动到它们认为合适的地方，即便这些位置并不是读者期望看到的位置。因此在图像或者表格接近于它们被提及的地方时，我们需要调节一下那些元素放置的位置，使得它们更加易于阅读。为了达到这个效果，我建议使用 figure 这个 LaTeX 环境参数，它可以让用户控制图像的位置。我们看一个上面提到的图像的例子：![Scatterplot matrix](data/scatterplots/RScatterplotMatrix2.png){#fig:scatter-matrix}然后使用 LaTeX 重写：\begin{figure}[t] \includegraphics{data/scatterplots/RScatterplotMatrix2.png} \caption{\label{fig:matrix}Scatterplot matrix} \end{figure}在 LaTeX 中，figure 环境参数中的 [t] 选项表示这张图用该位于该页的最顶部。有关更多选项，参阅 LaTex/Floats, Figures, and Captions 这篇 Wikibooks 的文章。产生一篇论文到目前为止，我们讲了如何添加和引用（子）章节、图像和参考书目，现在让我们重温一下如何生成一篇 PDF 格式的论文。要生成 PDF，我们将使用 Pandoc 生成一篇可以被构建成最终 PDF 的 LaTeX 文件。我们还会讨论如何以 LaTeX，使用一套自定义的模板和元信息文件生成一篇调研论文，以及如何将 LaTeX 文档编译为最终的 PDF 格式。很多会议都提供了一个 .cls 文件或者一套论文应有样式的模板；例如，它们是否应该使用两列的格式以及其它的设计风格。在我们的例子中，会议提供了一个名为 acmart.cls 的文件。作者通常想要在他们的论文中包含他们所属的机构，然而，这个选项并没有包含在默认的 Pandoc 的 LaTeX 模板（注意，可以通过输入 pandoc -D latex 来查看 Pandoc 模板）当中。要包含这个内容，找一个 Pandoc 默认的 LaTeX 模板，并添加一些新的内容。将这个模板像下面这样复制进一个名为 mytemplate.tex 的文件中：pandoc -D latex > mytemplate.tex默认的模板包含以下代码：$if(author)$ \author{$for(author)$$author$$sep$ \and $endfor$} $endif$ $if(institute)$ \providecommand{\institute}[1]{} \institute{$for(institute)$$institute$$sep$ \and $endfor$} $endif$因为这个模板应该包含作者的联系方式和电子邮件地址，在其他一些选项之间，我们更新这个模板以添加以下内容（我们还做了一些其他的更改，但是因为文件的长度，就没有包含在此处）：latex $for(author)$ $if(author.name)$ \author{$author.name$} $if(author.affiliation)$ \affiliation{\institution{$author.affiliation$}} $endif$ $if(author.email)$ \email{$author.email$} $endif$ $else$ $author$ $endif$ $endfor$要让这些更改起作用，我们还应该有下面的文件：main.md 包含调研论文biblio.bib 包含参考书目数据库acmart.cls 我们使用的文档的集合mytemplate.tex 是我们使用的模板文件（代替默认的）让我们添加论文的元信息到一个 meta.yaml 文件：--- template: 'mytemplate.tex' documentclass: acmart classoption: sigconf title: The impact of opt-in gamification on `\\`{=latex} students' grades in a software design course author: - name: Kiko Fernandez-Reyes affiliation: Uppsala University email: kiko.fernandez@it.uu.se - name: Dave Clarke affiliation: Uppsala University email: dave.clarke@it.uu.se - name: Janina Hornbach affiliation: Uppsala University email: janina.hornbach@fek.uu.se bibliography: biblio.bib abstract: | An achievement-driven methodology strives to give students more control over their learning with enough flexibility to engage them in deeper learning. (more stuff continues) include-before: | \` ``{=latex} \copyrightyear{2018} \acmYear{2018} \setcopyright{acmlicensed} \acmConference[MODELS '18 Companion]{ACM/IEEE 21th International Conference on Model Driven Engineering Languages and Systems}{October 14--19, 2018}{Copenhagen, Denmark} \acmBooktitle{ACM/IEEE 21th International Conference on Model Driven Engineering Languages and Systems (MODELS '18 Companion), October 14--19, 2018, Copenhagen, Denmark} \acmPrice{XX.XX} \acmDOI{10.1145/3270112.3270118} \acmISBN{978-1-4503-5965-8/18/10} \begin{CCSXML} <ccs2012> <concept> <concept_id>10010405.10010489</concept_id> <concept_desc>Applied computing~Education</concept_desc> <concept_significance>500</concept_significance> </concept> </ccs2012> \end{CCSXML} \ccsdesc[500]{Applied computing~Education} \keywords{gamification, education, software design, UML} \` `` figPrefix: - "Fig." - "Figs." secPrefix: - "Section" - "Sections" ...这个元信息文件使用 LaTeX 设置下列参数：template 指向使用的模板（mytemplate.tex）documentclass 指向使用的 LaTeX 文档集合（acmart）classoption 是在 sigconf 的案例中，指向这个类的选项title 指定论文的标题author 是一个包含例如 name、affiliation 和 email 的地方bibliography 指向包含参考书目的文件（biblio.bib）abstract 包含论文的摘要include-before 是这篇论文的具体内容之前应该被包含的信息；在 LaTeX 中被称为 前言。我在这里包含它去展示如何产生一篇计算机科学的论文，但是你可以选择跳过figPrefix 指向如何引用文档中的图像，例如：当引用图像的 [@fig:scatter-matrix] 时应该显示什么。例如，当前的 figPrefix 在这个例子 The boxes "Enjoy", "Grade" and "Motivation" ([@fig:scatter-matrix])中，产生了这样的输出：The boxes "Enjoy", "Grade" and "Motivation" (Fig. 3)。如果这里有很多图像，目前的设置表明它应该在图像号码旁边显示 Figs.secPrefix 指定如何引用文档中其他地方提到的部分（类似之前的图像和概览）现在已经设置好了元信息，让我们来创建一个 Makefile，它会产生你想要的输出。Makefile 使用 Pandoc 产生 LaTeX 文件，pandoc-crossref 产生交叉引用，pdflatex 构建 LaTeX 为 PDF，bibtex 处理引用。Makefile 已经展示如下：all: paper paper: @pandoc -s -F pandoc-crossref --natbib meta.yaml --template=mytemplate.tex -N \ -f markdown -t latex+raw_tex+tex_math_dollars+citations -o main.tex main.md @pdflatex main.tex &> /dev/null @bibtex main &> /dev/null @pdflatex main.tex &> /dev/null @pdflatex main.tex &> /dev/null clean: rm main.aux main.tex main.log main.bbl main.blg main.out .PHONY: all clean paperPandoc 使用下面的标记：-s 创建一个独立的 LaTeX 文档-F pandoc-crossref 利用 pandoc-crossref 进行过滤--natbib 用 natbib （你也可以选择 --biblatex）对参考书目进行渲染--template 设置使用的模板文件-N 为章节的标题编号-f 和 -t 指定从哪个格式转换到哪个格式。-t 通常包含格式和 Pandoc 使用的扩展。在这个例子中，我们标明的 raw_tex+tex_math_dollars+citations 允许在 Markdown 中使用 raw_tex LaTeX。 tex_math_dollars 让我们能够像在 LaTeX 中一样输入数学符号，citations 让我们可以使用 这个扩展。要从 LaTeX 产生 PDF，按 来自bibtex 的指导处理参考书目：@pdflatex main.tex &> /dev/null @bibtex main &> /dev/null @pdflatex main.tex &> /dev/null @pdflatex main.tex &> /dev/null脚本用 @ 忽略输出，并且重定向标准输出和错误到 /dev/null ，因此我们在使用这些命令的可执行文件时不会看到任何的输出。最终的结果展示如下。这篇文章的库可以在 GitHub 找到：结论在我看来，研究的重点是协作、思想的传播，以及在任何一个恰好存在的领域中改进现有的技术。许多计算机科学家和工程师使用 LaTeX 文档系统来写论文，它对数学提供了完美的支持。来自社会科学的研究人员似乎更喜欢 DOCX 文档。当身处不同社区的研究人员一同写一篇论文时，他们首先应该讨论一下他们将要使用哪种格式。然而如果包含太多的数学符号，DOCX 对于工程师来说不会是最简便的选择，LaTeX 对于缺乏编程经验的研究人员来说也有一些问题。就像这篇文章中展示的，Markdown 是一门工程师和社会科学家都很轻易能够使用的语言。via: https://opensource.com/article/18/9/pandoc-research-paper作者：Kiko Fernandez-Reyes 选题：lujun9972 译者：dianbanjiu 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
用这个漂亮的工具将方程式截图迅速转换为 LaTeX
Mathpix 是一个漂亮的小工具，它允许你截取复杂数学方程式的截图，并立即将其转换为 LaTeX 可编辑文本。LaTeX 编辑器在撰写学术和科学文献时非常出色。当然它还有一个陡峭的学习曲线。如果你不得不要写复杂的数学方程式，这种学习曲线会变得更加陡峭。Mathpix 是一个在这方面可以帮助你的小工具。假设你正在阅读带有数学方程式的文档。如果你想在 LaTeX 文档中使用这些方程，你需要使用你的 LaTeX 技能，并且得有充足的时间。但是 Mathpix 为您解决了这个问题。使用 Mathpix，你可以截取数学方程式的截图，它会立即为你提供 LaTeX 代码。然后，你可以在你最喜欢的 LaTeX 编辑器中使用此代码。请参阅该视频中的 Mathpix 使用方式。视频来源：Reddit 用户 kaitlinmcunningham不是超酷吗？我想编写 LaTeX 文档最困难的部分是那些复杂的方程式。对于像我这样懒人，Mathpix 是天赐之物。获取 MathpixMathpix 适用于 Linux、macOS、Windows 和 iOS。暂时还没有 Android 应用。注意：Mathpix 是一个免费使用的工具，但它不是开源的。在 Linux 上，Mathpix 有一个 Snap 包。这意味着如果你在 Linux 发行版上启用了 Snap 支持，你可以用这个简单命令安装 Mathpix：sudo snap install mathpix-snipping-tool使用 Mathpix 很简单。安装后，打开该工具。你会在顶部面板中找到它。你可以使用键盘快捷键 Ctrl+Alt+M 开始使用 Mathpix 截图。它会立即将方程图片转换为 LaTeX 代码。代码将被复制到剪贴板中，然后你可以将其粘贴到 LaTeX 编辑器中。Mathpix 的光学字符识别技术正在被像 WolframAlpha、微软、谷歌等许多公司用于在处理数学符号时提升工具的图像识别能力。总而言之，它对学生和学者来说是一个很棒的工具。它是免费使用的，我非常希望它是一个开源工具。但我们无法在生活中得到一切，不是么？在 LaTeX 中处理数学符号时，你是否使用 Mathpix 或其他类似工具？你如何看待 Mathpix？在评论区与我们分享你的观点。via: https://itsfoss.com/mathpix/作者：Abhishek Prakash 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出