Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) Standard preamble: ========================================================================
NAMEctanify - Prepare a package for upload to CTAN
SYNOPSISctanify [--pkgname=string] [--[no]auto] [--tdsonly=filespec ...] [--[no]unixify] [--[no]skip] [--tdsdir=dirname ...] [--tex=macro_pkg] [--[no]miscify] [--[no]tds] filespec[=dirname] ...
DESCRIPTIONctanify is intended for developers who have a LaTeX package that they want to distribute via the Comprehensive TeX Archive Network (
OPTIONSctanify accepts the following command-line options:
- -h, --help
- Output basic usage information and exit.
- -V, --version
- Output ctanify's version number and exit.
- -p string, --pkgname=string
- Specify explicitly a package name. Normally, ctanify uses the base name of the first .ins or .sty file listed as the package name. The package name forms the base name of the tarball that ctanify produces.
- Do not automatically add files to the tarball. Normally, ctanify automatically includes all files mentioned in a .ins file.
- -t filespec, --tdsonly=filespec
Specify a subset of the files named on the command line to include
only in the TDS ZIPfile, not in theCTANpackage directory. Wildcards are allowed (quoted if necessary), and --tdsonly can be used multiple times on the same command line.
At least one filename must be specified on the command line. ctanify automatically places files in the
ADDITIONAL OPTIONSThe following options are unlikely to be necessary in ordinary usage. They are provided for special circumstances that may arise.
- -d dirname, --tdsdir=dirname
Instead of creating a tarball for CTAN,merely create the packageTDStree rooted in directory dirname.
- -T macro_pkg, --tex=macro_pkg
Assert that the files being packaged for CTANtarget a TeX macro package other than LaTeX. Some common examples of macro_pkg are "generic", "plain", and "context".
- -nou, --no-unixify
Store text files unmodified instead of converting their end-of-line
character to Unix format (a single linefeed character with no
carriage-return character), even though CTANprefers receiving all files with Unix-format end-of-line characters.
- -nok, --no-skip
Force ctanify to include files such as Unix hidden files, Emacs
backup files, and version-control metadata files, all of which CTANdislikes receiving.
- -m, --miscify
- Rename directories containing a single file to "misc". (For example, rename "tex/latex/mypackage/mypackage.sty" to "tex/latex/misc/mypackage.sty".) This was common practice in the past but is now strongly discouraged.
- -nos, --no-tds
- Do not embed a .tds.zip file in the generated tarball.
- Failed to copy filename (No such file or directory)
- This message is typically caused by a.ins file that generates filename but that has not already been run through tex or latex to actually produce filename. ctanify does not automatically run tex or latex; this needs to be done manually by the user. See ``CAVEATS''for more information.
- Modified filename to use Unix line endings (use --no-unixify to prevent this)
- For consistency,CTANstores all text files with Unix-style line endings (a single linefeed character with no carriage-return character). To help in this effort, ctanify automatically replaces non-Unix-style line endings. The preceding merely message notifies the user that he should not be alarmed to see a different size for filename in the tarball versus the original filename on disk (which ctanify never modifies). If there's a good reason to preserve the original line endings (and there rarely is), the --no-unixify option can be used to prevent ctanify from altering any files when storing them in the tarball.
- Excluding filename (use --no-skip to force inclusion)CTANprefers not receiving. These include files whose names start with ".`` (Unix hidden files), end in ''~" (Emacs automatic backups), or that come from aCVSor .svn directory (version-control metadata files). If there's a good reason to submit such files toCTAN(and there rarely is), the --no-skip option can be used to prevent ctanify from ignoring them.
- CTAN prefers having only PDF documentation (re: filename)
- Because of the popularity of theCTANwants to have as much documentation as possible distributed inPDF.The preceding message asks the user to replace any PostScript orDVIdocumentation withDVIdocumentation in the tarball; the preceding message is merely a polite request.)
- Not including filename in the TDS tree (unknown extension)TDStree based on a table of file extensions. For example, all .sty files are placed in tex/latex/package-name. If ctanify does not know where to put a file it does not put it anywhere. See the last paragraph of ``OPTIONS''for an explanation of how to specify explicitly a file's target location in theTDStree. For common file extensions that happen to be absent from ctanify's table, consider also notifying ctanify's author at the address shown below under ``AUTHOR''.
The Common CaseNormally, all that's needed is to tell ctanify the name of the .ins file (or .sty if the package does not use DocStrip) and the prebuilt documentation, if any:
$ ctanify mypackage.ins mypackage.pdf README 490347 mypackage.tar.gz 1771 mypackage/README 15453 mypackage/mypackage.dtx 1957 mypackage/mypackage.ins 277683 mypackage/mypackage.pdf 246935 mypackage.tds.zip 1771 doc/latex/mypackage/README 277683 doc/latex/mypackage/mypackage.pdf 15453 source/latex/mypackage/mypackage.dtx 1957 source/latex/mypackage/mypackage.ins 1725 tex/latex/mypackage/mypackage.sty
ctanify outputs the size in bytes of the resulting tarball, each file within it, and each file within the contained
including mypackage.dtx (found by parsing mypackage.ins) in both
the mypackage directory and the ZIPfile,
including mypackage.sty (found by parsing mypackage.ins) in the
ZIPfile but, because it's a generated file, not in the mypackage directory, and
placing all files into appropriate TDSdirectories (documentation, source, main package) within theZIPfile.
Consider what it would take to manually produce an equivalent mypackage.tar.gz file. ctanify is definitely a simpler, quicker alternative.
Advanced Usagectanify assumes that PostScript files are documentation and therefore stores them under doc/latex/package-name/ in the
$ ctanify mypackage.ins "mypackage*.ps=tex/latex/mypackage"
- ctanify is written in Perl and needs a Perl installation to run.
- tar, gzip
ctanify requires the GNUtar and gzip programs to create a compressed tarball (.tar.gz).
ctanify uses a zip program to archive the TDStree within the main tarball.
CAVEATSctanify does not invoke tex or latex on its own, e.g., to process a .ins file. The reason is that ctanify does not know in the general case how to produce all of a package's generated files. It was deemed better to do nothing than to risk overwriting existing .sty (or other) files or to include outdated generated files in the tarball. In short, before running ctanify you should manually process any .ins files and otherwise generate any files that should be sent to
ctanify has been tested only on Linux. It may work on
SEE ALSOtar(1), zip(1), latex(1), Guidelines for uploading TDS-Packaged materials to
AUTHORScott Pakin, email@example.com
COPYRIGHT AND LICENSECopyright 2017 Scott Pakin
This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or (at your option) any later version. The latest version of this license is in
and version 1.3c or later is part of all distributions of LaTeX version 2008/05/04 or later.