LaTeX之宏包安装

news/2025/2/25 23:49:22/文章来源:https://www.cnblogs.com/Invinc-Z/p/18737550

\(\LaTeX{}\) 之宏包安装

安装和更新宏包

\(\textrm{TeX Live}\)\(\textrm{MiKTeX}\) 分别提供了图形界面的宏包管理器 \(\textrm{TEX Live Manager}\)\(\textrm{MiKTeX Package Manager}\),用于安装、管理和更新宏包。一般情况下,直接在图形界面的工具下按提示操作即可(\(\textrm{MiKTeX Package Manager}\) 有普通权限和管理员权限的版本,建议总是使用管理员权限的版本)。

两者也可以通过各自的命令行工具安装和更新宏包:

% TeX Live 命令行工具 tlmgr 的使用示例
% 安装/卸载宏包
tlmgr install <package-name>
tlmgr remove <package-name>
% 更新所有宏包(包括 tlmgr 本身)
tlmgr update --all --self
% 列出所有可更新的宏包
tlmgr update --list
% 指定更新源地址
% <CTAN mirrors> 形如 https://mirrors.tuna.tsinghua.edu.cn/CTAN
tlmgr repository set <CTAN mirrors>/systems/texlive/tlnet
% 查看宏包信息,加 --list 参数可列出宏包的所有文件
tlmgr info <package-name>
% MiKTeX 命令行工具 mpm 的使用示例
% 建议始终加 --admin 参数使用
% 安装/卸载宏包
mpm --admin --install <package-name>
mpm --admin --uninstall <package-name>
% 更新所有宏包
mpm --admin --update
% 列出所有可更新的宏包
mpm --admin --find-updates
% 指定更新源地址
mpm --admin --set-repository=<CTAN mirrors>/systems/win32/miktex/tm/packages
% 查看宏包信息
mpm --admin --print-package-info <package-name>

\(\textrm{TeX Live}\) 默认安装所有宏包, \(\textrm{MiKTeX}\) 的安装程序只包含了 \(\LaTeX{}\) 的一些基本宏包。从 \(\textrm{TeX Live}\) 的光盘镜像和 \(\textrm{MiKTeX}\) 的安装包体积可见一斑。
默认情况下,编译过程中如果遇到宏包未安装而报错的情况下,\(\textrm{MiKTeX}\) 会弹出一个对话框,让用户可以选择临时安装宏包,安装成功后继续编译。

手动安装宏包

\(\textcolor{red}{如非万不得已,尽量不要手动安装宏包}\)。绝大多数宏包都已打包到 \(\textrm{TeX Live}\)\(\textrm{MiKTeX}\) 两大发行版的安装源,可用宏包管理器安装。如果用户知道某个宏包的名称,但不确定是否在发行版中已打包,可在 \(\textrm{CTAN}\) 中搜索,网址是https://www.ctan.org/。

在手动安装之前,有必要了解一下 \(\TeX{}\) 目录结构(\(\TeX{}\) Directory Structure, TDS)。它是 \(\TeX{}\) 发行版中宏包、字体、帮助文档等文件的组织结构。TDS 有时也称为 \(\textrm{TEXMF}\) 树,取 \(\TeX+\textrm{METAFONT}\) 之意。

\(\textrm{TeX Live}\) 为例,假设系统的 \(\textrm{TEXMF}\) 树根目录为 \(\textrm{C:\\texlive\\2020\\texmf-dist}\),其下有很多子目录,仅举几例:

\(\texttt{tex/latex}\) \(\LaTeX{}\) 宏包
\(\texttt{doc/latex}\) \(\LaTeX{}\) 宏包的帮助文档
\(\texttt{source/latex}\) \(\LaTeX{}\) 宏包的源代码
\(\texttt{bibtex}\) \(\textrm{BibTeX}\) 工具相关文件,许多宏包配套的 \(\textrm{BibTeX}\) 格式文件位于子目录 \(\texttt{bst}\)
\(\texttt{fonts/tfm}\) $ \TeX{}$ 使用的字体文件,\(\textrm{TFM}\) 格式
\(\texttt{fonts/type1}\) \(\textrm{PostScript}\) 字体文件(\(\textrm{Type1}\)),\(\textrm{PFB}\) 格式
\(\texttt{fonts/opentype}\) \(\textrm{OpenType}\) 格式的字体文件

