CTAN Comprehensive TeX Archive Network

Help on CTAN

How can I upload a package?

A package can be uploaded to CTAN on the upload form. On this upload form you are requested to fill in some information about you and the package. They are required for the categorization and processing on CTAN. The package itself is uploaded in an archive file which contains all files belonging to the package.

The following list contains some rules how to prepare your package for CTAN.

  • Please package your contribution as a ZIP archive with extension .zip or a gzip-ed tar archive with the extension .tar.gz or .tgz.

    The CTAN team has decided that packages on the archive shall remain in a browsing-friendly layout, i.e. the best format is to have all the files inside a directory, as illustrated here.

    my-package.zip:
      my-package/
        README.md
        my-package.dtx
        my-package.ins
        my-package-doc.pdf

    Here my-package should be the CTAN name of your package.

  • Very large packages – such as modern font distributions – are improved by a single extra layer of directories:

    my-package.zip:
      my-package/
        README.md
        doc/
          my-package-doc.tex
          my-package-doc.pdf
        tex/
          use-my-package.sty
          t1my-package.fd
          ...
        source/
          my-package.sfd
          my-package-Italic.sfd
          ...
        ...

    and so on.

  • In parallel to the main directory tree, CTAN offers the possibility to provide a TDS-structured ZIP file. Such a file will only be accepted as an addition to your upload, not as a replacement.

    This file is not necessary at all for simple packages. Thus it should be omitted for instance for normal packages. This file might be required when the package is complex.

    If you want to include such a file in your upload, please check the TDS guidelines. Call this file my-package.tds.zip and include it at the top-level of your upload (alongside the my-package directory).

    my-package.zip:
      my-package.tds.zip
      my-package/
        README.md
        ...
  • Even if you are sending us a revision of an existing package, please send all of the files, changed or not. We have tools to handle whole uploads so this leads to the fewest errors on our part.

  • CTAN holds thousands of packages, and many more thousand files. Our visitors will be helped, and your work will get the recognition it deserves, only if people can find your package.

    • Include in your upload a plain text file with information that would be useful to a CTAN visitor considering using your package. This information includes a brief description and license information, as well as whether your material requires special fonts or only runs on one kind of platform. Name this file README.md, or simply README because then it will show up on the CTAN portal prominently rendered when that user is browsing your directory. This file should be stored with the encoding UTF-8.

      For an international audience it would be best to write the README file in English. You can provide another README file in another language if you want to.

      Include in the README.md or README file a statement giving your choice of license. That way people who are browsing can see whether your material is available to them (e.g., if your license choice excludes commercial use). Something like: This material is subject to the Project Public License 1.3c.

    • Almost all packages should have documentation beyond the README.md or README. It should be in PDF format, since this is what our web visitors can read; in particular, PostScript and DVI formats are not acceptable. Include its source in your upload since free distributions such as  Live cannot use the document without source.

      For many package authors, producing the documentation is a matter of running your .dtx file through :

        latex <docname>.dtx

  • The package should not contain files which can be generated from other files in your package – beside the documentation. Thus the intermediary files produced by or must not be contained.

    For packages which contain a dtx file the files which are generated from this dtx file must not be contained.

While you are preparing a package the uploading to CTAN you might find a supporting package useful. See the topic ctan for such packages.

Some additional practical tips can be found in the Additional Information for CTAN Uploaders. You may also find helpful the information at https://tug.org/texlive/pkgcontrib.html.

Guest Book Sitemap Contact Contact Author