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
Typography on the Web: Logos from the TeX World
The TeX 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 TeX'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
The authors of packages as contained in the Catalogue are searchable by
The topics for packages as contained in the Catalogue are searchable.
The packages as contained in the Catalogue is searchable. At least the
name and description are considered.
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 TeX archive.
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]
A form to submit a registration of a new mirror site is provided.
The TeX archive can be browsed. The files and directories are
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.
The single files presented are linked to the multiplexer
at http://mirrors.ctan.org to
distribute the load to the mirrors.
The descriptions of the packages from the Catalogue are accessible via
the URL /pkg/<package name>.
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
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.
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.
The portal provides access to several sources of information. Some of
them are uniquely presented on these pages.
The TeX Catalogue
The TeX Catalogue is a collection of package descriptions. The TeX
Catalogue is maintained by the CTAN team.
The TeX Archive
The TeX archive is a directory structure hosted by the CTAN sites.
The CTAN portal directly accesses one of the major CTAN sites when
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
The LUG Database
NTG maintains a database containing the local TeX 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
The Web application is based on
Grails. Grails utilizes a
lot of well-known frameworks and libraries like
The authentication and authorization is based on Spring Security via
the Grails Spring
The search functionality has been implemented with the
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 UI, and
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
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
The data is mainly stored in a
Regular jobs are performed by
Quartz jobs running in the
The monitoring of the mirrors is performed with the help of
Many thanks to all people who helped developing and maintaining these
useful software packages.