需要手动安装的宏包,一般已经按照上述目录结构打包完成。手动安装时,尽量不要拷贝到系统的 \(\textrm{TEXMF}\) 树,而是拷贝到发行版提供的用户 \(\textrm{TEXMF}\) 树,如 \(\textrm{TeX Live}\)\(\textrm{C:\\texlive\\texmf-local}\)。安装完成后,还需刷新 \(\TeX{}\) 发行版的文件名数据库,令新安装的宏包文件能够被系统找到。\(\textrm{TeX Live}\) 用户须在 Windows 命令行或者 Linux 终端执行命令:

mktexlsr

\(\textrm{MiKTeX}\) 用户的命令为:

initexmf --update-fndb

下载下来的宏包,有的直接包含\(\texttt{.sty}\) 文件(\(\texttt{.sty}\)文件就是package的最终形式);有的下载下来只包含了\(\texttt{.ins}\),\(\texttt{.dtx}\),以及一个 \(\textrm{readme}\) 文件,这时需要自己编译生成 \(\texttt{.sty}\) 文件,以及生成相应的 \(\textrm{manual}\) 。下面详细介绍生成 \(\texttt{.sty}\) 文件以及帮助文档的步骤。

  • 第一步:下载宏包,解压,下载地址https://www.ctan.org/pkg;

  • 第二步:找到你的解压后安装包地址,打开电脑的命令提示符界面,切换路径到这个package所在文件夹;

  • 第三步:生成*.sty,在命令提示符界面输入 latex *.ins;生成帮助文档manual, 在命令提示符界面输入latex *.dtx,编译完成以后,会生成一个叫做*.dvi的文件,这个文件也可以用ctex自带的yap程序打开,不过不是很方便,所以最好还是把它转为pdf格式,分为两步,先输入 dvips *.dvi,生成 *.ps文件,再输入ps2pdf *.ps,最终就生成了*.pdf的帮助文档,可以打开查看这个package的基本用法,命令的格式等。

  • 第四步:生成 *.sty文件以后还需要把这个文件放到LaTeX能够识别的路径下,在CTEX下,可以是 ~\CTEX\MiKTeX\tex\latex\(\textrm{TeX Live}\) 下,可以选择 ~\texlive\texmf-local\tex\latex\local, 你可以在这个路径下建立一个文件夹,文件夹的名字即是宏包的名字,把*.sty放到这里,接着找到MikTeX的Console,以管理员方式打开,点击“任务”——“刷新文件名数据库”。

下面的表格中给出了文件存放的规则:

Type Directory (under texmf/ or texmf-local/) Description
.afm fonts/afm/foundry/typeface Adobe Font Metrics for Type 1 fonts
.bst bibtex/bst/packagename BibTeX style
.cls tex/latex/base Document class file
.dvi doc package documentation
.enc fonts/enc Font encoding
.fd tex/latex/mfnfss Font Definition files for METAFONT fonts
.fd tex/latex/psnfss Font Definition files for PostScript Type 1 fonts
.map fonts/map/ Font mapping files
.mf fonts/source/public/typeface METAFONT outline
.pdf doc package documentation
.pfb fonts/type1/foundry/typeface PostScript Type 1 outline
.sty tex/latex/packagename Style file: the normal package content
.tex doc TeX source for package documentation
.tex tex/plain/packagename Plain TeX macro files
.tfm fonts/tfm/foundry/typeface TeX Font Metrics for METAFONT and Type 1 fonts
.ttf fonts/truetype/foundry/typeface TrueType font
.vf fonts/vf/foundry/typeface TeX virtual fonts
others tex/latex/packagename other types of file unless instructed otherwise

如果一个宏包还顺带安装了一些字体,还应该更新字体的映射。详细方法参详这里。

参考博文

[1] Partl H, Hyna I, Schlegl E. 一份 (不太) 简短的 LATEX2ε 介绍[J]. 2024. https://github.com/CTeX-org/lshort-zh-cn

[2] https://www.cnblogs.com/csucat/p/5142459.html

[3] https://blog.csdn.net/memray/article/details/45248259

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/889836.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百万架构师第四十四课:Nginx:Nginx 的扩展-OpenRestry|JavaGuide

