aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJauhien Piatlicki <jauhien@gentoo.org>2014-05-10 03:26:11 +0200
committerJauhien Piatlicki <jauhien@gentoo.org>2014-05-10 03:26:11 +0200
commitefbc4fd4e6d9246021da01469f871d99331b7f51 (patch)
tree333696e35aea0bca290609ad46fbf1901516bfe4
parentfix: remove rest of gs-elpa (diff)
downloadg-sorcery-efbc4fd4e6d9246021da01469f871d99331b7f51.tar.gz
g-sorcery-efbc4fd4e6d9246021da01469f871d99331b7f51.tar.bz2
g-sorcery-efbc4fd4e6d9246021da01469f871d99331b7f51.zip
remove gs-ctan as Gentoo already has good support for CTAN packages
-rw-r--r--README.md4
-rwxr-xr-xbin/gs-ctan3
-rw-r--r--docs/Makefile2
-rw-r--r--docs/developer_instructions.html2
-rw-r--r--docs/developer_instructions.rst2
-rw-r--r--docs/g-sorcery.82
-rw-r--r--docs/g-sorcery.8.rst2
-rw-r--r--docs/g-sorcery.cfg.82
-rw-r--r--docs/g-sorcery.cfg.8.rst2
-rw-r--r--docs/gs-ctan.8153
-rw-r--r--docs/gs-ctan.8.rst130
-rw-r--r--docs/gs-pypi.82
-rw-r--r--docs/gs-pypi.8.rst2
-rw-r--r--gs-ctan-overlays.xml14
-rw-r--r--gs-ctan.json706
-rw-r--r--gs_ctan/__init__.py2
-rw-r--r--gs_ctan/backend.py36
-rw-r--r--gs_ctan/ctan_db.py210
-rw-r--r--gs_ctan/data/gs-ctan.eclass102
-rw-r--r--gs_ctan/ebuild.py62
-rw-r--r--setup.py11
21 files changed, 15 insertions, 1436 deletions
diff --git a/README.md b/README.md
index 0e26fb6..4b25590 100644
--- a/README.md
+++ b/README.md
@@ -52,7 +52,7 @@ Add `jauhien` overlay: **layman -a jauhien**.
Emerge g-sorcery: **emerge -va g-sorcery**.
-Currently 3 backends are available: **gs-elpa**, **gs-pypi** and **gs-ctan**.
+Currently 2 backends are available: **gs-elpa** and **gs-pypi**.
Here is an example of using gs-elpa backend.
@@ -127,6 +127,6 @@ Repositories you can use are gnu-elpa, marmalade and melpa. You can use them
all in one overlay. Note, that if you call **generate-tree** command your overlay
will be wiped and overlay tree for a given repository will be generated. Be careful!
-See man pages of **gs-elpa**, **gs-pypi** and **gs-ctan** for further information.
+See man pages of **gs-elpa** and **gs-pypi** for further information.
If you want to develop a new backend see [developer's instructions](https://github.com/jauhien/g-sorcery/blob/master/docs/developer_instructions.rst).
diff --git a/bin/gs-ctan b/bin/gs-ctan
deleted file mode 100755
index 7b1612d..0000000
--- a/bin/gs-ctan
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-g-sorcery gs-ctan $@
diff --git a/docs/Makefile b/docs/Makefile
index 8af5b2c..5c25523 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -1,7 +1,7 @@
HTML_SOURCES=developer_instructions
HTML_DOCS=$(HTML_SOURCES:=.html)
-MAN_SOURCES=g-sorcery g-sorcery.cfg gs-pypi gs-ctan
+MAN_SOURCES=g-sorcery g-sorcery.cfg gs-pypi
MANS=$(MAN_SOURCES:=.8)
RST2HTML=rst2html.py
diff --git a/docs/developer_instructions.html b/docs/developer_instructions.html
index a9798cb..f4e89ab 100644
--- a/docs/developer_instructions.html
+++ b/docs/developer_instructions.html
@@ -943,7 +943,7 @@ that quacks like this class.</p>
<p>Before doing it you should have defined classes you pass to it as parameters. They should be database
generator, two ebuild generators, eclass and metadata generators.</p>
<p>Also you should write an executable that calls g-sorcery and some configs.</p>
-<p>To have better understanding you can look at gs-elpa, gs-ctan and gs-pypi backends available
+<p>To have better understanding you can look at gs-elpa and gs-pypi backends available
in g-sorcery repository. Also available tests could be usefull.</p>
<p>Note that there is a tool for editing generated database named <strong>gs-db-tool</strong>.</p>
</div>
diff --git a/docs/developer_instructions.rst b/docs/developer_instructions.rst
index b54adfa..de266b9 100644
--- a/docs/developer_instructions.rst
+++ b/docs/developer_instructions.rst
@@ -634,7 +634,7 @@ generator, two ebuild generators, eclass and metadata generators.
Also you should write an executable that calls g-sorcery and some configs.
-To have better understanding you can look at gs-elpa, gs-ctan and gs-pypi backends available
+To have better understanding you can look at gs-elpa and gs-pypi backends available
in g-sorcery repository. Also available tests could be usefull.
Note that there is a tool for editing generated database named **gs-db-tool**.
diff --git a/docs/g-sorcery.8 b/docs/g-sorcery.8
index 1122fde..066e35b 100644
--- a/docs/g-sorcery.8
+++ b/docs/g-sorcery.8
@@ -127,7 +127,7 @@ At the moment the only package mangler \fBg\-sorcery\fP supports is \fBportage\f
.UNINDENT
.SH SEE ALSO
.sp
-\fBg\-sorcery.cfg\fP(8), \fBgs\-elpa\fP(8), \fBgs\-pypi\fP(8), \fBgs\-ctan\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8)
+\fBg\-sorcery.cfg\fP(8), \fBgs\-elpa\fP(8), \fBgs\-pypi\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8)
.SH AUTHOR
Written by Jauhien Piatlicki <piatlicki@gmail.com>. GSoC idea
and mentorship by Rafael Martins. Lots of help and improvements
diff --git a/docs/g-sorcery.8.rst b/docs/g-sorcery.8.rst
index 121b571..9ea702f 100644
--- a/docs/g-sorcery.8.rst
+++ b/docs/g-sorcery.8.rst
@@ -112,4 +112,4 @@ NOTES
SEE ALSO
========
-**g-sorcery.cfg**\(8), **gs-elpa**\(8), **gs-pypi**\(8), **gs-ctan**\(8), **portage**\(5), **emerge**\(1), **layman**\(8)
+**g-sorcery.cfg**\(8), **gs-elpa**\(8), **gs-pypi**\(8), **portage**\(5), **emerge**\(1), **layman**\(8)
diff --git a/docs/g-sorcery.cfg.8 b/docs/g-sorcery.cfg.8
index 0f11180..1643315 100644
--- a/docs/g-sorcery.cfg.8
+++ b/docs/g-sorcery.cfg.8
@@ -63,7 +63,7 @@ marmalade_packages = clojure\-mode clojurescript\-mode
.UNINDENT
.SH SEE ALSO
.sp
-\fBg\-sorcery\fP(8), \fBgs\-elpa\fP(8), \fBgs\-pypi\fP(8), \fBgs\-ctan\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8)
+\fBg\-sorcery\fP(8), \fBgs\-elpa\fP(8), \fBgs\-pypi\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8)
.SH AUTHOR
Written by Jauhien Piatlicki <piatlicki@gmail.com>. GSoC idea
and mentorship by Rafael Martins. Lots of help and improvements
diff --git a/docs/g-sorcery.cfg.8.rst b/docs/g-sorcery.cfg.8.rst
index 50a732c..7f9790f 100644
--- a/docs/g-sorcery.cfg.8.rst
+++ b/docs/g-sorcery.cfg.8.rst
@@ -56,4 +56,4 @@ EXAMPLE
SEE ALSO
========
-**g-sorcery**\(8), **gs-elpa**\(8), **gs-pypi**\(8), **gs-ctan**\(8), **portage**\(5), **emerge**\(1), **layman**\(8)
+**g-sorcery**\(8), **gs-elpa**\(8), **gs-pypi**\(8), **portage**\(5), **emerge**\(1), **layman**\(8)
diff --git a/docs/gs-ctan.8 b/docs/gs-ctan.8
deleted file mode 100644
index 8c456be..0000000
--- a/docs/gs-ctan.8
+++ /dev/null
@@ -1,153 +0,0 @@
-.\" Man page generated from reStructuredText.
-.
-.TH GS-CTAN 8 "2013-08-04" "0.1" "g-sorcery"
-.SH NAME
-gs-ctan \- manage overlays for CTAN repository
-.
-.nr rst2man-indent-level 0
-.
-.de1 rstReportMargin
-\\$1 \\n[an-margin]
-level \\n[rst2man-indent-level]
-level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
--
-\\n[rst2man-indent0]
-\\n[rst2man-indent1]
-\\n[rst2man-indent2]
-..
-.de1 INDENT
-.\" .rstReportMargin pre:
-. RS \\$1
-. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
-. nr rst2man-indent-level +1
-.\" .rstReportMargin post:
-..
-.de UNINDENT
-. RE
-.\" indent \\n[an-margin]
-.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
-.nr rst2man-indent-level -1
-.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
-.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
-..
-.SH SYNOPSIS
-.sp
-\fBgs\-ctan\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBsync\fP
-.sp
-\fBgs\-ctan\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBlist\fP
-.sp
-\fBgs\-ctan\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBgenerate\fP \fIPACKAGE\fP
-.sp
-\fBgs\-ctan\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBinstall\fP \fIPACKAGE\fP
-.sp
-\fBgs\-ctan\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBgenerate\-tree\fP [\fB\-d\fP]
-.SH DESCRIPTION
-.sp
-\fBgs\-ctan\fP is an ebuild generator for CTAN TEXLIVE repository.
-.sp
-There are two ways of using \fBgs\-ctan\fP:
-.INDENT 0.0
-.INDENT 3.5
-.INDENT 0.0
-.IP \(bu 2
-use it with \fBlayman\fP
-.sp
-In this case all you need to do is install \fBlayman\-9999\fP and \fBg\-sorcery\fP.
-Then you should just run \fIlayman \-L\fP as
-root and find an overlay you want. Type of overlay will be
-displayed as \fIg\-sorcery\fP. Then you add this overlay as
-usual. It\(aqs all you need to do and it\(aqs the recommended way of
-using \fBgs\-ctan\fP.
-.IP \(bu 2
-use it as stand\-alone tool
-.sp
-In this case you should create an overlay (see \fBportage\fP documentation), sync it and populate
-it with one or more ebuilds. Then ebuilds could be installed by emerge or by \fBgs\-ctan\fP tool.
-.UNINDENT
-.UNINDENT
-.UNINDENT
-.SH OPTIONS
-.INDENT 0.0
-.TP
-.B \fB\-\-overlay\fP \fIOVERLAY\fP, \fB\-o\fP \fIOVERLAY\fP
-Overlay directory. This option is mandatory if there is no
-\fBdefault_overlay\fP entry in a backend config.
-.TP
-.B \fB\-\-repository\fP \fIREPO\fP, \fB\-r\fP \fIREPO\fP
-Repository name. This option is not mandatory. If present should be \fBctan\fP.
-.UNINDENT
-.SH COMMANDS
-.INDENT 0.0
-.TP
-.B \fBsync\fP
-Synchronize a repository database.
-.TP
-.B \fBlist\fP
-List packages available in a repository.
-.TP
-.B \fBgenerate\fP
-Generate a given ebuild and all its dependencies.
-.TP
-.B \fBinstall\fP
-Generate and install an ebuild using your package mangler.
-.TP
-.B \fBgenerate\-tree\fP
-Generate entire overlay structure. Without option \fB\-d\fP after
-this command sources are not fetched during generation and there
-are no entries for them in Manifest files.
-.UNINDENT
-.SH FILES
-.INDENT 0.0
-.TP
-.B \fB/etc/g\-sorcery/gs\-ctan.json\fP
-Backend config.
-.TP
-.B \fB/etc/layman/overlays/gs\-ctan\-overlays.xml\fP
-List of available repositories.
-.UNINDENT
-.SH EXAMPLES
-.INDENT 0.0
-.TP
-.B Using gs\-ctan with layman
-Execute
-.sp
-\fBlayman \-L\fP
-.sp
-If you see there a \fBctan\fP overlay then anything should work.
-.sp
-\fBlayman \-a ctan\fP
-.sp
-Emerge any package from it using \fBemerge\fP.
-.TP
-.B Generating user ebuilds in user overlay
-Create new user overlay. Run
-.sp
-\fBgs\-ctan \-o\fP \fIOVERLAY_DIRECTORY\fP \fB\-r ctan\fP \fBsync\fP
-.sp
-List packages:
-.sp
-\fBgs\-ctan \-o\fP \fIOVERLAY_DIRECTORY\fP \fB\-r ctan\fP \fBlist\fP
-.sp
-Install any package you want:
-.sp
-\fBgs\-ctan \-o\fP \fIOVERLAY_DIRECTORY\fP \fB\-r ctan\fP \fBinstall\fP \fIPACKAGE\fP
-.sp
-Note, that if you call \fBgenerate\-tree\fP command your overlay
-will be wiped and overlay tree for a given repository will be generated. Be careful!
-.UNINDENT
-.SH NOTES
-.INDENT 0.0
-.IP 1. 3
-At the moment the only package mangler \fBgs\-ctan\fP supports is \fBportage\fP.
-.UNINDENT
-.SH SEE ALSO
-.sp
-\fBgs\-pypi\fP(8), \fBgs\-elpa\fP(8), \fBg\-sorcery.cfg\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8)
-.SH AUTHOR
-Written by Jauhien Piatlicki <piatlicki@gmail.com>. GSoC idea
-and mentorship by Rafael Martins. Lots of help and improvements
-by Brian Dolbec.
-.SH COPYRIGHT
-Copyright (c) 2013 Jauhien Piatlicki, License: GPL-2
-.\" Generated by docutils manpage writer.
-.
diff --git a/docs/gs-ctan.8.rst b/docs/gs-ctan.8.rst
deleted file mode 100644
index 348617e..0000000
--- a/docs/gs-ctan.8.rst
+++ /dev/null
@@ -1,130 +0,0 @@
-=======
-gs-ctan
-=======
-
------------------------------------
-manage overlays for CTAN repository
------------------------------------
-
-:Author: Written by Jauhien Piatlicki <piatlicki@gmail.com>. GSoC idea
- and mentorship by Rafael Martins. Lots of help and improvements
- by Brian Dolbec.
-:Date: 2013-08-04
-:Copyright: Copyright (c) 2013 Jauhien Piatlicki, License: GPL-2
-:Version: 0.1
-:Manual section: 8
-:Manual group: g-sorcery
-
-
-SYNOPSIS
-========
-
-**gs-ctan** **-o** *OVERLAY* [**-r** *REPO*] **sync**
-
-**gs-ctan** **-o** *OVERLAY* [**-r** *REPO*] **list**
-
-**gs-ctan** **-o** *OVERLAY* [**-r** *REPO*] **generate** *PACKAGE*
-
-**gs-ctan** **-o** *OVERLAY* [**-r** *REPO*] **install** *PACKAGE*
-
-**gs-ctan** **-o** *OVERLAY* [**-r** *REPO*] **generate-tree** [**-d**]
-
-DESCRIPTION
-===========
-
-**gs-ctan** is an ebuild generator for CTAN TEXLIVE repository.
-
-There are two ways of using **gs-ctan**:
-
- * use it with **layman**
-
- In this case all you need to do is install **layman-9999** and **g-sorcery**.
- Then you should just run `layman -L` as
- root and find an overlay you want. Type of overlay will be
- displayed as *g-sorcery*. Then you add this overlay as
- usual. It's all you need to do and it's the recommended way of
- using **gs-ctan**.
-
- * use it as stand-alone tool
-
- In this case you should create an overlay (see **portage** documentation), sync it and populate
- it with one or more ebuilds. Then ebuilds could be installed by emerge or by **gs-ctan** tool.
-
-
-OPTIONS
-=======
-
-**--overlay** *OVERLAY*, **-o** *OVERLAY*
- Overlay directory. This option is mandatory if there is no
- **default_overlay** entry in a backend config.
-
-**--repository** *REPO*, **-r** *REPO*
- Repository name. This option is not mandatory. If present should be **ctan**.
-
-COMMANDS
-========
-
-**sync**
- Synchronize a repository database.
-
-**list**
- List packages available in a repository.
-
-**generate**
- Generate a given ebuild and all its dependencies.
-
-**install**
- Generate and install an ebuild using your package mangler.
-
-**generate-tree**
- Generate entire overlay structure. Without option **-d** after
- this command sources are not fetched during generation and there
- are no entries for them in Manifest files.
-
-FILES
-=====
-**/etc/g-sorcery/gs-ctan.json**
- Backend config.
-
-**/etc/layman/overlays/gs-ctan-overlays.xml**
- List of available repositories.
-
-EXAMPLES
-========
-
-Using gs-ctan with layman
- Execute
-
- **layman -L**
-
- If you see there a **ctan** overlay then anything should work.
-
- **layman -a ctan**
-
- Emerge any package from it using **emerge**.
-
-Generating user ebuilds in user overlay
- Create new user overlay. Run
-
- **gs-ctan -o** *OVERLAY_DIRECTORY* **-r ctan** **sync**
-
- List packages:
-
- **gs-ctan -o** *OVERLAY_DIRECTORY* **-r ctan** **list**
-
- Install any package you want:
-
- **gs-ctan -o** *OVERLAY_DIRECTORY* **-r ctan** **install** *PACKAGE*
-
- Note, that if you call **generate-tree** command your overlay
- will be wiped and overlay tree for a given repository will be generated. Be careful!
-
-NOTES
-=====
-
-1. At the moment the only package mangler **gs-ctan** supports is **portage**.
-
-SEE ALSO
-========
-
-**gs-pypi**\(8), **gs-elpa**\(8), **g-sorcery.cfg**\(8), **portage**\(5), **emerge**\(1), **layman**\(8)
diff --git a/docs/gs-pypi.8 b/docs/gs-pypi.8
index 633de7d..7536605 100644
--- a/docs/gs-pypi.8
+++ b/docs/gs-pypi.8
@@ -142,7 +142,7 @@ At the moment the only package mangler \fBgs\-pypi\fP supports is \fBportage\fP.
.UNINDENT
.SH SEE ALSO
.sp
-\fBgs\-elpa\fP(8), \fBgs\-ctan\fP(8), \fBg\-sorcery.cfg\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8)
+\fBgs\-elpa\fP(8), \fBg\-sorcery.cfg\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8)
.SH AUTHOR
Written by Jauhien Piatlicki <piatlicki@gmail.com>. GSoC idea
and mentorship by Rafael Martins. Lots of help and improvements
diff --git a/docs/gs-pypi.8.rst b/docs/gs-pypi.8.rst
index d5c7c07..92031cc 100644
--- a/docs/gs-pypi.8.rst
+++ b/docs/gs-pypi.8.rst
@@ -127,4 +127,4 @@ NOTES
SEE ALSO
========
-**gs-elpa**\(8), **gs-ctan**\(8), **g-sorcery.cfg**\(8), **portage**\(5), **emerge**\(1), **layman**\(8)
+**gs-elpa**\(8), **g-sorcery.cfg**\(8), **portage**\(5), **emerge**\(1), **layman**\(8)
diff --git a/gs-ctan-overlays.xml b/gs-ctan-overlays.xml
deleted file mode 100644
index 0faceb6..0000000
--- a/gs-ctan-overlays.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE repositories SYSTEM "/dtd/repositories.dtd">
-<repositories xmlns="" version="1.0">
-<repo quality="experimental" status="unofficial">
- <name>ctan</name>
- <description>CTAN packages</description>
- <homepage>http://www.ctan.org/</homepage>
- <owner>
- <email>piatlicki@gmail.com</email>
- <name>Jauhien Piatlicki</name>
- </owner>
- <source type="g-sorcery">gs-ctan ctan</source>
-</repo>
-</repositories>
diff --git a/gs-ctan.json b/gs-ctan.json
deleted file mode 100644
index d25dbd1..0000000
--- a/gs-ctan.json
+++ /dev/null
@@ -1,706 +0,0 @@
-{
- "backend": "gs-ctan",
- "package": "gs_ctan",
- "repositories": {
- "ctan": {
- "repo_uri": "http://mirror.ctan.org/systems/texlive/tlnet/"
- }
- },
- "common_config": {
- "licenses": {
- "apache2": "Apache-2.0",
- "artistic": "Artistic",
- "Artistic2": "Artistic-2",
- "gpl": "GPL-1",
- "gpl2": "GPL-2",
- "gpl3": "GPL-3",
- "knuth": "TeX",
- "lgpl": "LGPL-2",
- "lgpl2.1": "LGPL-2.1",
- "lppl": "LPPL-1.2",
- "lppl1": "LPPL-1.2",
- "lppl1.2": "LPPL-1.2",
- "lppl1.3": "LPPL-1.3c"
- },
- "exclude": [
- "avantgar", "bookman", "charter", "cm-super",
- "cmextra", "courier", "euro", "euro-ce", "eurosym", "fpl",
- "helvetic", "lm", "lm-math", "marvosym", "mathpazo", "ncntrsbk",
- "palatino", "pxfonts", "rsfs", "symbol", "tex-gyre", "tex-gyre-math",
- "times", "tipa", "txfonts", "utopia", "wasy", "wasysym", "zapfchan", "zapfding",
- "epsf", "fontname", "genmisc", "kastrup", "multido", "path",
- "tex-ps", "ulem",
- "anysize", "booktabs", "caption", "cite", "cmap", "crop", "ctable", "ec",
- "eso-pic", "euler", "extsizes", "fancybox", "fancyref", "fancyvrb", "float",
- "fontspec", "fp", "index", "jknapltx", "koma-script", "l3kernel",
- "l3packages", "l3experimental", "listings", "mdwtools", "memoir", "metalogo",
- "mh", "microtype", "ms", "ntgclass", "parskip", "pdfpages", "powerdot", "psfrag",
- "rcs", "rotating", "sansmath", "section", "seminar", "sepnum", "setspace",
- "subfig", "textcase", "thumbpdf", "typehtml", "underscore", "url", "xkeyval",
- "aichej", "amsrefs", "apacite", "apalike2", "beebe", "bibarts", "biber",
- "bibexport", "bibhtml", "biblatex-apa", "biblatex-bwl", "biblatex-caspervector",
- "biblatex-chem", "biblatex-chicago", "biblatex-dw", "biblatex-fiwi", "biblatex-gost",
- "biblatex-historian", "biblatex-ieee", "biblatex-juradiss", "biblatex-luh-ipw",
- "biblatex-mla", "biblatex-musuos", "biblatex-nature", "biblatex-nejm",
- "biblatex-philosophy", "biblatex-phys", "biblatex-publist", "biblatex-science",
- "biblatex-swiss-legal", "biblatex-trad", "biblist", "bibtopic", "bibtopicprefix",
- "bibunits", "breakcites", "cell", "chbibref", "chicago", "chicago-annote", "chembst",
- "chscite", "collref", "compactbib", "custom-bib", "din1505", "dk-bib", "doipubmed",
- "fbs", "figbib", "footbib", "francais-bst", "geschichtsfrkl", "harvard", "harvmac",
- "historische-zeitschrift", "ijqc", "inlinebib", "iopart-num", "jneurosci", "jurabib",
- "ksfh_nat", "listbib", "logreq", "margbib", "multibib", "multibibliography",
- "munich", "notes2bib", "oscola", "perception", "pnas2009", "rsc", "showtags",
- "sort-by-letters", "splitbib", "uni-wtal-ger", "uni-wtal-lin", "urlbst", "usebib",
- "vak", "xcite",
- "Asana-Math", "adforn", "adfsymbols", "aecc", "allrunes", "antiqua", "antt",
- "archaic", "arev", "ascii-font", "aspectratio", "astro", "augie", "auncial-new",
- "aurical", "b1encoding", "barcodes", "baskervald", "bbding", "bbm", "bbm-macros",
- "bbold", "bbold-type1", "belleek", "bera", "berenisadf", "bguq", "blacklettert1",
- "boisik", "bookhands", "boondox", "braille", "brushscr", "cabin", "calligra", "calligra-type1",
- "cantarell", "carolmin-ps", "ccicons", "cfr-lm", "cherokee", "cm-lgc", "cm-unicode",
- "cmbright", "cmll", "cmpica", "cmtiup", "comfortaa", "concmath-fonts", "cookingsymbols",
- "countriesofeurope", "courier-scaled", "cryst", "cyklop", "dancers", "dejavu", "dice",
- "dictsym", "dingbat", "doublestroke", "dozenal", "droid", "duerer", "duerer-latex",
- "dutchcal", "ean", "ebgaramond", "ecc", "eco", "eiad", "eiad-ltx", "electrum", "elvish",
- "epigrafica", "epsdice", "esstix", "esvect", "eulervm", "euxm", "fdsymbol", "feyn", "fge",
- "foekfont", "fonetika", "fontawesome", "fourier", "fouriernc", "frcursive", "genealogy",
- "gentium", "gfsartemisia", "gfsbodoni", "gfscomplutum", "gfsdidot", "gfsneohellenic",
- "gfssolomos", "gillcm", "gnu-freefont", "gothic", "greenpoint", "grotesq", "hacm",
- "hands", "hfbright", "hfoldsty", "ifsym", "inconsolata", "initials", "ipaex-type1", "iwona",
- "jablantile", "jamtimes", "junicode", "kixfont", "knuthotherfonts", "kpfonts",
- "kurier", "lato", "lfb", "libertine", "librebaskerville", "libris", "linearA", "lxfonts",
- "ly1", "mathabx", "mathabx-type1", "mathdesign", "mdputu", "mdsymbol", "mnsymbol", "newpx",
- "newtx", "nkarta", "ocherokee", "ocr-b", "ocr-b-outline", "ogham", "oinuit", "oldlatin",
- "oldstandard", "opensans", "orkhun", "pacioli", "paratype", "phaistos", "phonetic", "pigpen",
- "poltawski", "prodint", "punk", "punk-latex", "punknova", "pxtxalfa", "quattrocento", "raleway",
- "recycle", "romande", "rsfso", "sansmathaccent", "sansmathfonts", "sauter", "sauterfonts",
- "schulschriften", "semaphor", "skull", "sourcecodepro", "sourcesanspro", "starfont", "staves",
- "stix", "superiors", "tapir", "tengwarscript", "tfrupee", "tpslifonts", "trajan", "txfontsb",
- "umtypewriter", "universa", "urwchancal", "venturisadf", "wsuipa", "xits", "yfonts",
- "edmac", "eplain", "mltex", "psizzl", "startex", "texsis",
- "abbr", "abstyles", "barr", "bitelist", "borceux", "c-pascal", "catcodes", "chronosys",
- "colorsep", "dinat", "dirtree", "dowith", "eijkhout", "encxvlna", "epigram", "fenixpar",
- "fltpoint", "fntproof", "gates", "ifetex", "iftex", "insbox", "langcode", "lecturer", "librarian",
- "mathdots", "metatex", "midnight", "navigator", "ofs", "pdf-trans", "plainpkg", "schemata",
- "shade", "systeme", "tabto-generic", "texapi", "upca", "xlop", "yax",
- "2up", "ESIEEcv", "GS1", "HA-prosper", "Tabbing", "a0poster",
- "a4wide", "a5comb", "abraces", "abstract", "achemso", "acro",
- "acronym", "acroterm", "actuarialangle", "addlines",
- "adjmulticol", "adjustbox", "adrconv", "advdate", "akktex",
- "akletter", "alterqcm", "altfont", "amsaddr", "animate",
- "anonchap", "answers", "anyfontsize", "appendix",
- "appendixnumberbeamer", "apptools", "arcs", "arrayjobx",
- "assignment", "attachfile", "autopdf", "authoraftertitle",
- "authorindex", "autonum", "background", "bashful", "bchart",
- "beamer2thesis", "beameraudience", "beamerposter",
- "beamersubframe", "beamertheme-upenn-bc", "beamerthemejltree",
- "beamerthemenirma", "begriff", "beton", "bez123", "bezos",
- "bhcexam", "bigfoot", "bigints", "bizcard", "blindtext",
- "blkarray", "block", "blowup", "boites", "bold-extra",
- "bookest", "booklet", "boolexpr", "bophook", "boxedminipage",
- "boxhandler", "bracketkey", "braket", "breakurl", "bullcntr",
- "bussproofs", "bxdpx-beamer", "calcage", "calctab",
- "calculator", "calrsfs", "cals", "calxxxx-yyyy", "cancel",
- "canoniclayout", "capt-of", "captcont", "captdef", "cases",
- "casyl", "catchfilebetweentags", "catechis", "catoptions",
- "cbcoptic", "ccaption", "cclicenses", "cd", "cd-cover",
- "cdpbundl", "cellspace", "censor", "changebar", "changelayout",
- "changepage", "changes", "chappg", "chapterfolder", "chet",
- "chextras", "chkfloat", "chletter", "chngcntr", "chronology",
- "circ", "classics", "clefval", "cleveref", "clipboard", "clock",
- "cmdstring", "cmdtrack", "cmsd", "codedoc", "codepage",
- "collcell", "collectbox", "colordoc", "colorinfo", "colortab",
- "colorwav", "colourchange", "combelow", "combine", "comma",
- "commado", "comment", "concepts", "concprog", "constants",
- "contour", "contracard", "cooking", "cool", "coollist",
- "coolstr", "coolthms", "cooltooltips", "coordsys",
- "copyrightbox", "coseoul", "counttexruns", "courseoutline",
- "coursepaper", "coverpage", "cprotect", "crbox",
- "crossreference", "csquotes", "csvsimple", "csvtools",
- "cuisine", "currfile", "cutwin", "cv", "cweb-latex", "dashbox",
- "dashrule", "dashundergaps", "datatool", "dateiliste",
- "datenumber", "datetime", "dblfloatfix", "decimal", "decorule",
- "delim", "delimtxt", "diagbox", "diagnose", "dialogl",
- "dichokey", "dinbrief", "directory", "dirtytalk", "dlfltxb",
- "dnaseq", "docmfp", "docmute", "documentation", "doi",
- "dotarrow", "dotseqn", "download", "dox", "dpfloat",
- "dprogress", "drac", "draftcopy", "draftwatermark", "dtk",
- "dtxgallery", "dvdcoll", "dynblocks", "easy", "easy-todo",
- "easyfig", "easylist", "ean13isbn", "ebezier", "ecclesiastic",
- "ecv", "ed", "edmargin", "eemeir", "egplot", "ellipsis",
- "elmath", "elpres", "emarks", "embrac", "emptypage",
- "emulateapj", "endfloat", "endheads", "endnotes", "engpron",
- "engrec", "enotez", "enumitem", "enumitem-zref", "envbig",
- "environ", "epigraph", "epiolmec", "eqell", "eqlist", "eqname",
- "eqparbox", "errata", "esami", "esdiff", "esint", "esint-type1",
- "etaremune", "etextools", "etoc", "etoolbox", "eukdate",
- "everyhook", "everypage", "exam", "examdesign", "examplep",
- "exceltex", "excludeonly", "exercise", "exp-testopt",
- "expdlist", "export", "exsheets", "exsol", "extract",
- "facsimile", "factura", "fancynum", "fancypar", "fancytabs",
- "fancytooltips", "figsize", "filecontents", "filedate",
- "filehook", "fileinfo", "filemod", "fink", "finstrut",
- "fixfoot", "fixme", "fixmetodonotes", "fjodor", "flabels",
- "flacards", "flagderiv", "flashcards", "flashmovie", "flipbook",
- "flippdf", "floatflt", "floatrow", "flowfram", "fmp",
- "fmtcount", "fn2end", "fnbreak", "fncychap", "fncylab",
- "fnpara", "fnpct", "fnumprint", "foilhtml", "fontaxes",
- "fonttable", "footmisc", "footnotebackref", "footnoterange",
- "footnpag", "forarray", "foreign", "forloop", "formlett",
- "formular", "fragments", "frame", "framed", "frankenstein",
- "frege", "ftcap", "ftnxtra", "fullblck", "fullwidth",
- "fundus-calligra", "fundus-cyr", "fundus-sueterlin", "fwlw",
- "gauss", "gcard", "gcite", "genmpage", "getfiledate", "ginpenc",
- "gitinfo", "gloss", "gmdoc", "gmdoc-enhance", "gmeometric",
- "gmiflink", "gmutils", "gmverb", "graphicx-psmin", "grfpaste",
- "grid", "gridset", "guitlogo", "hanging", "hardwrap",
- "harnon-cv", "harpoon", "hc", "he-she", "hhtensor", "histogr",
- "hitec", "hletter", "hpsdiss", "hrefhide", "hvindex",
- "hypdvips", "hyper", "hypernat", "hyperref-docsrc", "hyperxmp",
- "hyphenat", "idxlayout", "ifmslide", "ifmtarg", "ifnextok",
- "ifoddpage", "ifplatform", "ifthenx", "iitem", "image-gallery",
- "imakeidx", "import", "incgraph", "inlinedef", "inputtrc",
- "interactiveworkbook", "interfaces", "inversepath", "invoice",
- "iso", "iso10303", "isodate", "isonums", "isodoc", "isorot",
- "isotope", "issuulinks", "iwhdp", "jlabels", "jvlisting",
- "kantlipsum", "kerntest", "keycommand", "keyreader",
- "keystroke", "keyval2e", "kix", "koma-moderncvclassic",
- "koma-script-sfs", "ktv-texdata", "labbook", "labelcas",
- "labels", "lastpage", "latex-tds", "layouts", "lazylist", "lcd",
- "lcg", "leading", "leftidx", "lengthconvert", "lettre",
- "lettrine", "lewis", "lhelp", "libgreek", "limap", "linegoal",
- "lipsum", "lisp-on-tex", "listing", "listofsymbols",
- "listliketab", "lkproof", "lmake", "locality", "localloc",
- "logbox", "logical-markup-utils", "logpap", "longnamefilelist",
- "loops", "lsc", "lstaddons", "ltablex", "ltabptch", "ltxdockit",
- "ltxindex", "ltxkeys", "ltxnew", "ltxtools", "magaz", "mailing",
- "mailmerge", "makebarcode", "makebox", "makecell", "makecirc",
- "makecmds", "makedtx", "makeglos", "mandi", "manfnt",
- "manuscript", "marginfix", "marginnote", "mathalfa",
- "mathastext", "mathexam", "maybemath", "mbenotes", "mcaption",
- "mceinleger", "mcite", "mciteplus", "mdframed", "media9",
- "meetingmins", "memexsupp", "memory", "menu", "menukeys",
- "method", "metre", "mftinc", "midpage", "minibox", "minifp",
- "minipage-marginpar", "minitoc", "minted", "minutes", "misc209",
- "mla-paper", "mlist", "mmap", "mnotes", "moderncv",
- "moderntimeline", "modref", "modroman", "monofill", "moreenum",
- "morefloats", "morehype", "moresize", "moreverb", "morewrites",
- "movie15", "mparhack", "msc", "msg", "mslapa", "mtgreek",
- "multenum", "multibbl", "multicap", "multienv", "multiexpand",
- "multirow", "mversion", "mwe", "mycv", "mylatexformat", "nag",
- "nameauth", "namespc", "ncclatex", "ncctools", "needspace",
- "nestquot", "newcommand", "newenviron", "newfile", "newlfm",
- "newspaper", "newunicodechar", "newvbtm", "newverbs",
- "nextpage", "nfssext-cfr", "nicefilelist", "niceframe",
- "nicetext", "nlctdoc", "noconflict", "noitcrul", "nolbreaks",
- "nomencl", "nomentbl", "nonfloat", "nonumonpart", "nopageno",
- "notes", "notoccite", "nowidow", "ntheorem", "numberedblock",
- "numname", "numprint", "ocg-p", "ocgx", "ocr-latex", "octavo",
- "oldstyle", "onlyamsmath", "opcit", "optional", "outline",
- "outliner", "outlines", "overpic", "pagecolor", "pagecont",
- "pagenote", "pagerange", "pageslts", "paper", "papercdcase",
- "papermas", "papertex", "paracol", "paralist", "paresse",
- "parnotes", "parselines", "patch", "patchcmd", "pauldoc",
- "pawpict", "pbox", "pbsheet", "pdf14", "pdfcomment", "pdfcprot",
- "pdfmarginpar", "pdfscreen", "pdfslide", "pdfsync", "pdfwin",
- "pdfx", "pecha", "perltex", "permute", "petiteannonce",
- "philex", "photo", "piff", "pittetd", "placeins", "plates",
- "plantslabels", "plweb", "polynom", "polynomial", "polytable",
- "postcards", "poster-mac", "ppr-prv", "preprint", "prettyref",
- "preview", "printlen", "probsoln", "program", "progress",
- "progressbar", "properties", "prosper", "protex", "protocol",
- "psfragx", "pst-pdf", "pstool", "pxgreeks", "python", "qcm",
- "quoting", "qstest", "qsymbols", "quotchap", "quotmark",
- "ran_toks", "randtext", "rccol", "rcs-multi", "rcsinfo",
- "readarray", "realboxes", "recipe", "recipecard", "rectopma",
- "refcheck", "refman", "refstyle", "regcount", "regexpatch",
- "register", "regstats", "relenc", "relsize", "repeatindex",
- "rjlparshap", "rlepsf", "rmpage", "robustcommand",
- "robustindex", "romanbar", "romanneg", "romannum", "rotfloat",
- "rotpages", "roundbox", "rterface", "rtkinenc", "rvwrite",
- "sauerj", "savefnmark", "savesym", "savetrees", "scale",
- "scalebar", "scalerel", "sdrt", "secdot", "sectionbox",
- "sectsty", "selectp", "semantic", "semioneside", "sepfootnotes",
- "seqsplit", "sf298", "sffms", "sfmath", "shadow", "shadowtext",
- "shadethm", "shapepar", "shipunov", "shorttoc", "show2e",
- "showcharinbox", "showdim", "showexpl", "showlabels", "sidecap",
- "sidenotes", "silence", "simplecd", "simplecv", "simplewick",
- "sitem", "skb", "skdoc", "skeycommand", "skeyval", "skrapport",
- "slantsc", "smalltableof", "smartref", "snapshot", "snotez",
- "soul", "spanglish", "sparklines", "sphack", "spreadtab",
- "spverbatim", "splitindex", "spot", "spotcolor", "srbook-mem",
- "srcltx", "sseq", "stack", "stackengine", "standalone",
- "statistik", "stdclsdv", "stdpage", "stex", "storebox",
- "storecmd", "stringstrings", "sttools", "stubs", "subdepth",
- "subeqn", "subeqnarray", "subfigmat", "subfigure", "subfiles",
- "subfloat", "substitutefont", "substr", "supertabular", "svg",
- "svgcolor", "svn", "svn-multi", "svn-prov", "syntax",
- "syntrace", "synttree", "tabfigures", "tableaux",
- "tablefootnote", "tableof", "tablists", "tabls", "tabto-ltx",
- "tabu", "tabularborder", "tabularcalc", "tabularew", "tabulary",
- "tagging", "talk", "tamefloats", "tcldoc", "tcolorbox",
- "tdclock", "technics", "ted", "termcal", "termlist",
- "tex-label", "texlogos", "texmate", "texments", "texpower",
- "texshade", "textfit", "textgreek", "textmerg", "textpos",
- "theoremref", "threadcol", "threeparttable", "threeparttablex",
- "thinsp", "thmtools", "thumb", "thumbs", "thumby", "ticket",
- "titlecaps", "titlefoot", "titlepic", "titleref", "titlesec",
- "titling", "tocbibind", "tocloft", "tocvsec2", "todo",
- "todonotes", "tokenizer", "toolbox", "topfloat", "totcount",
- "totpages", "trfsigns", "trimspaces", "trsym", "trivfloat",
- "truncate", "tucv", "turnthepage", "twoinone", "twoup",
- "txgreeks", "type1cm", "typeface", "typogrid", "ucs",
- "uebungsblatt", "umoline", "underlin", "underoverlap",
- "undolabl", "units", "upmethodology", "upquote", "uri",
- "ushort", "uwmslide", "varindex", "varsfromjobname", "varwidth",
- "vdmlisting", "verbasef", "verbatimbox", "verbatimcopy",
- "verbdef", "verbments", "version", "versions", "vertbars",
- "vhistory", "vmargin", "volumes", "vpe", "vruler", "vwcol",
- "wallpaper", "warning", "warpcol", "was", "widetable",
- "williams", "wordlike", "wrapfig", "xargs", "xbmc", "xcomment",
- "xhfill", "xtab", "xdoc", "xfor", "xifthen", "xint", "xmpincl",
- "xnewcommand", "xoptarg", "xpatch", "xpeek", "xpunctuate",
- "xstring", "xwatermark", "xytree", "yafoot", "yagusylo", "ydoc",
- "yplan", "zed-csp", "ziffer", "zwgetfdate", "zwpagelayout",
- "12many", "amstex", "backnaur", "binomexp", "boldtensors",
- "bosisio", "bropd", "ccfonts", "commath", "concmath",
- "concrete", "conteq", "eqnarray", "extarrows", "extpfeil",
- "faktor", "interval", "ionumbers", "isomath", "mathcomp",
- "mattens", "mhequ", "multiobjective", "nath", "ot-tableau",
- "oubraces", "proba", "rec-thy", "shuffle", "skmath", "statex",
- "statex2", "stmaryrd", "subsupscripts", "susy", "syllogism",
- "synproof", "tablor", "tensor", "tex-ewd", "thmbox",
- "turnstile", "unicode-math", "venn", "yhmath", "ytableau",
- "figflow", "fixpdfmag", "font-change", "fontch", "getoptk",
- "graphics-pln", "hyplain", "js-misc", "mkpattern", "newsletr",
- "pitex", "placeins-plain", "plipsum", "plnfss", "plstmary",
- "present", "resumemac", "texinfo", "timetable", "treetex",
- "varisize",
- "aastex", "chktex", "curve", "envlab", "g-brief", "isotope", "latexmk", "minted", "",
- "polytable", "rcsinfo", "tex4ht", "xmltex", "abntex", "circuit_macros", "detex", "europecv",
- "glossaries", "ivritex", "lazylist", "natbib", "ppower4", "revtex", "texamator", "xymtex",
- "bera", "cjk-latex", "dot2tex", "feynmf", "harvard", "latex-beamer", "leaflet", "newlfm",
- "prosper", "rubber", "texmfind", "biblatex", "cpp2latex", "dot2texi", "flabels", "herm-pic",
- "latex-calendar", "lgrind", "notoccite", "pscyr", "serienbrief", "texpower", "bibtex2html",
- "crosstex", "dvi2gr", "floatflt", "hevea", "latex-unicode", "luatex", "oesch", "pstplus",
- "sketch", "tipa", "bibtexu", "csindex", "dvi2tty", "foiltex", "hlatex", "latex2html",
- "pdfannotextractor", "qtexengine", "slatex", "translator", "catdvi",
- "culmus-latex", "dvipost", "frakturx", "html2latex", "latex2rtf", "metapost", "pdftex",
- "quotchap", "style-check", "tth", "cdcover", "currvita", "ellipsis", "fundus", "hyphen_show",
- "latexdiff", "mh", "pgf", "rail", "svninfo", "xcolor",
- "amsfonts", "bibtex", "cm", "dvipdfmx-def", "enctex", "etex",
- "etex-pkg", "glyphlist", "hyph-utf8", "ifluatex", "ifxetex",
- "lua-alt-getopt", "luatex", "makeindex", "metafont", "mflogo",
- "mfware", "misc", "pdftex", "plain",
- "context", "jmn",
- "accfonts", "afm2pl", "dosepsbin", "epstopdf", "fontware",
- "lcdftypetools", "ps2pkm", "pstools", "psutils", "dvipsconfig",
- "fontinst", "fontools", "mf2pt1", "t1utils",
- "bartel-chess-fonts", "chess", "chess-problem-diagrams",
- "chessboard", "chessfss", "crossword", "crosswrd", "egameps",
- "gamebook", "go", "hanoi", "hexgame", "horoscop", "logicpuzzle",
- "othello", "othelloboard", "psgo", "reverxii", "schwalbe-chess",
- "sgame", "skak", "skaknew", "sudoku", "sudokubundle", "xq",
- "xskak", "xmlplay",
- "alnumsec", "arydshln", "bibleref", "bibleref-lds",
- "bibleref-mouth", "bibleref-parse", "covington", "dramatist",
- "dvgloss", "ecltree", "edfnotes", "ednotes", "eledform",
- "eledmac", "gb4e", "gmverse", "jura", "juraabbrev", "juramisc",
- "jurarsp", "ledmac", "leipzig", "lexikon", "lineno", "linguex",
- "liturg", "parallel", "parrun", "plari", "play", "poemscol",
- "poetrytex", "qobitree", "qtree", "rrgtrees", "rtklage",
- "screenplay", "sides", "stage", "textglos", "tree-dvips",
- "verse", "xyling",
- "SIstyle", "SIunits", "alg", "algorithm2e", "algorithmicx",
- "algorithms", "biocon", "bohr", "bpchem", "bytefield",
- "chemarrow", "chemcompounds", "chemcono", "chemexec",
- "chemmacros", "chemnum", "chemstyle", "clrscode", "complexity",
- "computational-complexity", "digiconfigs", "drawstack",
- "dyntree", "eltex", "endiagram", "engtlc", "fouridx", "functan",
- "galois", "gastex", "gene-logic", "gu", "hep", "hepnames",
- "hepparticles", "hepthesis", "hepunits", "karnaugh", "mhchem",
- "miller", "mychemistry", "nuc", "objectz", "physics", "physymb",
- "pseudocode", "sasnrdisplay", "sciposter", "sfg", "siunitx",
- "steinmetz", "struktex", "substances", "t-angles", "textopo",
- "ulqda", "unitsdef", "youngtab",
- "checkcites", "chickenize", "enigma", "interpreter",
- "lua-check-hyphen", "lua-visual-debug", "lua2dox",
- "luabibentry", "luabidi", "luacode", "luaindex", "luainputenc",
- "luaintro", "lualatex-doc", "lualatex-math", "lualibs",
- "luamplib", "luaotfload", "luasseq", "luatexbase", "luatexko",
- "luatextra", "luaxml", "odsfile", "selnolig", "showhyphens",
- "spelling",
- "automata", "bbcard", "blockdraw_mp", "bpolynomial",
- "cmarrows", "drv", "dviincl", "emp", "epsincl", "expressg",
- "exteps", "featpost", "feynmp-auto", "garrigues", "gmp",
- "hatching", "latexmp", "metago", "metaobj", "metaplot",
- "metapost", "metauml", "mfpic", "mfpic4ode", "mp3d",
- "mpcolornames", "mpattern", "mpgraphics", "piechartmp", "roex",
- "slideshow", "splines", "suanpan", "textpath", "threeddice",
- "abc", "figbas", "gchords", "gtrcrd", "guitar", "harmony",
- "m-tx", "musixguit", "musixtex", "musixtex-fonts", "pmx",
- "songbook", "songs",
- "aleph", "antomega", "lambda", "mxedruli", "omega", "omegaware", "otibet",
- "asyfig", "autoarea", "bardiag", "bloques", "bodegraph",
- "bondgraph", "braids", "bxeepic", "cachepic", "chemfig",
- "combinedgraphics", "circuitikz", "curve", "curve2e", "curves",
- "dcpic", "diagmac2", "doc-pictex", "dottex", "", "dratex",
- "drs", "duotenzor", "eepic", "", "epspdfconversion", "esk",
- "fast-diagram", "fig4latex", "flowchart", "forest", "gincltex",
- "gnuplottex", "gradientframe", "grafcet", "here", "hf-tikz",
- "hobby", "hvfloat", "knitting", "knittingpattern", "lapdf",
- "lpic", "makeshape", "mathspic", "miniplot", "modiagram",
- "numericplots", "pb-diagram", "petri-nets", "", "pgf-blur",
- "pgf-soroban", "pgf-umlsd", "pgfgantt", "pgfkeyx", "pgfmolbio",
- "pgfopts", "pgfplots", "piano", "picinpar", "pict2e", "pictex",
- "pictex2", "pinlabel", "pmgraph", "prerex", "productbox",
- "pxpgfmark", "randbild", "randomwalk", "reotex", "rviewport",
- "sa-tikz", "schemabloc", "setdeck", "smartdiagram", "spath3",
- "swimgraf", "texdraw", "tikz-3dplot", "tikz-bayesnet",
- "tikz-cd", "tikz-dependency", "tikz-inet", "tikz-qtree",
- "tikz-timing", "tikzinclude", "tikzmark", "tikzorbital",
- "tikzpagenodes", "tikzpfeile", "tikzposter", "tikzscale",
- "tikzsymbols", "tqft", "tkz-base", "tkz-berge", "tkz-doc",
- "tkz-euclide", "tkz-fct", "tkz-graph", "tkz-kiviat",
- "tkz-linknodes", "tkz-orm", "tkz-tab", "tsemlines",
- "tufte-latex", "venndiagram", "xpicture", "xypic",
- "auto-pst-pdf", "bclogo", "makeplot", "pdftricks",
- "pedigree-perl", "psbao", "pst-2dplot", "pst-3d", "pst-3dplot",
- "pst-abspos", "pst-am", "pst-asr", "pst-bar", "pst-barcode",
- "pst-bezier", "pst-blur", "pst-bspline", "pst-calendar",
- "pst-circ", "pst-coil", "pst-cox", "pst-dbicons",
- "pst-diffraction", "pst-electricfield", "pst-eps", "pst-eucl",
- "pst-exa", "pst-fill", "pst-fit", "pst-fr3d", "pst-fractal",
- "pst-fun", "pst-func", "pst-gantt", "pst-geo", "pst-ghsb",
- "pst-gr3d", "pst-grad", "pst-graphicx", "pst-infixplot",
- "pst-jtree", "pst-knot", "pst-labo", "pst-layout", "pst-lens",
- "pst-light3d", "pst-magneticfield", "pst-math", "pst-mirror",
- "pst-node", "pst-ob3d", "pst-ode", "pst-optexp", "pst-optic",
- "pst-osci", "pst-pad", "pst-pdgr", "pst-platon", "pst-plot",
- "pst-poly", "pst-pulley", "pst-qtree", "pst-rubans",
- "pst-sigsys", "pst-slpe", "pst-solarsystem", "pst-spectra",
- "pst-solides3d", "pst-soroban", "pst-stru", "pst-support",
- "pst-text", "pst-thick", "pst-tools", "pst-tree", "pst-tvz",
- "pst-uml", "pst-vectorian", "pst-vowel", "pst-vue3d", "pst2pdf",
- "pstricks", "pstricks-add", "pstricks_calcnotes", "uml",
- "vaucanson-g", "vocaltract",
- "IEEEconf", "IEEEtran", "aastex", "abntex2", "acmconf",
- "active-conf", "adfathesis", "afthesis", "aguplus", "aiaa",
- "ametsoc", "anufinalexam", "aomart", "apa", "apa6", "apa6e",
- "arsclassica", "articleingud", "asaetr", "ascelike",
- "beamer-FUBerlin", "bgteubner", "cascadilla", "chem-journal",
- "classicthesis", "cmpj", "confproc", "ebook", "ebsthesis",
- "ejpecp", "elbioimp", "elsarticle", "elteikthesis", "erdc",
- "estcpmm", "fbithesis", "fcltxdoc", "gaceta", "gatech-thesis",
- "har2nat", "hobete", "icsv", "ieeepes", "ijmart", "imac",
- "imtekda", "jmlr", "jpsj", "kdgdocs", "kluwer", "lps", "matc3",
- "matc3mem", "mentis", "msu-thesis", "musuos", "muthesis",
- "nature", "nddiss", "nih", "nostarch", "nrc", "onrannual",
- "opteng", "philosophersimprint", "pkuthss", "powerdot-FUBerlin",
- "pracjourn", "procIAGssymp", "proposal", "ptptex", "psu-thesis",
- "resphilosophica", "resumecls", "revtex", "revtex4",
- "ryethesis", "sageep", "sapthesis", "scrjrnl", "seuthesis",
- "soton", "spie", "stellenbosch", "suftesi", "sugconf",
- "tabriz-thesis", "texilikechaps", "texilikecover",
- "thesis-titlepage-fhac", "thuthesis", "toptesi", "tugboat",
- "tugboat-plain", "tui", "uaclasses", "uadocs", "uafthesis",
- "ucdavisthesis", "ucthesis", "uestcthesis", "uiucredborder",
- "uiucthesis", "ulthese", "umthesis", "umich-thesis",
- "unamthesis", "unswcover", "ut-thesis", "uothesis", "uowthesis",
- "uspatent", "uwthesis", "vancouver", "xcookybooky",
- "york-thesis", "texinfo",
- "arabxetex", "euenc", "fixlatvian", "fontbook", "fontwrap",
- "mathspec", "philokalia", "polyglossia", "realscripts",
- "unisugar", "xecjk", "xecolor", "xecyr", "xeindex", "xepersian",
- "xesearch", "xetex", "xetex-def", "xetex-itrans",
- "xetex-pstricks", "xetexconfig", "xetexfontinfo", "xltxtra",
- "xunicode",
- "ethiop", "ethiop-t1", "fc", "hyphen-ethiopic",
- "amiri", "arabi", "arabtex", "bidi", "hyphen-arabic",
- "hyphen-farsi", "persian-bib", "persian-modern",
- "adobemapping", "arphic", "c90", "cjkpunct", "cns", "ctex",
- "dnp", "fonts-tlwg", "garuda-c90", "hyphen-chinese", "ipaex",
- "japanese", "japanese-otf", "japanese-otf-uptex", "jfontmaps",
- "jsclasses", "luatexja", "norasi-c90", "ptex", "thailatex",
- "uhc", "uptex", "wadalab", "xpinyin", "zhmetrics", "zhnumber",
- "zhspacing",
- "hrlatex", "hyphen-croatian", "cmcyr", "cyrillic",
- "cyrillic-bin", "cyrplain", "disser", "eskd", "eskdx", "gost",
- "lcyw", "lh", "lhcyr", "ruhyphen", "russ", "t2", "ukrhyph",
- "hyphen-bulgarian", "hyphen-russian", "hyphen-ukrainian", "cs",
- "csbulletin", "cslatex", "csplain", "hyphen-czech",
- "hyphen-slovak", "hyphen-danish", "finbib", "aeguill",
- "basque-book", "basque-date", "bib-fr", "bibleref-french",
- "booktabs-fr", "droit-fr", "facture", "frenchle", "frletter",
- "impnattypo", "mafr", "tabvar", "tdsfrmath", "variations",
- "bibleref-german", "dehyph-exptl", "dhua", "booktabs-de",
- "csquotes-de", "etoolbox-de", "geometry-de", "german",
- "germbib", "germkorr", "hausarbeit-jura", "microtype-de",
- "r_und_s", "tipa-de", "umlaute", "betababel", "bgreek",
- "cbfonts", "gfsbaskerville", "gfsporson", "greek-inputenc",
- "greekdates", "greektex", "grverb", "ibycus-babel", "ibygrk",
- "kerkis", "levy", "lgreek", "lgrx", "mkgrkindex", "teubner",
- "xgreek", "yannisgr", "cjhebrew", "magyar", "bangtex",
- "bengali", "burmese", "devnag", "ebong", "hyphen-indic",
- "hyphen-sanskrit", "malayalam", "sanskrit", "velthuis", "wnri",
- "wnri-latex", "xetex-devanagari", "codicefiscaleitaliano",
- "fixltxhyph", "hyphen-italian", "frontespizio", "itnumpar",
- "layaureo", "lithuanian", "montex", "mongolian-babel", "cc-pl",
- "gustlib", "gustprog", "mex", "mwcls", "pl", "polski",
- "przechlewski-book", "qpxqtx", "tap", "utf8mex", "ordinalpt",
- "swebib", "ctib", "otibet", "turkmen", "vntex",
- "lshort-persian", "lshort-bulgarian", "pst-eucl-translation-bg",
- "asymptote-faq-zh-cn", "asymptote-by-example-zh-cn",
- "asymptote-manual-zh-cn", "ctex-faq", "latex-notes-zh-cn",
- "lshort-chinese", "texlive-zh-cn", "lshort-czech",
- "lshort-slovak", "texlive-cz", "lshort-dutch", "FAQ-en",
- "MemoirChapStyles", "Type1fonts", "amslatex-primer",
- "around-the-bend", "ascii-chart", "components-of-TeX",
- "comprehensive", "dtxtut", "first-latex-doc", "gentle",
- "guide-to-latex", "happy4th", "impatient", "intro-scientific",
- "knuth", "l2tabu-english", "latex-course", "latex-doc-ptr",
- "latex-graphics-companion", "latex-veryshortguide",
- "latex-web-companion", "latex2e-help-texinfo", "latex4wp",
- "latexcheat", "latexfileinfo-pkgs", "lshort-english",
- "macros2e", "math-e", "mathmode", "memdesign",
- "metafont-beginners", "metapost-examples", "mil3",
- "patgen2-tutorial", "pictexsum", "plain-doc",
- "pstricks-examples-en", "pstricks-tutorial", "simplified-latex",
- "svg-inkscape", "tabulars-e", "tamethebeast", "tds",
- "tex-font-errors-cheatsheet", "tex-overview", "tex-refs",
- "texbytopic", "titlepages", "tlc2", "visualfaq", "webguide",
- "xetexref", "lshort-finnish", "apprends-latex", "epslatex-fr",
- "impatient-fr", "l2tabu-french", "lshort-french", "texlive-fr",
- "translation-array-fr", "translation-dcolumn-fr",
- "translation-natbib-fr", "translation-tabbing-fr",
- "einfuehrung", "fifinddo-info", "kopka", "l2picfaq", "l2tabu",
- "latex-bib-ex", "latex-referenz", "latex-tabellen",
- "lshort-german", "presentations", "pstricks-examples",
- "templates-fenn", "templates-sommer", "texlive-de",
- "translation-arsclassica-de", "translation-biblatex-de",
- "translation-chemsym-de", "translation-ecv-de",
- "translation-enumitem-de", "translation-europecv-de",
- "translation-filecontents-de", "translation-moreverb-de",
- "voss-de", "amsldoc-it", "amsmath-it", "amsthdoc-it",
- "fancyhdr-it", "l2tabu-italian", "latex4wp-it",
- "lshort-italian", "psfrag-italian", "texlive-it",
- "lshort-japanese", "lshort-korean", "lshort-mongol",
- "lshort-polish", "beamer-tut-pt", "cursolatex",
- "latexcheat-ptbr", "lshort-portuguese", "xypic-tut-pt",
- "lshort-russian", "mpman-ru", "texlive-ru", "texlive-sr",
- "lshort-slovenian", "es-tex-faq", "l2tabu-spanish",
- "latex2e-help-texinfo-spanish", "latexcheat-esmx",
- "lshort-spanish", "lshort-thai", "lshort-turkish", "lshort-ukr",
- "amsldoc-vn", "lshort-vietnamese", "ntheorem-vn",
- "babel-albanian", "babel-breton", "babel-croatian", "babel-danish",
- "babel-dutch", "babel-estonian", "babel-finnish", "babel-friulan",
- "babel-hungarian", "babel-icelandic", "babel-irish", "babel-kurmanji",
- "babel-latin", "babel-norsk", "babel-piedmontese", "babel-romanian",
- "babel-romansh", "babel-samin", "babel-scottish", "babel-slovenian",
- "babel-swedish", "babel-turkish", "babel-welsh", "finbib", "hrlatex",
- "arabxetex", "euenc", "fixlatvian", "fontbook", "fontwrap",
- "mathspec", "philokalia", "polyglossia", "ptext", "realscripts",
- "ucharclasses", "unisugar", "xecjk", "xecolor", "xecyr",
- "xeindex", "xepersian", "xesearch", "xetex", "xetex-def",
- "xetex-itrans", "xetex-pstricks", "xetex-tibetan",
- "xetexconfig", "xetexfontinfo", "xetexko", "xevlna", "xltxtra",
- "xunicode",
- "babel-bulgarian", "babel-russian", "babel-serbian",
- "babel-serbianc", "babel-ukraineb", "cmcyr", "cyrillic",
- "cyrillic-bin", "cyrplain", "disser", "eskd", "eskdx", "gost",
- "hyphen-bulgarian", "hyphen-mongolian", "hyphen-russian",
- "hyphen-serbian", "hyphen-ukrainian", "lcyw", "lh", "lhcyr",
- "lshort-bulgarian", "lshort-mongol", "lshort-russian",
- "lshort-ukr", "mongolian-babel", "montex", "mpman-ru",
- "pst-eucl-translation-bg", "ruhyphen", "russ",
- "serbian-apostrophe", "serbian-date-lat", "serbian-def-cyr",
- "serbian-lig", "t2", "texlive-ru", "texlive-sr", "ukrhyph",
- "ae", "amscls", "amsmath", "babel", "babel-english", "babelbib",
- "carlisle", "colortbl", "fancyhdr", "fix2col", "geometry",
- "graphics", "hyperref", "latex", "latex-bin", "latex-fonts",
- "latexconfig", "ltxmisc", "mfnfss", "mptopdf", "natbib",
- "oberdiek", "pdftex-def", "pslatex", "psnfss", "pspicture",
- "tools",
- "adobemapping", "arphic", "asymptote-by-example-zh-cn",
- "asymptote-faq-zh-cn", "asymptote-manual-zh-cn", "bxbase",
- "bxjscls", "c90", "cjk-ko", "cjkpunct", "cns", "convbkmk",
- "ctex", "ctex-faq", "dnp", "garuda-c90", "hyphen-chinese",
- "ipaex", "japanese", "japanese-otf", "japanese-otf-uptex",
- "jfontmaps", "jsclasses", "latex-notes-zh-cn", "lshort-chinese",
- "lshort-japanese", "lshort-korean", "luatexja", "nanumtype1",
- "norasi-c90", "ptex", "ptex2pdf", "pxbase", "pxchfon",
- "pxcjkcat", "pxjahyper", "pxrubrica", "texlive-zh-cn", "uhc",
- "uptex", "wadalab", "xpinyin", "zhmetrics", "zhnumber",
- "zhspacing", "zxjafbfont", "zxjafont", "zxjatype", "beamer",
- "2up", "ESIEEcv", "HA-prosper", "Tabbing", "a0poster", "a4wide",
- "a5comb", "abstract", "achemso", "acro", "acronym", "acroterm",
- "addlines", "adjmulticol", "adrconv", "advdate", "akktex",
- "akletter", "alterqcm", "altfont", "amsaddr", "animate",
- "anonchap", "answers", "anyfontsize", "appendix",
- "appendixnumberbeamer", "arcs", "arrayjobx", "assignment",
- "attachfile", "authoraftertitle", "authorindex", "autonum",
- "background", "bashful", "bchart", "beamer2thesis",
- "beameraudience", "beamerposter", "beamersubframe",
- "beamerthemejltree", "beamerthemenirma", "begriff", "beton",
- "bez123", "bezos", "bhcexam", "bigfoot", "bigints", "bizcard",
- "blindtext", "blkarray", "block", "blowup", "boites",
- "bold-extra", "bookest", "booklet", "boolexpr", "bophook",
- "boxedminipage", "boxhandler", "bracketkey", "braket",
- "breakurl", "bullcntr", "bussproofs", "calctab", "calculator",
- "calrsfs", "cals", "calxxxx-yyyy", "cancel", "canoniclayout",
- "capt-of", "captcont", "captdef", "cases", "casyl",
- "catchfilebetweentags", "catechis", "catoptions", "cbcoptic",
- "ccaption", "cclicenses", "cd", "cd-cover", "cdpbundl",
- "cellspace", "censor", "changebar", "changelayout",
- "changepage", "changes", "chappg", "chapterfolder", "chet",
- "chextras", "chletter", "chngcntr", "chronology", "circ",
- "clefval", "cleveref", "clock", "cmdstring", "cmsd", "codedoc",
- "codepage", "collcell", "collectbox", "colordoc", "colorinfo",
- "colortab", "colorwav", "colourchange", "combelow", "combine",
- "comma", "comment", "concprog", "constants", "contour",
- "cooking", "cool", "coollist", "coolstr", "coolthms",
- "cooltooltips", "coordsys", "copyrightbox", "coseoul",
- "courseoutline", "coursepaper", "coverpage", "cprotect",
- "crbox", "crossreference", "csquotes", "csvsimple", "csvtools",
- "cuisine", "currfile", "cutwin", "cv", "cweb-latex", "dashbox",
- "dashrule", "dashundergaps", "datatool", "dateiliste",
- "datenumber", "datetime", "dblfloatfix", "decimal", "decorule",
- "delim", "delimtxt", "diagbox", "diagnose", "dichokey",
- "dinbrief", "directory", "dirtytalk", "dlfltxb", "dnaseq",
- "docmfp", "docmute", "documentation", "doi", "dotarrow",
- "dotseqn", "dox", "dpfloat", "dprogress", "drac", "draftcopy",
- "draftwatermark", "dtk", "dtxgallery", "dvdcoll", "dynblocks",
- "easy", "easy-todo", "easyfig", "easylist", "ean13isbn",
- "ebezier", "ecclesiastic", "ecv", "ed", "edmargin", "eemeir",
- "egplot", "ellipsis", "elmath", "elpres", "emarks", "embrac",
- "emptypage", "emulateapj", "endfloat", "endheads", "endnotes",
- "engpron", "engrec", "enotez", "enumitem", "enumitem-zref",
- "envbig", "environ", "epigraph", "epiolmec", "eqell", "eqlist",
- "eqname", "eqparbox", "errata", "esdiff", "esint",
- "esint-type1", "etaremune", "etextools", "etoolbox", "eukdate",
- "everyhook", "everypage", "exam", "examdesign", "examplep",
- "exceltex", "excludeonly", "exercise", "exp-testopt",
- "expdlist", "export", "extract", "facsimile", "fancynum",
- "fancypar", "fancytabs", "fancytooltips", "figsize",
- "filecontents", "filehook", "fileinfo", "filemod", "fink",
- "finstrut", "fixfoot", "fixme", "fixmetodonotes", "fjodor",
- "flabels", "flacards", "flagderiv", "flashcards", "flashmovie",
- "flipbook", "flippdf", "floatflt", "floatrow", "flowfram",
- "fmp", "fmtcount", "fn2end", "fnbreak", "fncychap", "fncylab",
- "fnpara", "fnpct", "foilhtml", "fontaxes", "fonttable",
- "footmisc", "footnotebackref", "footnoterange", "footnpag",
- "forarray", "foreign", "forloop", "formlett", "formular",
- "fragments", "frame", "framed", "frankenstein", "frege",
- "friulan", "ftcap", "ftnxtra", "fullblck", "fullwidth",
- "fundus-calligra", "fundus-cyr", "fundus-sueterlin", "fwlw",
- "gauss", "gcard", "gcite", "genmpage", "getfiledate", "ghab",
- "ginpenc", "gitinfo", "gloss", "gmdoc", "gmdoc-enhance",
- "gmeometric", "gmiflink", "gmutils", "gmverb", "graphicx-psmin",
- "grfpaste", "grid", "gridset", "guitlogo", "hanging",
- "hardwrap", "harnon-cv", "harpoon", "hc", "he-she", "hhtensor",
- "histogr", "hitec", "hletter", "hpsdiss", "hrefhide", "hvindex",
- "hypdvips", "hyper", "hypernat", "hyperref-docsrc", "hyperxmp",
- "hyphenat", "idxlayout", "ifmslide", "ifmtarg", "ifnextok",
- "ifoddpage", "ifplatform", "ifthenx", "image-gallery",
- "imakeidx", "import", "incgraph", "inlinedef", "inputtrc",
- "interactiveworkbook", "interfaces", "inversepath", "invoice",
- "iso", "iso10303", "isodate", "isonums", "isodoc", "isorot",
- "isotope", "issuulinks", "iwhdp", "jlabels", "jvlisting",
- "kantlipsum", "kerntest", "keycommand", "keyreader",
- "keystroke", "keyval2e", "kix", "koma-moderncvclassic",
- "koma-script-sfs", "labbook", "labelcas", "labels", "lastpage",
- "latex-tds", "layouts", "lazylist", "lcd", "lcg", "leading",
- "leftidx", "lettre", "lettrine", "lewis", "lhelp", "libgreek",
- "limap", "linegoal", "lipsum", "listing", "listofsymbols",
- "listliketab", "lkproof", "lmake", "locality", "localloc",
- "logbox", "logical-markup-utils", "logpap", "longnamefilelist",
- "lsc", "lstaddons", "ltabptch", "ltxdockit", "ltxindex",
- "ltxkeys", "ltxnew", "ltxtools", "magaz", "mailing",
- "mailmerge", "makebarcode", "makebox", "makecell", "makecirc",
- "makecmds", "makedtx", "makeglos", "manfnt", "manuscript",
- "marginfix", "marginnote", "mathalfa", "mathastext", "mathexam",
- "maybemath", "mbenotes", "mcaption", "mceinleger", "mcite",
- "mciteplus", "mdframed", "media9", "meetingmins", "memexsupp",
- "menu", "menukeys", "method", "metre", "mftinc", "midpage",
- "minibox", "minipage-marginpar", "minitoc", "minted", "minutes",
- "misc209", "mla-paper", "mlist", "mmap", "moderncv",
- "moderntimeline", "modref", "modroman", "monofill", "moreenum",
- "morefloats", "morehype", "moresize", "moreverb", "morewrites",
- "movie15", "mparhack", "msc", "msg", "mslapa", "mtgreek",
- "multenum", "multibbl", "multicap", "multienv", "multirow",
- "mversion", "mwe", "mycv", "mylatexformat", "nag", "nameauth",
- "namespc", "ncclatex", "ncctools", "needspace", "newcommand",
- "newfile", "newlfm", "newspaper", "newunicodechar", "newvbtm",
- "newverbs", "nextpage", "nfssext-cfr", "nicefilelist",
- "niceframe", "nicetext", "nlctdoc", "noitcrul", "nolbreaks",
- "nomencl", "nomentbl", "nonfloat", "nonumonpart", "nopageno",
- "notes", "notoccite", "nowidow", "ntheorem", "numname",
- "numprint", "ocgtools", "ocr-latex", "octavo", "oldstyle",
- "onlyamsmath", "opcit", "optional", "outline", "outliner",
- "outlines", "overpic", "pagecolor", "pagecont", "pagenote",
- "pagerange", "pageslts", "paper", "papercdcase", "papermas",
- "papertex", "paracol", "paralist", "paresse", "parnotes",
- "parselines", "patch", "patchcmd", "pauldoc", "pawpict", "pbox",
- "pbsheet", "pdf14", "pdfcomment", "pdfcprot", "pdfmarginpar",
- "pdfscreen", "pdfslide", "pdfsync", "pdfwin", "pdfx", "pecha",
- "perltex", "permute", "petiteannonce", "philex", "photo",
- "piff", "pittetd", "placeins", "plates", "plantslabels",
- "plweb", "polyglot", "polynom", "polynomial", "polytable",
- "postcards", "poster-mac", "ppr-prv", "preprint", "prettyref",
- "preview", "printlen", "probsoln", "program", "progress",
- "progressbar", "properties", "prosper", "protex", "protocol",
- "psfragx", "pst-pdf", "pstool", "pxgreeks", "python", "qcm",
- "quoting", "qstest", "qsymbols", "quotchap", "quotmark",
- "randtext", "rccol", "rcs-multi", "rcsinfo", "realboxes",
- "recipe", "recipecard", "rectopma", "refcheck", "refman",
- "refstyle", "regcount", "regexpatch", "register", "regstats",
- "relenc", "relsize", "repeatindex", "rjlparshap", "rlepsf",
- "rmpage", "robustcommand", "robustindex", "romanbar",
- "romanneg", "romannum", "romansh", "rotfloat", "rotpages",
- "rtkinenc", "rvwrite", "sauerj", "savefnmark", "savesym",
- "savetrees", "scale", "scalebar", "sdrt", "secdot",
- "sectionbox", "sectsty", "selectp", "semantic", "semioneside",
- "sepfootnotes", "seqsplit", "serbian-apostrophe",
- "serbian-date-lat", "serbian-def-cyr", "serbian-lig",
- "serbianc", "sf298", "sffms", "sfmath", "shadow", "shadowtext",
- "shadethm", "shapepar", "shipunov", "shorttoc", "show2e",
- "showcharinbox", "showexpl", "showlabels", "sidecap",
- "sidenotes", "silence", "simplecd", "simplecv", "simplewick",
- "sitem", "skb", "skeycommand", "skeyval", "slantsc",
- "smalltableof", "smartref", "snapshot", "soul", "spanglish",
- "sparklines", "sphack", "spreadtab", "spverbatim", "splitindex",
- "spot", "spotcolor", "srbook-mem", "srcltx", "sseq", "stack",
- "standalone", "statistik", "stdclsdv", "stdpage", "stex",
- "storebox", "storecmd", "stringstrings", "sttools", "stubs",
- "subdepth", "subeqn", "subeqnarray", "subfigmat", "subfigure",
- "subfiles", "subfloat", "substitutefont", "substr",
- "supertabular", "svgcolor", "svn", "svn-multi", "svn-prov",
- "syntax", "syntrace", "synttree", "tabfigures", "tableaux",
- "tablefootnote", "tablists", "tabls", "tabto-ltx", "tabu",
- "tabularborder", "tabularcalc", "tabularew", "tabulary",
- "tagging", "talk", "tcldoc", "tcolorbox", "tdclock", "technics",
- "ted", "termcal", "termlist", "tex-label", "texlogos",
- "texmate", "texments", "texpower", "texshade", "textfit",
- "textgreek", "textmerg", "textpos", "theoremref",
- "threeparttable", "threeparttablex", "thinsp", "thmtools",
- "thumb", "thumbs", "thumby", "ticket", "timesht", "titlefoot",
- "titlepic", "titleref", "titlesec", "titling", "tocbibind",
- "tocloft", "tocvsec2", "todo", "todonotes", "tokenizer",
- "toolbox", "topfloat", "totcount", "totpages", "tram",
- "trfsigns", "trimspaces", "trsym", "trivfloat", "truncate",
- "tucv", "turnthepage", "twoinone", "twoup", "txgreeks",
- "type1cm", "typeface", "typogrid", "ucs", "uebungsblatt",
- "umoline", "underlin", "undolabl", "units", "upmethodology",
- "upquote", "uri", "ushort", "varindex", "varsfromjobname",
- "varwidth", "verbasef", "verbatimbox", "verbatimcopy",
- "verbdef", "verbments", "version", "versions", "vertbars",
- "vhistory", "vmargin", "volumes", "vpe", "vruler", "vwcol",
- "wallpaper", "warning", "warpcol", "was", "widetable",
- "williams", "wordlike", "wrapfig", "xargs", "xbmc", "xcomment",
- "xhfill", "xtab", "xdoc", "xfor", "xifthen", "xmpincl",
- "xnewcommand", "xoptarg", "xpatch", "xpunctuate", "xstring",
- "xwatermark", "xytree", "yafoot", "yagusylo", "ydoc", "yplan",
- "zed-csp", "ziffer", "zwgetfdate", "zwpagelayout"
- ]
- }
-}
diff --git a/gs_ctan/__init__.py b/gs_ctan/__init__.py
deleted file mode 100644
index cf529d7..0000000
--- a/gs_ctan/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env python
-
diff --git a/gs_ctan/backend.py b/gs_ctan/backend.py
deleted file mode 100644
index 92245e6..0000000
--- a/gs_ctan/backend.py
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
- backend.py
- ~~~~~~~~~~
-
- CTAN backend
-
- :copyright: (c) 2013 by Jauhien Piatlicki
- :license: GPL-2, see LICENSE for more details.
-"""
-
-import os
-
-from g_sorcery.backend import Backend
-from g_sorcery.metadata import MetadataGenerator
-from g_sorcery.eclass import EclassGenerator
-from g_sorcery.fileutils import get_pkgpath
-
-from .ctan_db import CtanDBGenerator
-from .ebuild import CtanEbuildWithoutDigestGenerator, CtanEbuildWithDigestGenerator
-
-
-class CtanEclassGenerator(EclassGenerator):
- """
- Implementation of eclass generator. Only specifies a data directory.
- """
- def __init__(self):
- super(CtanEclassGenerator, self).__init__(os.path.join(get_pkgpath(__file__), 'data'))
-
-
-#Backend instance to be loaded by g_sorcery
-instance = Backend(CtanDBGenerator,
- CtanEbuildWithDigestGenerator, CtanEbuildWithoutDigestGenerator,
- CtanEclassGenerator, MetadataGenerator)
diff --git a/gs_ctan/ctan_db.py b/gs_ctan/ctan_db.py
deleted file mode 100644
index 0f7d939..0000000
--- a/gs_ctan/ctan_db.py
+++ /dev/null
@@ -1,210 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
- ctan_db.py
- ~~~~~~~~~~
-
- CTAN package database
-
- :copyright: (c) 2013 by Jauhien Piatlicki
- :license: GPL-2, see LICENSE for more details.
-"""
-
-import itertools
-import re
-
-import portage
-
-from g_sorcery.g_collections import Dependency, Package, serializable_elist
-from g_sorcery.package_db import DBGenerator
-from g_sorcery.logger import Logger
-
-class CtanDBGenerator(DBGenerator):
- """
- Implementation of database generator for CTAN LaTeX backend.
- """
- def __init__(self, package_db_class):
- super(CtanDBGenerator, self).__init__(package_db_class)
-
- logger = Logger()
- gentoo_arch = portage.settings['ARCH']
- self.arch = ""
- if gentoo_arch == "x86":
- self.arch = "i386-linux"
- elif gentoo_arch == "amd64":
- self.arch = "x86_64-linux"
- else:
- logger.warning("not supported arch: " + gentoo_arch)
-
-
- def get_download_uries(self, common_config, config):
- """
- Get download URI.
- """
- tlpdb_uri = config["repo_uri"] + "/tlpkg/texlive.tlpdb.xz"
- return [tlpdb_uri]
-
- def parse_data(self, data_f):
- """
- Parse downloaded data.
-
- Parsed data is a list of dictionaries.
- Each dictionary corresponds to one package.
-
- Args:
- data_f: Open file wit data.
-
- Returns:
- Parsed data.
- """
- data = data_f.read()
-
- data = data.split("\n")
-
- #entries are separated by new lines
- data = \
- [list(group) for key, group in itertools.groupby(data, bool) if key]
-
- #we need only Package entries
- data = \
- [entry for entry in data if entry[1] == "category Package"]
-
- result = []
-
- KEY = 0
- VALUE = 1
- FILES_LENGTH = len("files")
-
- for entry in data:
- res_entry = {}
- previous_key = ""
- current_key = ""
- for line in entry:
- line = line.split(" ")
- if line[KEY][-FILES_LENGTH:] == "files":
- current_key = line[KEY]
- res_entry[current_key] = {}
- for value in line[VALUE:]:
- key, val = value.split("=")
- res_entry[current_key][key] = val
- res_entry[current_key]["files"] = []
- elif not line[KEY]:
- res_entry[current_key]["files"].append(" ".join(line[VALUE:]))
- elif line[KEY] == "depend":
- if "depend" in res_entry:
- res_entry["depend"].append(" ".join(line[VALUE:]))
- else:
- res_entry["depend"] = [" ".join(line[VALUE:])]
- else:
- if previous_key == line[KEY]:
- res_entry[previous_key] += " " + " ".join(line[VALUE:])
- else:
- res_entry[line[KEY]] = " ".join(line[VALUE:])
- previous_key = line[KEY]
- current_key = ""
-
- parts = res_entry["name"].split(".")
- if len(parts) > 1:
- if parts[1] != self.arch:
- continue
-
- result.append(res_entry)
-
- return result
-
- def process_data(self, pkg_db, data, common_config, config):
- """
- Process parsed data and fill database.
- """
-
- category = "dev-tex"
-
- pkg_db.add_category(category)
-
- ARCH_LENGTH = len("ARCH")
-
- data = data["texlive.tlpdb"]
-
- for entry in data:
- realname = entry["name"]
-
- pkgname = realname
- parts = pkgname.split(".")
- if len(parts) > 1:
- pkgname = "_".join(parts)
-
- if self.in_config([common_config, config], "exclude", pkgname):
- continue
-
- #todo: work on common data vars processing: external deps, filtering etc.
- #at the moment just copy necessary code from elpa_db.py
- allowed_ords = set(range(ord('a'), ord('z'))) | set(range(ord('A'), ord('Z'))) | \
- set(range(ord('0'), ord('9'))) | set(list(map(ord,
- ['+', '_', '-', ' ', '.', '(', ')', '[', ']', '{', '}', ','])))
-
- if "shortdesc" in entry:
- description = entry["shortdesc"]
- else:
- description = entry["name"]
- description = "".join([x for x in description if ord(x) in allowed_ords])
-
- if "longdesc" in entry:
- longdescription = entry["longdesc"]
- longdescription = "".join([x for x in longdescription if ord(x) in allowed_ords])
- else:
- longdescription = description
-
- if "catalogue-version" in entry:
- version = entry["catalogue-version"]
- #todo better version checking and processing
- match_object = re.match("(^[0-9]+[a-z]?$)|(^[0-9][0-9\.]+[0-9][a-z]?$)", version)
- if not match_object:
- version = entry["revision"]
- else:
- version = entry["revision"]
-
- if "catalogue-license" in entry:
- license = self.convert([common_config, config], "licenses", entry["catalogue-license"])
- else:
- license = "unknown"
-
- if "catalogue-ctan" in entry:
- source_type = "zip"
- base_src_uri = "ftp://tug.ctan.org/pub/tex-archive"
- catalogue = entry["catalogue-ctan"]
- homepage = "http://www.ctan.org/tex-archive" + catalogue
- catalogue = catalogue[:-len(realname)]
- else:
- source_type = "tar.xz"
- base_src_uri = "http://mirror.ctan.org/systems/texlive/tlnet/archive/"
- catalogue = ""
- homepage = "http://www.ctan.org/tex-archive/systems/texlive/tlnet"
-
- dependencies = serializable_elist(separator="\n\t")
-
- if "depend" in entry:
- for dependency in entry["depend"]:
- if dependency[-ARCH_LENGTH:] == "ARCH":
- dependency = dependency[:-ARCH_LENGTH-1] + "_" + self.arch
- dependencies.append(Dependency(category, dependency))
-
- ebuild_data = {"realname" : realname,
- "description" : description,
- "homepage" : homepage,
- "license" : license,
- "source_type" : source_type,
- "base_src_uri" : base_src_uri,
- "catalogue" : catalogue,
- "dependencies" : dependencies,
- "depend" : dependencies,
- "rdepend" : dependencies,
- #eclass entry
- 'eclasses' : ['gs-ctan'],
- #metadata entries
- 'maintainer' : [{'email' : 'piatlicki@gmail.com',
- 'name' : 'Jauhien Piatlicki'}],
- 'longdescription' : longdescription
- }
-
- pkg_db.add_package(Package(category, pkgname, version), ebuild_data)
diff --git a/gs_ctan/data/gs-ctan.eclass b/gs_ctan/data/gs-ctan.eclass
deleted file mode 100644
index b2124ed..0000000
--- a/gs_ctan/data/gs-ctan.eclass
+++ /dev/null
@@ -1,102 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-# automatically generated by gs-ctan
-# please do not edit this file
-#
-# TODO: write common base eclass for g-sorcery
-#
-# Original Author: Jauhien Piatlicki <piatlicki@gmail.com>
-# Purpose: support installation of latex packages
-# from overlays generated by gs-ctan
-#
-# Bugs to piatlicki@gmail.com
-#
-# @ECLASS: gs-ctan.eclass
-#
-# @ECLASS-VARIABLE: BASE_SRC_URI
-# @DESCRIPTION: address of a repository with packages
-#
-# @ECLASS-VARIABLE: CATALOGUE
-# @DESCRIPTION: directory on the server where package lives
-#
-# @ECLASS-VARIABLE: SOURCE_TYPE
-# @DESCRIPTION: type of a package (zip or tar.xz)
-#
-# @ECLASS-VARIABLE: DIGEST_SOURCES
-# @DESCRIPTION: whether manifest for sources exists
-#
-# @ECLASS-VARIABLE: REALNAME
-# @DESCRIPTION: real name of a package in the repository
-#
-# @ECLASS-VARIABLE: GSCTAN_STORE_DIR
-# @DESCRIPTION: store location for downloaded sources
-GSCTAN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}"
-#
-# @ECLASS-VARIABLE: GSCTAN_FETCH_CMD
-# @DESCRIPTION: fetch command
-GSCTAN_FETCH_CMD="wget"
-
-inherit latex-package
-
-if [[ ${SOURCE_TYPE} = "zip" ]]; then
- EXPORT_FUNCTIONS src_{unpack,compile,install}
-else
- EXPORT_FUNCTIONS src_{unpack,install}
-fi
-
-SUFFIX="${SOURCE_TYPE}"
-SOURCEFILE=${REALNAME}.${SUFFIX}
-
-gs-ctan_fetch() {
- addwrite "${GSCTAN_STORE_DIR}"
- pushd "${GSCTAN_STORE_DIR}" >/dev/null || die "can't chdir to ${GSCTAN_STORE_DIR}"
- if [[ ! -f "${SOURCEFILE}" ]]; then
- $GSCTAN_FETCH_CMD ${BASE_SRC_URI}${CATALOGUE}${SOURCEFILE} || die
- fi
- popd >/dev/null || die
-}
-
-gs-ctan_src_unpack() {
- if [[ ${SOURCE_TYPE} = "zip" ]]; then
- if [[ x${DIGEST_SOURCES} = x ]]; then
- gs-ctan_fetch
- fi
- cp ${GSCTAN_STORE_DIR}/${SOURCEFILE} . || die
- unzip ${SOURCEFILE} || die
- mv ${PN} ${P} || die
- else
- if [[ x${DIGEST_SOURCES} = x ]]; then
- gs-ctan_fetch
- fi
- mkdir ${S} || die
- cd ${S} || die
- tar xvf ${GSCTAN_STORE_DIR}/${SOURCEFILE} || die
- rm -rf tlpkg || die
- fi
-}
-
-gs-ctan_src_compile() {
- cd ${S} || die
- latex-package_src_compile
- for d in `ls -d -- */`; do
- pushd ${d} || die
- latex-package_src_compile
- popd || die
- done
-}
-
-gs-ctan_src_install() {
- if [[ ${SOURCE_TYPE} = "zip" ]]; then
- cd ${S} || die
- latex-package_src_install
- for d in `ls -d -- */`; do
- pushd ${d} || die
- latex-package_src_install
- popd || die
- done
- else
- insinto ${TEXMF}
- doins -r *
- fi
-}
diff --git a/gs_ctan/ebuild.py b/gs_ctan/ebuild.py
deleted file mode 100644
index 2ba154b..0000000
--- a/gs_ctan/ebuild.py
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
- ebuild.py
- ~~~~~~~~~
-
- ebuild generation
-
- :copyright: (c) 2013 by Jauhien Piatlicki
- :license: GPL-2, see LICENSE for more details.
-"""
-
-import collections
-
-from g_sorcery.ebuild import DefaultEbuildGenerator
-
-Layout = collections.namedtuple("Layout",
- ["vars_before_inherit", "inherit", "vars_after_description", "vars_after_keywords"])
-
-
-class CtanEbuildWithoutDigestGenerator(DefaultEbuildGenerator):
- """
- Implementation of ebuild generator without sources digesting.
- """
- def __init__(self, package_db):
-
- vars_before_inherit = \
- ["base_src_uri", "catalogue", "source_type", "realname"]
-
- inherit = ["gs-ctan"]
-
- vars_after_description = \
- ["homepage", {"name" : "src_uri", "value" : ""}, "license"]
-
- vars_after_keywords = \
- ["depend", "rdepend"]
-
- layout = Layout(vars_before_inherit, inherit, vars_after_description, vars_after_keywords)
-
- super(CtanEbuildWithoutDigestGenerator, self).__init__(package_db, layout)
-
-class CtanEbuildWithDigestGenerator(DefaultEbuildGenerator):
- """
- Implementation of ebuild generator with sources digesting.
- """
- def __init__(self, package_db):
-
- vars_before_inherit = \
- ["base_src_uri", "catalogue", "source_type", "realname", {"name" : "digest_sources", "value" : "yes"}]
-
- inherit = ["gs-ctan"]
-
- vars_after_description = \
- ["homepage", {"name" : "src_uri", "value" : "${BASE_SRC_URI}${CATALOGUE}${REALNAME}.${SOURCE_TYPE} -> ${P}.${SOURCE_TYPE}"}, "license"]
-
- vars_after_keywords = \
- ["depend", "rdepend"]
-
- layout = Layout(vars_before_inherit, inherit, vars_after_description, vars_after_keywords)
-
- super(CtanEbuildWithDigestGenerator, self).__init__(package_db, layout)
diff --git a/setup.py b/setup.py
index 9a1291a..80e8421 100644
--- a/setup.py
+++ b/setup.py
@@ -7,16 +7,13 @@ setup(name = 'g-sorcery',
description = 'g-sorcery framework for automated ebuild generators',
author = 'Jauhien Piatlicki',
author_email = 'jauhien@gentoo.org',
- packages = ['g_sorcery', 'gs_db_tool', 'gs_ctan', 'gs_pypi'],
+ packages = ['g_sorcery', 'gs_db_tool', 'gs_pypi'],
package_data = {'g_sorcery': ['data/*'],
- 'gs_pypi': ['data/*'],
- 'gs_ctan': ['data/*']},
+ 'gs_pypi': ['data/*']},
scripts = ['bin/g-sorcery', 'bin/gs-db-tool',
- 'bin/gs-ctan', 'bin/gs-pypi-generate-db', 'bin/gs-pypi'],
- data_files = [('/etc/g-sorcery/', ['gs-ctan.json']),
- ('/etc/g-sorcery/', ['gs-pypi.json']),
+ 'bin/gs-pypi-generate-db', 'bin/gs-pypi'],
+ data_files = [('/etc/g-sorcery/', ['gs-pypi.json']),
('/etc/g-sorcery/', ['g-sorcery.cfg']),
- ('/etc/layman/overlays/', ['gs-ctan-overlays.xml']),
('/etc/layman/overlays/', ['gs-pypi-overlays.xml'])],
license = 'GPL',
)