Comprehensive TeX Archive Network

Pro­duc­tion Notes for Ver­sion 2.2.2

In 2012 a re­launch of the Web pages for CTAN has been pre­pared. It should re­place the pages of the for­mer years. Thus for con­ti­nu­ity sev­eral fea­tures had to be pre­served and sup­ported. Those are mainly en­cap­su­lated be­hind fixed URLs.

End of 2016 the per­son­al­iza­tion fea­ture of the CTNA por­tal has been made pub­lic. This al­lows the users to in­ter­act with the por­tal in more ways.



The web pages can be ren­dered is var­i­ous ways. Sev­eral skins are pro­vided to ac­com­mo­date dif­fer­ent tastes of the users.

The se­lec­tion of the skin is per­sisted even when the user does not use a per­son­al­ized lo­gin.

Ty­pog­ra­phy on the Web: Re­spon­sive Web De­sign

The web pages can be ren­dered on var­i­ous out­put de­vises with dif­fer­ent screen sizes. The por­tal pages adapt to the space avail­able as good as pos­si­ble.

Ty­pog­ra­phy on the Web: Lo­gos from the World

The world knows sev­eral char­ac­ter­is­tic word types for pro­grams or macro pack­ages. Those lo­gos are shown when­ever pos­si­ble.

Since some users pre­fer to see the pure ASCII rep­re­sen­ta­tion of the lo­gos it is pos­si­ble to se­lect a re­spec­tive set­ting.

Ty­pog­ra­phy on the Web: Hyphen­ation

The ty­pog­ra­phy on the web is re­stricted by the pos­si­bil­i­ties of the var­i­ous browsers. In the area of line break­ing things are evolv­ing slowly. Thus we have to help the browsers by in­sert­ing op­tional break points – soft hy­phens – to help the browsers to pro­duce prop­erly filled lines.

The por­tal uses 's hy­phen­ation al­go­rithm (by Frank Liang) to in­sert soft hy­phens. The hy­phen­ation uses the base hy­phen­ation pat­terns and ex­cep­tions for Amer­i­can English.

Search: Static Con­tent

This por­tal has a few static pages. The search finds con­tents on these static pages.

Search: Authors

The au­thors of pack­ages as con­tained in the Cat­a­logue are search­able by name.

Search: Topics

The top­ics for pack­ages as con­tained in the Cat­a­logue are search­able.

Search: Pack­ages

The pack­ages as con­tained in the Cat­a­logue is search­able. At least the name and de­scrip­tion are con­sid­ered.

Upload: Form

A up­load form is pro­vided which al­lows a user to sub­mit a con­tri­bu­tion.

Upload: Ini­tial­iz­ing Fields

The fields in the up­load form are ini­tial­ized when­ever pos­si­ble. The name of the sub­mit­ter can be filled with the in­for­ma­tion of the logged in user. The pack­age can be filled if the up­load in started from a pack­age page or a page as­so­ci­ated to a pack­age in the archive.

Mir­rors: List

A page con­tain­ing a list of all CTAN mir­rors is pro­vided.

Visu­al­iza­tion of CTAN Mir­rors on a Map

It would be nice to have a world map with the CTAN mir­rors marked. Maybe Google Maps might be help­ful. [Mo­jca Miklavec]

Mir­rors: Regis­tra­tion

A form to sub­mit a reg­is­tra­tion of a new mir­ror site is pro­vided.

Brows­ing: texarchive

The archive can be browsed. The files and di­rec­to­ries are listed.

Down­load­ing of a whole di­rec­tory is en­abled if a zip file with the con­tents ex­ists. This zip file is sup­pressed in the list­ing.

A file named README.md, README.txt, or README is dis­played if present in a di­rec­tory.

A file named .zipped is sup­pressed in the list­ing.

Browser in tex-archive ex­plains file types

An ex­pla­na­tion about file types is pro­vided by the browser. This is shown as tool tip.

Brows­ing: Links

The sin­gle files pre­sented are linked to the mul­ti­plexer at http://mir­rors.ctan.org to dis­tribute the load to the mir­rors.

Pack­ages: Links

The de­scrip­tions of the pack­ages from the Cat­a­logue are ac­ces­si­ble via the URL /pkg/<pack­age name>.

Authors: Links

The de­scrip­tions of the pack­age au­thors from the Cat­a­logue are ac­ces­si­ble via the URL /au­thor/<au­thor id>.

Com­mu­nity Fea­tures: User Regis­tra­tion