百万架构师系列文章阅读体验感更佳 原文链接:https://javaguide.net 公众号:不止极客 Nginx 的扩展-OpenRestry 课程目标Nginx 进程模型简介Nginx 的高可用方案OpenResty 安装及使用什么是 API 网关?OpenResty 实现灰度发布功能Nginx 进程模型简介 多进程TomcatBIO NIO AION…

不用 ORM 会发生什么?

要弄清一个事物带来了什么,有种办法就是在场景中去掉它,当我们不使用 ORM 开发项目,需要补齐哪些能力,以表格形式列举要补齐的功能点和意义。我们仅能通过 SQL语句和数据库交互,在采用 ORM 项目开发的项目有时出于性能、数据库表达限制的原因而直接编写 SQL 语句,在脱离 …

事务中无法切换数据源?DataSourceSwitchInvoker:轻松实现多数据源切换执行工具类

背景: 在有标注为@Transactional的类或公共方法中(传播特性,如:NOT_SUPPORTED、SUPPORTS、REQUIRED【默认值】、REQUIRES_NEW)执行数据源切换可能不成功(比如:主从数据源切换,多数据源切换等,均会发现切换不成功,或“偶尔又切换成功”),导致本应该需要查主库却查了…

Java基础05(常用类)

匿名内部类 Object类 包装类 String类 BigDecimal类 Date类(特定时间)Calendar类(日历)SimpleDateFormat类(格式化时间)System类(系统类)Java基础05(常用类) 内部类 成员内部类在类的内部定义,与实例变量、实例方法同级别的类外部类的一个实例部分,创建内部类对象…

mysql表字段varchar(10)和varchar(255)测试文件占用

前言全局说明一、说明 1.1 环境: Windows 11 家庭版 23H2 22631.3737 MySQL: 服务器版本: 5.6.34 - MySQL Community Server (GPL) Navicat for MySQL: 10.1.71.2 测试样本 两个字段: id字段是 1~10位不等长度的随机数; num字段是 11~25位不等的随机数字;为了更好模拟实际使…

FreeRTOS高效应用实战

FreeRTOS高效应用实战 基于STM32CubeIDE生成对芯片移植好的FreeRTOS工程,使用HAL库编写FreeRTOS应用程序,实现FreeRTOS高效应用实战引入函数句柄的概念函数句柄(Function Handle)是编程中用于间接引用和操作函数的一种机制,其本质是将函数作为数据来传递和存储。以下是关于…

解决ZYNQ-7020开发板使用vitis编译uboot报错和无法正常调试的问题

整个学习过程是参考正点原子启明星开发板的2020.2版本嵌入式Linux开发指南,在学习uboot移植的时候遇到了问题。 新建工程和配置环境啥的和教程里都一样,就不罗嗦了,这里重点讲和教程不一样的地方(或者说教程里有问题的地方)。 新建工程后编译时遇到的报错 在按照教程新建ub…

markDown学习日记

标题 标题是通过#和一个空格来创建,标题的等级是通过#的个数来鉴别。 字体样式 进步进步进步 加粗效果由2个*前后包裹来实现 进步进步进步 斜体需要一个*来实现 (两者都实现需要三个*) 进步进步进步 删除需要两边都用波浪号 ~ 实现 引用明德新民 止于至善用>实…

LVM(Logical Volume Manager)

一. LVM概述 1. 什么是 LVM LVM(Logical Volume Manager,逻辑卷管理器)是 Linux 系统下的一种 存储管理 机制,能够灵活地管理磁盘分区。它提供了一种比传统分区管理(如fdisk、parted)更高级的存储管理方式,允许动态调整存储空间,方便扩展和缩减分区,而不会影响已有数据…

碎片

平板电脑和手机最大的区别就在于屏幕的大小, 一般手机屏幕的大小会在 3 英寸到 6 英寸之间, 而一般平板电脑屏幕的大小会在 7 英寸到 10 英寸之间。屏幕大小差距过大有可能会让同样的界面在视觉效果上有较大的差异, 比如一些界面在手机上看起来非常美观, 但在平板电脑上看起来就…

作业1 随笔

这个作业属于哪个课程 班级的链接这个作业要求在哪里 作业要求的链接这个作业的目标 学习使用markdown、博客园与GitHub,大致了解本学科1、自我介绍兴趣爱好:玩游戏,打羽毛球,喜欢拍照,喜欢理解学习软件工程专业的新东西 学习方面:主要学习Java,2、5个想弄懂的问题从事后…