是否有一个 LaTeX 包可以提供 LaTeX 项目中包含的所有包的简要概述?

是否有一个 LaTeX 包可以提供 LaTeX 项目中包含的所有包的简要概述?

我想知道是否存在一个 LaTeX 包,它可以扫描 LaTeX 项目内存在的所有包,然后从 CTAN 下载该 LaTeX 项目中包含的每个包的简短摘要说明,然后以摘要格式打印出来作为最终文档的一部分。

我意识到还有其他方法可以找到简短的摘要描述,例如:

  1. 《LaTeX Companion》一书:它提供了包含简短说明的大量软件包列表。虽然它可能没有涵盖所有软件包,但它是一份宝贵的资源。
  2. 在线资源:Overleaf、LaTeX-Tutorial.com 和 Research Guides 等网站提供文档、教程和软件包描述。
  3. 软件包文档:许多软件包都附带自己的文档,通常以 PDF 文件形式提供。您可以搜索软件包名称后跟“文档”来查找这些资源。
  4. texdoc 命令:如果您有本地 LaTeX 安装,则可以在终端或命令提示符中使用命令 texdoc <package_name> 来访问特定包的文档。

我正在寻找一个可以自动扫描我的 LaTeX 项目、编译其中包含的所有 LaTeX 包的列表、然后从 CTAN 下载 LaTeX 项目中包含的每个 LaTeX 包的相应简要说明的包。

我多年的 LaTeX 项目文件中包含了数百个 LaTeX 包,其中很多包我已经忘记了它们的用途。每次排版项目时,如果能随时获取简短的描述信息就好了。

答案1

这主要是一个仍处于起步阶段的想法(它不会成熟),用于显示 CTAN 描述而不是 latex 包。我担心这个例子,就其本身而言,可能与其他一些包一起使用时会有很多问题,而且是在 Quarto 中制作的,甚至表格示例中的一些条目也可能是错误的(抱歉,没有时间检查),但我认为这表明了这个想法,可能最好手动完成(以处理可能的许多不同情况):

  1. 使用某些工具选择前言中加载的包的名称,grep或者只是手动编辑前言的副本来制作 .sty 名称列表。

  2. texdoc使用and/or获取源 CTAN 包的名称列表tlmgr

  3. 获取 tlmgr这些包的简短描述。手动运行tlmgr info -data name,shortdesc name1 name 2...,检查错误,并将输出保存在 CSV 文件中。

  4. 使用 CSV 文件可以轻松制作表格datatool(未显示,但其他问题中有很多示例),或者使用 python 或 R(此示例)。

因此,序言如下:

\usepackage{mathtools,amssymb}
\usepackage{newtx} 
\usepackage{lipsum} 
\usepackage[dvipsnames]{xcolor}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{nccmath}
\usepackage{wrapfig}
\usepackage{comment}
\usepackage{graphicx}
\usepackage{array}
\usepackage{tcolorbox}
\usepackage[edges]{forest}

你可以获得一些像这样的东西:

在此处输入图片描述

---
title: Styles and packages
format: pdf
engine: knitr
---

```{bash}
#| echo: false
#| include: false
#| cache: false

grep usepackage Document.tex > foo.txt
sed -i -n 's/[^{]*{\([^}]*\)}/\1\n/gp' foo.txt
sed -i '/^\s*$/d' foo.txt
sed -i 's/,/\n/g' foo.txt

echo "tlmgr info -data name,shortdesc " > CTANp.txt

awk '{ print "texdoc -l -I " $1 ".sty" }' foo.txt | xargs -I {} sh -c '{}' | sed -e 's/.*\/\(.*\)\/.*\.sty/\1/' >> CTANp.txt 

tr '\n' ' ' < CTANp.txt > CTANp.sh
echo " > foo.csv " >> CTANp.txt
chmod u+x ./CTANp.sh
./CTANp.sh

```


Sort CTAN packages with short descriptions

```{r}
#| echo: false
#| cache: false

packages <- unique(read.csv("foo.csv", header = FALSE))
names(packages) <- c("CTAN","Description")
styles <- unique(read.csv("foo.txt", header = FALSE)) 
names(styles) <- c("sty")

knitr::kable(packages[order(packages$CTAN),],row.names = F)

```

\LaTeX{} packages (`{r} nrow(styles)`): `{r} styles$sty`  

CTAN packages (`{r} nrow(packages)`): `{r} packages$CTAN`  

答案2

如果您将 call\listfiles作为第一个命令(甚至在 之前\documentclass),则日志将在末尾包含使用过的文件(通常还有简短的描述)。例如:

\listfiles
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{example-image}
\end{document}

有一个日志文件,其中包含:

 *File List*
 article.cls    2021/10/04 v1.4n Standard LaTeX document class
  size10.clo    2021/10/04 v1.4n Standard LaTeX file (size option)
graphicx.sty    2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
  keyval.sty    2022/05/29 v1.15 key=value parser (DPC)
graphics.sty    2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR)
    trig.sty    2021/08/11 v1.11 sin cos tan (DPC)
graphics.cfg    2016/06/04 v1.11 sample graphics configuration
  pdftex.def    2020/10/05 v1.2a Graphics/color driver for pdftex
l3backend-pdftex.def    2022-08-05 L3 backend support: PDF output (pdfTeX)
supp-pdf.mkii
epstopdf-base.sty    2020-01-24 v2.11 Base part for package epstopdf
epstopdf-sys.cfg    2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
example-image.pdf    Graphic file (type pdf)
 ***********

相关内容