Comprehensive TeX Archive Network

Production Notes for Version 2.0.3

In 2012 a relaunch of the Web pages for CTAN has been prepared. It should replace the pages of the former years. Thus for continuity several features had to be preserved and supported. Those are mainly encapsulated behind fixed URLs.

End of 2016 the personalization feature of the CTNA portal has been made public. This allows the users to interact with the portal in more ways.



The web pages can be rendered is various ways. Several skins are provided to accommodate different tastes of the users.

The selection of the skin is persisted even when the user does not use a personalized login.

Typography on the Web: Responsive Web Design

The web pages can be rendered on various output devises with different screen sizes. The portal pages adapt to the space available as good as possible.

Typography on the Web: Logos from the World

The world knows several characteristic word types for programs or macro packages. Those logos are shown whenever possible.

Since some users prefer to see the pure ASCII representation of the logos it is possible to select a respective setting.

Typography on the Web: Hyphenation

The typography on the web is restricted by the possibilities of the various browsers. In the area of line breaking things are evolving slowly. Thus we have to help the browsers by inserting optional break points – soft hyphens – to help the browsers to produce properly filled lines.

The portal uses 's hyphenation algorithm (by Frank Liang) to insert soft hyphens. The hyphenation uses the base hyphenation patterns and exceptions for American English.

Search: Static Content

This portal has a few static pages. The search finds contents on these static pages.

Search: Authors

The authors of packages as contained in the Catalogue are searchable by name.

Search: Topics

The topics for packages as contained in the Catalogue are searchable.

Search: Packages

The packages as contained in the Catalogue is searchable. At least the name and description are considered.

Upload: Form

A upload form is provided which allows a user to submit a contribution.

Upload: Initializing Fields

The fields in the upload form are initialized whenever possible. The name of the submitter can be filled with the information of the logged in user. The package can be filled if the upload in started from a package page or a page associated to a package in the archive.

Mirrors: List

A page containing a list of all CTAN mirrors is provided.

Visualization of CTAN Mirrors on a Map

It would be nice to have a world map with the CTAN mirrors marked. Maybe Google Maps might be helpful. [Mojca Miklavec]

Mirrors: Registration

A form to submit a registration of a new mirror site is provided.

Browsing: texarchive

The archive can be browsed. The files and directories are listed.

Downloading of a whole directory is enabled if a zip file with the contents exists. This zip file is suppressed in the listing.

A file named README.md, README.txt, or README is displayed if present in a directory.

A file named .zipped is suppressed in the listing.

Browser in tex-archive explains file types

An explanation about file types is provided by the browser. This is shown as tool tip.

Browsing: Links

The single files presented are linked to the multiplexer at http://mirrors.ctan.org to distribute the load to the mirrors.

Packages: Links

The descriptions of the packages from the Catalogue are accessible via the URL /pkg/<package name>.

Authors: Links

The descriptions of the package authors from the Catalogue are accessible via the URL /author/<author id>.

Community Features: User Registration

A user can join the community and register an account. The initial password is sent by email to the user to check that the email address works.

Community Features: User Settings

The user can change his settings – except account name. This works only if the user is logged in.

Community Features: User Login

The user can login and logout.

For this purpose a login page is provided. This page has additional functionality for requesting forgotten account name and password as well as registration.

For a fast access a drop-down login panel is provided on each page.

Community Features: User Password

If the user has forgot his password he can request a new password by entering his account and email. The new password can be entered on a page for which the URL is sent by email.

Community Features: User Account

If the user has forgot his account he can request the account. The account name is sent by email.

Community Features: Guest Book

A guest book can be used to leave some comments on the CTAN portal.

Rating Packages

Packages can be rated with 1 to 5 stars. The average is shown. Only a logged in user can rate. If a user rates several times then only the last rating is taken into account. Thus a single user can not raise a rating to the sky. The rating can be changed and deleted.

In addition to the rating the user can leave a comment which is visible for all users.

Data Sources

The portal provides access to several sources of information. Some of them are uniquely presented on these pages.

The Catalogue

The Catalogue is a collection of package descriptions. The Catalogue is maintained by the CTAN team.

The Archive

The archive is a directory structure hosted by the CTAN sites. The CTAN portal directly accesses one of the major CTAN sites when browsing pages.

The Mirrors Database

The CTAN team maintains a database containing the CTAN mirrors.

The Mirror Monitor

The monitor for the status of the CTAN mirrors is provided on ctan.dante.org. This page is rendered with the layout of the CTAN portal.

The LUG Database

NTG maintains a database containing the local user groups. This information is retrieved and imported into the CTAN database regularly and presented on CTAN.


The portal is based on a bunch of well-established frameworks and libraries. All of them are rooted in the Open Source world. Only with the help of those software components this portal could come to live.

The Web application is based on Grails. Grails utilizes a lot of well-known frameworks and libraries like Spring, Hibernate, Groovy, and log4j.

The authentication and authorization is based on Spring Security via the Grails Spring Security Plugin.

The search functionality has been implemented with the Apache Lucene search engine.

The indexing of the search utilizes Apache PDFBox to access the contents of PDF files.

The dynamic effects of the Web interface make use of jQuery, jQuery UI, and Lightbox

Some icons are taken from Font Awesome by Dave Gandy.

The underlying Grails project has been augmented with a Maven POM. Thus it is possible to build the system with the Maven commands. Nevertheless the file organization follows the Grails conventions. (After all I am not convinced by this solution. I prefer the Grails commands)

The front-end dispatching is performed by an Apache HTTPD Web Server. The back-end is a web application running in a Apache Tomcat servlet container.

The data is mainly stored in a PostgreSQL database.

Regular jobs are performed by Quartz jobs running in the web application.

The monitoring of the mirrors is performed with the help of mirmon.

Many thanks to all people who helped developing and maintaining these useful software packages.

Guest Book Sitemap Contact Contact Author