A user can join the com­mu­nity and reg­is­ter an ac­count. The ini­tial pass­word is sent by email to the user to check that the email ad­dress works.

Com­mu­nity Fea­tures: User Set­tings

The user can change his set­tings – ex­cept ac­count name. This works only if the user is logged in.

Com­mu­nity Fea­tures: User Lo­gin

The user can lo­gin and lo­gout.

For this pur­pose a lo­gin page is pro­vided. This page has ad­di­tional func­tion­al­ity for re­quest­ing for­got­ten ac­count name and pass­word as well as reg­is­tra­tion.

For a fast ac­cess a drop-down lo­gin panel is pro­vided on each page.

Com­mu­nity Fea­tures: User Pass­word

If the user has for­got his pass­word he can re­quest a new pass­word by en­ter­ing his ac­count and email. The new pass­word can be en­tered on a page for which the URL is sent by email.

Com­mu­nity Fea­tures: User Ac­count

If the user has for­got his ac­count he can re­quest the ac­count. The ac­count name is sent by email.

Com­mu­nity Fea­tures: Guest Book

A guest book can be used to leave some com­ments on the CTAN por­tal.

Rat­ing Pack­ages

Pack­ages can be rated with 1 to 5 stars. The av­er­age is shown. Only a logged in user can rate. If a user rates sev­eral times then only the last rat­ing is taken into ac­count. Thus a sin­gle user can not raise a rat­ing to the sky. The rat­ing can be changed and deleted.

In ad­di­tion to the rat­ing the user can leave a com­ment which is vis­i­ble for all users.

Data Sources

The por­tal pro­vides ac­cess to sev­eral sources of in­for­ma­tion. Some of them are uniquely pre­sented on these pages.

The Cat­a­logue

The Cat­a­logue is a col­lec­tion of pack­age de­scrip­tions. The Cat­a­logue is main­tained by the CTAN team.

The Archive

The archive is a di­rec­tory struc­ture hosted by the CTAN sites. The CTAN por­tal di­rectly ac­cesses one of the ma­jor CTAN sites when brows­ing pages.

The Mir­rors Database

The CTAN team main­tains a database con­tain­ing the CTAN mir­rors.

The Mir­ror Mon­i­tor

The mon­i­tor for the sta­tus of the CTAN mir­rors is pro­vided on ctan.dante.org. This page is ren­dered with the lay­out of the CTAN por­tal.

The LUG Database

NTG main­tains a database con­tain­ing the lo­cal user groups. This in­for­ma­tion is re­trieved and im­ported into the CTAN database reg­u­larly and pre­sented on CTAN.


The por­tal is based on a bunch of well-es­tab­lished frame­works and li­braries. All of them are rooted in the Open Source world. Only with the help of those soft­ware com­po­nents this por­tal could come to live.

The Web ap­pli­ca­tion is based on Grails. Grails uti­lizes a lot of well-known frame­works and li­braries like Spring, Hiber­nate, Groovy, and log4j.

The au­then­ti­ca­tion and au­tho­riza­tion is based on Spring Se­cu­rity via the Grails Spring Se­cu­rity Plu­gin.

The search func­tion­al­ity has been im­ple­mented with the Apache Lucene search en­gine.

The in­dex­ing of the search uti­lizes Apache PDFBox to ac­cess the con­tents of PDF files.

The dy­namic ef­fects of the Web in­ter­face make use of jQuery, jQuery UI, and Light­box

Some icons are taken from Font Awe­some by Dave Gandy.

The un­der­ly­ing Grails project has been aug­mented with a Maven POM. Thus it is pos­si­ble to build the sys­tem with the Maven com­mands. Nev­er­the­less the file or­ga­ni­za­tion fol­lows the Grails con­ven­tions. (After all I am not con­vinced by this so­lu­tion. I pre­fer the Grails com­mands)

The front-end dis­patch­ing is per­formed by an Apache HTTPD Web Server. The back-end is a web ap­pli­ca­tion run­ning in a Apache Tom­cat servlet con­tainer.

The data is mainly stored in a Post­greSQL database.

Reg­u­lar jobs are per­formed by Quartz jobs run­ning in the web ap­pli­ca­tion.

The mon­i­tor­ing of the mir­rors is per­formed with the help of mir­mon.

Many thanks to all peo­ple who helped de­vel­op­ing and main­tain­ing these use­ful soft­ware pack­ages.

Guest Book Sitemap Contact Contact Author