Существует ли пакет LaTeX, который предоставит краткое сводное описание всех пакетов, включенных в проект LaTeX?

Существует ли пакет LaTeX, который предоставит краткое сводное описание всех пакетов, включенных в проект LaTeX?

Мне было интересно, существует ли пакет LaTeX, который будет сканировать все пакеты, существующие в проекте LaTeX, а затем загружать с CTAN краткое сводное описание каждого из пакетов, включенных в этот проект LaTeX, чтобы затем распечатать его в сводном формате как часть окончательной документации.

Я понимаю, что существуют и другие способы найти краткие описания, например:

  1. Книга "LaTeX Companion": содержит обширный список пакетов с краткими описаниями. Хотя она может не охватывать все пакеты, она служит ценным ресурсом.
  2. Онлайн-ресурсы: такие веб-сайты, как Overleaf, LaTeX-Tutorial.com и Research Guides, предлагают документацию, учебные пособия и описания пакетов.
  3. Документация пакета: Многие пакеты поставляются с собственной документацией, часто доступной в виде файлов PDF. Вы можете выполнить поиск по имени пакета, за которым следует «документация», чтобы найти эти ресурсы.
  4. Команда texdoc: если у вас установлена ​​локальная версия LaTeX, вы можете использовать команду texdoc <имя_пакета> в терминале или командной строке, чтобы получить доступ к документации по определенному пакету.

Я ищу пакет, который автоматически просканирует мой проект LaTeX, составит список всех включенных в него пакетов LaTeX, а затем загрузит с CTAN соответствующее краткое описание каждого из пакетов LaTeX, включенных в проект LaTeX.

У меня есть несколько сотен пакетов LaTeX, включенных в мой многолетний файл проекта LaTeX, многие из которых я забыл, что они делают. Было бы неплохо иметь краткое описание информации, доступное каждый раз, когда я набираю текст своего проекта.

решение1

Это в основном идея, которая все еще находится в зачаточном состоянии (и не будет зрелой), чтобы показать описание CTAN вместо пакетов latex. Я боюсь, что пример, как есть, может иметь много проблем при использовании с некоторыми другими пакетами, кроме того, он сделан в Quarto и, вероятно, даже некоторые записи в примере таблицы неверны (извините, нет времени проверять), но я думаю, что показать идею, которую, вероятно, лучше сделать вручную (чтобы иметь дело с, вероятно, многими разными случаями):

  1. Выберите имена пакетов, загруженных в преамбулы, с помощью какого-либо инструмента grepили просто вручную отредактируйте копию преамбул, чтобы составить список имен .sty.

  2. Получите список имен исходного пакета CTAN с помощью texdocи/или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

Если вы вызываете \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)
 ***********

Связанный контент