I have created a template and some macros that I would like to share. How can I contribute them to CTAN?

  • 5
    Ego battle for upvotes in the answers =)
    – Dima
    Aug 3, 2010 at 16:31
  • 3
    Not really :-) As I said, Will's answer is spot on, it's just that I'd just finished drafting mine when his popped up, and I hope mine provides a few 'immediate' pointers on what to do.
    – Joseph Wright
    Aug 3, 2010 at 20:10
  • 1
    Related: (adding comment for the link) What is good practice when preparing a package for CTAN?.
    – Alan Munn
    Jan 2, 2018 at 15:55

2 Answers 2


Great! The process is simple. Everything is explained on the upload page (see below for the actual links). My own guidelines are listed below.

  1. Make sure the material is licensed appropriately. Most LaTeX package are licensed under the LPPL, but you can also use the GPL or one of the Apache/BSD/MIT licenses if you wish.

  2. Make sure that you include the sources to any pre-built files (where appropriate: files such as images do not have 'sources'). PDFs without source files are not permitted in TeX Live. The usual system for LaTeX packages is to use a DTX file as a combined source/documentation file that can be typeset to PDF, or extracted to a STY or CLS file using an INS file -- this is known as the ‘docstrip’ system. See Scott Pakin's dtxtut for good guidelines here.

  3. If you're not using docstrip for your package source, make sure the material is documented; a package without PDF documentation will probably not be accepted these days. Remember to include a readme file (called README, i.e., without an extension) that briefly explains the package.

  4. Check the naming of things. The names of your files shouldn't conflict with anything on CTAN or anything in TeX Live/MiKTeX. The more specific the name can be, the better. E.g., don't call a conference class anything like conference.cls; refer explicitly to which conference it is to be used for, such as active-conf-2006.cls.

Having done that, take your files and bundle them up in a ZIP or TAR.BZ (or etc.) archive and upload it.

  • There's only one additional thing I'd like to know here, which I haven't found explicitly stated anywhere: is there an approval/vetting process (must be, if a person will process the upload); how long does it approx. take; and how do you get notified of the approval results (if any, beyond the package starting to show up on the CTAN site)?
    – sdaau
    Jul 7, 2014 at 17:40
  • 1
    As far as I know there is no real approval/vetting process as long as the package doesn't clash with anything in terms of filenames and everything looks sensible. In terms of timeframes, that depends on the TeX Live development process (during a TL freeze things can be held back for a short time) and also how busy the CTAN volunteers are. Jul 10, 2014 at 10:06

I see Will has answered this, but I'm going to give the same information in a slightly different form!

The upload page at http://www.ctan.org/upload contains some advice, as well as an upload form. You only have to upload the files themselves, but it is usual to include some kind of README file and also probably some documentation. If you have a package called 'mypkg', you might therefore want to upload:

  • mypkg.sty, the package itself
  • mypkg.pdf, the documentation
  • mypkg.tex, the source for the documentation (needed to get the documentation into TeX Live)
  • README, the readme file

All of that needs to go into a single zip file, which you then upload.

A lot of LaTeX packages are written in 'dtx' format, which puts the source for the documentation and the code into one file. This is also used to document the code itself. If you use dtx format, then you'd upload

  • mypkg.dtx, the source file
  • mypkg.ins, used to unpack the dtx file
  • mypkg.pdf, the documentation
  • README, the readme file

Again, everything goes into one zip file and gets uploaded using the form on the CTAN website.

There are additional things that you can upload, but to begin with I think this is where to start.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.