CINXE.COM
CTAN: Upload
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>CTAN: Upload</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta name="mobile-web-app-capable" content="yes"/> <link rel="apple-touch-icon" sizes="57x57" href="/assets/favicon/apple-touch-icon-57x57-2939b50c47f8b5ca065cd63c9a64973b.png" /> <link rel="apple-touch-icon" sizes="60x60" href="/assets/favicon/apple-touch-icon-60x60-337a9d235bc42e9f462aaddb486a76dd.png" /> <link rel="apple-touch-icon" sizes="72x72" href="/assets/favicon/apple-touch-icon-72x72-0e57167ccde9e93c5f99c9e71002bfde.png" /> <link rel="apple-touch-icon" sizes="76x76" href="/assets/favicon/apple-touch-icon-76x76-3103aee8e8049b3adbc7a4d7b0a2eb40.png" /> <link rel="apple-touch-icon" sizes="114x114" href="/assets/favicon/apple-touch-icon-114x114-2cf42426f1437dce3145eed9f7c52733.png" /> <link rel="apple-touch-icon" sizes="120x120" href="/assets/favicon/apple-touch-icon-120x120-eae92d87e1eb87421415c318e045fdd4.png" /> <link rel="apple-touch-icon" sizes="144x144" href="/assets/favicon/apple-touch-icon-144x144-4e2a869d05c81af869921a31bf5e23f6.png" /> <link rel="apple-touch-icon" sizes="152x152" href="/assets/favicon/apple-touch-icon-152x152-20e963587ff34e81bde29b0c97bdc181.png" /> <link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon-180x180-cdeb760ad0aa0db29ecec0ce958f0f85.png" /> <link rel="icon" type="image/png" href="/assets/favicon/favicon-32x32-a101178bc8b3b1faaccae8b3eb747f97.png" sizes="32x32" /> <link rel="icon" type="image/png" href="/assets/favicon/android-chrome-192x192-beba071413dcab08f0a0c89a58a23457.png" sizes="192x192" /> <link rel="icon" type="image/png" href="/assets/favicon/favicon-96x96-0ec6ea4c2b21cf315aab8d552474015c.png" sizes="96x96" /> <link rel="icon" type="image/png" href="/assets/favicon/favicon-16x16-ecad89e8a3475c9b10c36f82efef3bcd.png" sizes="16x16" /> <link rel="manifest" href="/assets/favicon/manifest-79a60c90526dbf14f7824aa7aa50579f.json" /> <link rel="shortcut icon" href="/assets/favicon/favicon-afd4a866cd0c27587b7b06cd4199a57f.ico" /> <meta name="msapplication-TileColor" content="#2b5797"/> <meta name="msapplication-TileImage" content="/assets/favicon/mstile-144x144-13de7449899120a2a279e89581f29f52.png"/> <meta name="msapplication-config" content="/assets/favicon/browserconfig-945ed94c904db71e7a7c54d6ae065f5a.xml"/> <meta name="theme-color" content="#ffffff"/> <link rel="search" type="application/opensearchdescription+xml" title="CTAN Search" href="https://www.ctan.org/search/open-search.xml" /> <link rel="alternate" type="application/atom+xml" title="CTAN Atom Feed" href="https://www.ctan.org/ctan-ann/atom.xml"/> <link rel="alternate" type="application/rss+xml" title="CTAN RSS Feed" href="https://www.ctan.org/ctan-ann/rss.xml"/> <link rel="alternate" hreflang="x-default" href="https://ctan.org/upload" /> <link rel="alternate" hreflang="en" href="https://ctan.org/upload?lang=en" /> <link rel="alternate" hreflang="de" href="https://ctan.org/upload?lang=de" /> <script type="text/javascript" src="/assets/portal-944f93dcc061b0c8fb36b9debe744e42.js" ></script> <script type="text/javascript" src="/js/jquery/jquery.validate.js"></script><script type="text/javascript" src="/assets/upload-387838d236071701b3b1960ac485ba2e.js" ></script> <script type="text/javascript" src="/plugins/ckeditor-4.5.4.1/js/ckeditor/ckeditor.js"></script> <link rel="stylesheet" href="/assets/skin/gray/skin.css"> <link rel="stylesheet" media="print" href="/assets/skin/print/skin.css"> </head> <body> <header> <div class="head"> <div><a href="/"><span class="ctan">CTAN</span> Comprehensive T<span class="e">e</span>X Archive Network</a></div> </div> <div class="logo"> <a href="/lion/" title="CTAN lion drawing by Duane Bibby" ><span class="lion"></span></a> </div> </header> <div class="top-bar"> <span class="m" title="Menu"></span> <ul> <li><a href="/login" class="b-login" id="login" title="Login with your personal account" rel="nofollow">Login</a></li> <li><a class="b-join" id="join" href="/join" title="Register a new personal account on this site" rel="nofollow">Join</a></li> <li><a class="b-settings" href="/user/settings" title="Adjust the appearance to your taste">Settings</a></li> <li><a class="b-help" href="/help" title="Get some information about this Web site">Help</a></li> </ul> </div> <div class="blocks"> <div class="functions menu-bar"> <ul class="menu"> <li><a class="home" href="/"><span class="text">Cover</span><span class="drop"> </span></a> <ul> <li class="menu-cover-home"><a href="/">Cover</a></li> <li class="menu-cover-starter"><a href="/starter">Starting out with T<span class="e">e</span>X...</a></li> <li class="menu-cover-ctan"><a href="/ctan">CTAN Background</a></li> <li class="menu-cover-mirrors"><a href="/mirrors">Mirrors</a></li> <li class="menu-cover-lugs"><a href="/lugs">T<span class="e">e</span>X user groups</a></li> <li><hr/></li> <li class="menu-cover-privacy"><a href="/privacy">Privacy</a></li> <li class="menu-cover-credits"><a href="/credits">Credits</a></li> </ul> </li> </ul> <ul class="menu"> <li><a class="upload" href="/upload"><span class="text">Upload</span><span class="drop"> </span></a> <ul> <li class="menu-upload-upload"><a href="/upload">Upload</a></li> <li class="menu-upload-basics"><a href="/help/upload-pkg">Upload basics</a></li> <li class="menu-upload-addendum"><a href="/file/help/ctan/CTAN-upload-addendum">Upload addendum</a></li> <li class="menu-upload-tds"><a href="/TDS-guidelines">T<span class="e">e</span>X Directory Structure</a></li> <li class="menu-upload-licenses"><a href="/license">Licenses</a></li> </ul> </li> </ul> <ul class="menu"> <li><a class="browse" href="/tex-archive"><span class="text">Browse</span><span class="drop"> </span></a> <ul> <li class="menu-browse-archive"><a href="/tex-archive"></i>T<span class="e">e</span>X Archive</a></li> <li class="menu-browse-pkg"><a href="/pkg">Packages</a></li> <li class="menu-browse-topic"><a href="/topics/cloud">Topics</a></li> <li class="menu-browse-author"><a href="/author">Contributors</a></li> <li class="menu-browse-announce"><a href="/ctan-ann">Announcements</a></li> </ul></li> </ul> <form name="searchForm" id="searchForm" method="get" action="/search" enctype="text/plain"> <input class="phrase" name="phrase" type="text" size="24" accept-charset="ISO-8859-1" value="" autofocus /> </form> <ul class="menu search-menu"> <li><a class="search" onClick="document.searchForm.submit();return false;" href="/search"><span class="text">Search</span><span class="drop"> </span></a> <ul> <li class="menu-search-extended"><a href="/search?ext=new">Extended search</a></li> <li class="menu-search-files"><a href="/search?ext=false&FILES=on">File search</a></li> </ul></li> </ul> <script> if (window.location.hash !='') window.location.hash = window.location.hash; </script> </div> <nav class="breadcrumb"> Location: <a href="/">CTAN</a> <a href="">Upload</a> </nav> <main class="content"> <h1>Upload to the Comprehensive <span class="t-logo">T<span class="e">e</span>X</span> Archive Network</h1> <noscript> <p large-icon=""> JavaScript is disabled. Thus you can use this form only to upload an initial version of a package. To upload an update or new version of an existing package you need to enable JavaScript in this browser. </p> </noscript> <p large-icon=""> If you want to upload a new version of a package to CTAN you can start the upload from the package's page. Then several fields will be pre-filled. Even more is pre-filled if you are logged in.</p> <p large-icon=""> To get ready for uploading please read the hints at <a href="/help/upload-pkg">How can I <b>upload</b> a package?</a> and some more details at <a href="/file/help/ctan/CTAN-upload-addendum">Upload addendum</a>. </p> <p large-icon=""> <span class="required">The required fields are clearly marked like this sentence</span>. The form complains if a required field is missing. </p> <form action="/upload" method="post" accept-charset="UTF-8" name="form" id="form" enctype="multipart/form-data" multiple="false" class="upload-form"> <input name="ticket" type="hidden" value="94c5c17e" /> <input id="update" name="update" type="hidden" value="false" /> <input id="validate" name="validate" type="hidden" value="false" /> <ul id="tabs" class="tabs"> </ul> <fieldset lang="none"> <div id="control-buttons"></div> <table class="data"> <tbody> <tr> <td colspan="2"> <h3 class="help">Provide a few bits of information that will help us to categorize the package</h3></td> </tr> <tr> <td lang="none" class="required">Name of your contribution</td> <td><input name="pkg" id="pkg" type="text" maxlength="32" class="stretch" value="" /> <p class="help">This value corresponds to the name of the package in the <span class="t-logo">T<span class="e">e</span>X</span> Catalogue. It must consist of ASCII characters only. It should start with a letter and may contain only letters, digits or a minus sign. </p></td> </tr> <tr> <td lang="none" class="label required">Version</td> <td><input name="vers" id="vers" type="text" maxlength="32" value="" /> <p class="help">Specify a meaningful version like 1.2 or 2.3.4. A release date in the form YYYY-MM-DD can be used as a fall-back in case you do not have a proper version number. Please consider <a href="https://semver.org/">Semantic Versioning</a> as widely used in software engineering. </p></td> </tr> <tr class="full"> <td lang="none" class="label required">Maintainer</td> <td><input name="author" type="text" maxlength="128" class="stretch" value="" /> <p class="help">These are the names of the authors or maintainers. These names will be published with the package. Several names are separated by a semicolon (;).</p></td> </tr> <tr id="uploader-row"> <td lang="none" class="label required">Your name</td> <td><input name="uploader" type="text" maxlength="128" class="stretch" value="" /> <p class="help">Your name in case you are uploading a package on behalf of someone else. Note that the CTAN team checks that you are entitled to upload the package.</p></td> </tr> <tr> <td lang="none" class="label required">Your email</td> <td><input name="email" type="text" maxlength="255" class="stretch" value="" /> <p class="help">This email address will not be published. It is meant for contacting you in case of questions.</p></td> </tr> <tr id="summary-row" class="full"> <td lang="none" class="label required">Summary</td> <td><input name="summary" type="text" class="stretch" maxlength="127" value="" /> <p class="help">A short one line summary of what the package does. It is typically just a few words, or at most a sentence.</p></td> </tr> <tr id="description-row" class="full"> <td lang="none" class="label">Description</td> <td> <textarea id="description" name="description"> </textarea> <script type="text/javascript"> CKEDITOR.replace('description', { toolbar_ctan: [ { name: 'clipboard', items: ['Cut', 'Copy', 'Paste', 'PasteText', '-', 'Undo', 'Redo' ] }, { name: 'basicstyles', items: ['Bold', 'Italic'] }, { name: 'paragraph', items: ['BulletedList', 'NumberedList'] }, { name: 'links', items: ['Link', 'Unlink'] } ] , customConfig: '/js/ckeditor.js', height: '16em', width: '100%', toolbar: 'ctan'} ); </script> <p class="help">This is the description of the package as published with the package description on the CTAN package page.</p> </td> </tr> <tr class="full"> <td lang="none" class="label required">Suggested CTAN directory</td> <td><input name="ctanPath" type="text" class="stretch" maxlength="255" value="" /> <p class="help"> Your suggested CTAN directory is a help (if you are not sure, just make a guess). You can <a target="_blank" href="/tex-archive/">browse here</a>. The selected path must start with one of the existing directories. </p></td> </tr> <tr id="announce-row"> <td lang="none" class="label">Announcement via mailing list and RSS<br /> (features, changes,...) </td> <td><textarea name="announcement" rows="10" cols="80"></textarea> <p class="help">This text is published for a new package or if an announcement is requested for an existing package. Please write in English.</p> <p class="help">In case of an update you can leave this field empty. Then no announcement will be published.</p> <p class="help">About the announcements: we have a mailing list for people who are interested in hearing about changes in our holdings. New packages are always announced on this list. For a revision of an existing package, please note that we don't mail the list about revisions that are bug fixes, minor feature additions, etc. If you make a major upgrade and would like an announcement then tell us so, and include a description of the improvements.</p></td> </tr> <tr id="last"> <td lang="none" class="label">Administrative notes<br /> (to the CTAN maintainers) </td> <td><textarea name="note" rows="4" cols="80"></textarea> <p class="help">This text is for internal communication only. It will not be visible publicly. Please write in English.</p></td> </tr> <tr> <td colspan="2"> <h3 class="help">Indicate the licenses</h3></td> </tr> <tr class="help"> <td></td> <td> <p> We need to know the licenses under which you are sharing your work. For more information about the different kinds, see the <a target="_blank" href="/license/">Catalogue License Definitions</a>. If you don't know what to pick, you might note that the <a target="_blank" href="/license/lppl1.3c"><span class="t-logo">L<span class="a">a</span>T<span class="e">e</span>X</span> Project Public License 1.3c</a> was developed to suit this purpose. </p> <p>Several licenses can be given. This applies for instance if parts of the package are distributed under different licenses or the package is dual licensed under more than one license.</p> </td> </tr> <tr class="full"> <td class="label required">License type</td> <td><select id="licenses" name="licenses" multiple="multiple" size="8"> <optgroup label="Free"> <option value="apache2" > Apache License, version 2.0 </option> <option value="artistic2" > Perl Artistic License, version 2 </option> <option value="bsd" > BSD Style License </option> <option value="bsd2" > Simplified BSD License </option> <option value="bsd3" > 3-clause BSD License </option> <option value="bsd4" > BSD License </option> <option value="cc-by-1" > CC BY 1.0 </option> <option value="cc-by-2" > CC BY 2.0 </option> <option value="cc-by-3" > CC BY 3.0 </option> <option value="cc-by-4" > CC BY 4.0 </option> <option value="cc-by-sa-1" > CC BY-SA 1.0 </option> <option value="cc-by-sa-2" > CC BY-SA 2.0 </option> <option value="cc-by-sa-3" > CC BY-SA 3.0 </option> <option value="cc-by-sa-4" > CC BY-SA 4.0 </option> <option value="cc0" > CC0 1.0 </option> <option value="eupl" > European Union Public License 1.2 </option> <option value="fdl" > Free Documentation License </option> <option value="gfl" > The GUST Font License (GFL) </option> <option value="gfsl" > The GUST Font Source License (GFSL) </option> <option value="gpl" > GNU General Public License </option> <option value="gpl1" > GNU General Public License, version 1 </option> <option value="gpl1+" > GNU General Public License, version 1 or newer </option> <option value="gpl2" > GNU General Public License, version 2 </option> <option value="gpl2+" > GNU General Public License, version 2 or newer </option> <option value="gpl3" > GNU General Public License, version 3 </option> <option value="gpl3+" > GNU General Public License, version 3 or newer </option> <option value="isc" > ISC License </option> <option value="knuth" > Knuth License </option> <option value="lgpl" > GNU Lesser General Public License </option> <option value="lgpl2.1" > GNU Lesser General Public License 2.1 </option> <option value="lgpl3" > GNU Lesser General Public License 3 </option> <option value="lppl" > The LaTeX Project Public License </option> <option value="lppl1" > The LaTeX Project Public License 1 </option> <option value="lppl1.2" > The LaTeX Project Public License 1.2 </option> <option value="lppl1.3" > The LaTeX Project Public License 1.3 </option> <option value="lppl1.3a" > The LaTeX Project Public License 1.3a </option> <option value="lppl1.3b" > The LaTeX Project Public License 1.3b </option> <option value="lppl1.3c" > The LaTeX Project Public License 1.3c </option> <option value="mit" > MIT License </option> <option value="ofl" > The SIL Open Font License </option> <option value="opl" > Open Publication License </option> <option value="other-free" > Free license not otherwise listed </option> <option value="pd" > Public Domain Software </option> <option value="x11" > X11 License </option> </optgroup> <optgroup label="Nonfree"> <option value="artistic" > Perl Artistic License </option> <option value="cc-by-nc-1" > CC BY-NC 1.0 </option> <option value="cc-by-nc-2" > CC BY-NC 2.0 </option> <option value="cc-by-nc-3" > CC BY-NC 3.0 </option> <option value="cc-by-nc-4" > CC BY-NC 4.0 </option> <option value="cc-by-nc-nd-1" > CC BY-NC-ND 1.0 </option> <option value="cc-by-nc-nd-2" > CC BY-NC-ND 2.0 </option> <option value="cc-by-nc-nd-2.5" > CC BY-NC-ND 2,5 </option> <option value="cc-by-nc-nd-3" > CC BY-NC-ND 3.0 </option> <option value="cc-by-nc-nd-4" > CC BY-NC-ND 4.0 </option> <option value="cc-by-nc-sa4" > CC BY-NC-SA 4.0 </option> <option value="cc-by-nd-1" > CC BY-ND 1.0 </option> <option value="cc-by-nd-2" > CC BY-ND 2.0 </option> <option value="cc-by-nd-3" > CC BY-ND 3.0 </option> <option value="cc-by-nd-4" > CC BY-ND 4.0 </option> <option value="nocommercial" > No Commercial Use </option> <option value="nosell" > Do Not Sell Except by Arrangement </option> <option value="nosource" > No Source Available </option> <option value="other-nonfree" > License that prevents distribution </option> <option value="shareware" > Shareware: A fee is required </option> </optgroup> </select></td> </tr> <tr class="help"> <td></td> <td>Please also indicate the license within the package itself, at least in the top-level <code>README</code> or <code>README.md</code> file. </td> </tr> <tr> <td colspan="2"> <h3 class="help">Select your archive file to be uploaded</h3></td> </tr> <tr> <td class="label required" lang="none">Archive file</td> <td> <p class="help">Your file will be uploaded when you submit this form in the final step.</p> <p class="help"> We only accept a single archive file for upload: the file name must end in <code>.zip</code>, <code>.tgz</code>, or <code>.tar.gz</code>. Please do not use any special or non-printable characters (like blank spaces) in file names. </p> <p> <input name="file" type="file" class="stretch" title="Select the package archive on the local file system."/> </p> </td> </tr> <tr class="help"> <td colspan="2"> <h3>You can provide some communication channels</h3> <p>Usually you want users of your package to provide some feedback or have access to communication channels of certain kind.</p> </td> </tr> <tr class="full"> <td lang="none" class="label">Home page</td> <td><input name="home" type="text" maxlength="128" class="stretch" value="" /> <div class="help">This is the URL of the home page for the package. There the user can expect to receive more information and references related to the package.</div></td> </tr> <tr class="full"> <td lang="none" class="label">Bug tracker</td> <td><input name="bugs" type="text" maxlength="255" class="stretch" value="" /> <div class="help">This is the URL to a bug tracker for the package. The user can expect to receive more information about open and closed issues for the package there. Additionally new issues can be filed there.</div></td> </tr> <tr class="full"> <td lang="none" class="label">Support</td> <td><input name="support" type="text" maxlength="255" class="stretch" value="" /> <div class="help">This is the URL where the user can get some kind of support for the package. This can be a mailing list or discussion forum dedicated to the package.</div></td> </tr> <tr class="full"> <td lang="none" class="label">Announcements</td> <td><input name="announce" type="text" maxlength="255" class="stretch" value="" /> <div class="help">This is the URL where the user can read announcements for the package. This can be a mailing list or news feed dedicated to the package.</div></td> </tr> <tr class="full"> <td lang="none" class="label">Repository</td> <td><input name="repository" type="text" maxlength="255" class="stretch" value="" /> <div class="help">This is the URL of the repository of the package. The complete development versions of the package can be found there.</div> </td> </tr> <tr class="full"> <td lang="none" class="label">Developers</td> <td><input name="development" type="text" maxlength="255" class="stretch" value="" /> <div class="help">This is the URL where the user can participate in the development of the package.</div></td> </tr> </tbody> </table> <div class="buttons" id="submit-buttons"> <input name="SUBMIT" value="Submit contribution" type="submit" title="Validate the given information and submit it to CTAN upon success." /> <!-- <input name="VALIDATE" value="Validate contribution" type="submit" title="Validate the input and report the result. The package is not submitted to CTAN." /> --> <input value="Reset input" type="reset" title="Reset the input fields to their initial values." /> </div> </fieldset> </form> <div class="left"> <h2 id="contact">Contact</h2> <p>In case that you need to reach the CTAN team, send an email message to </p> <blockquote> <a class="email" href="mailto:ctan@ctan.org">ctan@ctan.org</a> </blockquote> </div> <div class="right"> <dl> <dt class="note">Note:</dt> <dd id="no-html-mails"> Please take care <strong>not</strong> to send any HTML mails to this address, because HTML mails are held in CTAN's SPAM filter, and it may take some time until a postmaster comes along to set them free. </dd> </dl> </div> <script> $.validator.addMethod("allowedExtensions", function(value, element) { return !/.*\.(exe|php|asp|cgi|htaccess)$/.test(value); }, "Please specify the correct domain for your documents"); $.validator.addMethod("unixPath", function(value, element) { return !/[^-a-zA-Z0-9_\/]/.test(value); }, "Please specify a path with / as separator"); $.validator.addMethod("noSpecials", function(value, element) { return !/[^-a-zA-Z0-9_. \/]/.test(value); }, "Please specify a value without special characters"); $.validator.addMethod("noSpecialChars", function(value, element) { return !/[^-a-zA-Z0-9_.\/]/.test(value); }, "Please specify a value without special characters"); $.validator.addMethod("noNonAscii", function(value, element) { return !/[^ -~\n\r\uc2ad]/.test(value); }, "Please specify a value without non-ASCII characters"); $("#form").validate( { rules : { pkg : { required : true, maxlength : 32, noSpecials : true, remote : { url: '/upload/validatePackageName', type: 'post', data: { update: function() { return $('input[name="update"]').val(); } } } }, vers : { required : true, maxlength : 32, noSpecials : true, remote : { url: '/upload/validatePackageVersion', type: 'post', data: { pkg: function() { return $('input[name="pkg"]').val(); } } } }, author : { required : true, maxlength : 128 }, uploader : { required : true, maxlength : 255 }, email : { required : true, email : true, maxlength : 255, noNonAscii : true }, summary : { required : function() { return $('#update').val() !== 'true'; }, maxlength : 128 }, description : { required : function() { return $('#update').val() !== 'true'; }, maxlength : 4096 }, ctanPath : { required : function() { return $('#update').val() !== 'true'; }, maxlength : 255, unixPath : true, remote : { url: '/upload/validateCtanPath', type: 'post' } }, license : { required : function() { return $('#update').val() !== 'true'; } }, file : { required : true, // noSpecialChars : true, allowedExtensions : true }, home : { maxlength : 255, url : true, remote : { url: '/upload/validatePackageUrl', type: 'post', data: { url: function() { return $('input[name="home"]').val(); } } } }, bugs : { maxlength : 255, url : true, remote : { url: '/upload/validatePackageUrl', type: 'post', data: { url: function() { return $('input[name="bugs"]').val(); } } } }, announce : { maxlength : 255, url : true, remote : { url: '/upload/validatePackageUrl', type: 'post', data: { url: function() { return $('input[name="announce"]').val(); } } } }, repository : { maxlength : 255, url : true, remote : { url: '/upload/validatePackageUrl', type: 'post', data: { url: function() { return $('input[name="repository"]').val(); } } } }, support : { maxlength : 255, url : true, remote : { url: '/upload/validatePackageUrl', type: 'post', data: { url: function() { return $('input[name="support"]').val(); } } } }, development : { maxlength : 255, url : true, remote : { url: '/upload/validatePackageUrl', type: 'post', data: { url: function() { return $('input[name="development"]').val(); } } } }, announcement : { maxlength : 8192, required : function(element) { return "false" == $('input[name="update"]').val(); } }, note : { maxlength : 2048 } }, messages : { pkg : { required : "Please provide a package name", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the package name"), remote : function() { return $('#update') === 'true' ? 'Please provide the name of an existing package for your update' : 'Please provide an unused name for your new package' } }, vers : { required : "Please provide a version number or version date", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the version information"), remote : "This version is already on CTAN" }, author : { required : "Please provide an author", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the author name") }, uploader : { maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the uploader name") }, email : { required : "Please provide a contact email", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the email address") }, summary : { required : "Please provide a summary", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the summary") }, ctanPath : { required : "Please provide a target path on CTAN", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the CTAN path"), unixPath : "Please use a UNIX style path", remote : "Please use a sub-directory of one of the existing directories" }, file : { required : "Please provide a single file to be uploaded", noSpecialChars : "Please use a file name without special characters", allowExtensions : "The file has one of the forbidden extensions. Please select a proper file." }, home : { url : "Please provide a proper URL", remote : "Please provide a reachable URL.", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the home URL") }, bugs : { url : "Please provide a proper URL", remote : "Please provide a reachable URL", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the bug tracker URL") }, announce : { url : "Please provide a proper URL", remote : "Please provide a reachable URL", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the announcements URL") }, support : { url : "Please provide a proper URL", remote : "Please provide a reachable URL", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the support URL") }, repository : { url : "Please provide a proper URL", remote : "Please provide a reachable URL", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the repository URL") }, development : { url : "Please provide a proper URL", maxlength : jQuery .format("Please restrict yourself to at most {0} characters for the developers URL") }, license : { required : "Please select a license from the list" } } }); $('input').blur(function() { $(this).valid(); }); $('textarea').blur(function() { $(this).valid(); }); $('select').blur(function() { $(this).valid(); }); new UploadHandler('', 'false'); </script> <div class="clear"></div> </main> <div class="foot"> <a class="guestbook" href="/guestbook" title="Leave some words for other visitors" >Guest Book</a> <a class="sitemap" href="/sitemap" title="Show the structure of this site" >Sitemap</a> <a class="contact" href="/contact" title="Get contact information for the Web site" >Contact</a> <a class="contact-author" href="/help/contact-author" title="Get help on how to contact an author" >Contact Author</a> <a class="feedback" href="mailto:webmaster@ctan.org?subject=Feedback%20for%20/upload?lang=en" title="Send feedback on the current web page to the Web masters" >Feedback</a> </div> </div> <div class="footer"> <a id="share-toggle" class="in" title="Toggle share" href="#" onClick="return toggleShare();"> </a> <div id="share" class="in"><a class="mail fontawesome" title="Send link to this page by email" href="mailto:?subject=CTAN:%20 Upload&body=%2Fupload" ></a> <a class="twitter fontawesome" target="_blank" title="Share link to this page on Twitter" onclick="return shareLink(this.href);" href="https://twitter.com/share?url=%2Fupload&text= Upload" ></a> <a class="facebook fontawesome" target="_blank" title="Share link to this page on Facebook" onclick="return shareLink(this.href);" href="https://www.facebook.com/sharer/sharer.php?u=%2Fupload&t= Upload" ></a> <a class="gplus fontawesome" target="_blank" title="Share link to this page on Google+" onclick="return shareLink(this.href);" href="https://plus.google.com/share?url=%2Fupload" ></a> <a class="linkedin fontawesome" target="_blank" title="Share link to this page on LinkedIn" onclick="return shareLink(this.href);" href="http://www.linkedin.com/shareArticle?mini=true&url=%2Fupload&title= Upload&summary= Upload&source=CTAN" ></a> <a class="pinterest fontawesome" target="_blank" title="Share link to this page on Pinterest" onclick="return shareLink(this.href);" href="http://pinterest.com/pin/create/button/?url=%2Fupload&description= Upload&media=https%3A%2F%2Fwww.ctan.org%2Fimages%2Fctan_lion-64.png" ></a> <a class="xing fontawesome" target="_blank" title="Share link to this page on Xing" onclick="return shareLink(this.href);" href="https://www.xing-share.com/app/user?op=share;sc_p=xing-share;url=%2Fupload" ></a> <a class="reddit fontawesome" target="_blank" title="Share link to this page on reddit" onclick="return shareLink(this.href);" href="http://www.reddit.com/submit?url=%2Fupload" ></a> <a class="tumblr fontawesome" target="_blank" title="Share link to this page on Tumblr" onclick="return shareLink(this.href);" href="http://www.tumblr.com/share/link?url=Share link to this page on StumbleUpon&name= Upload&description= Upload" ></a> <a class="stumbleupon fontawesome" target="_blank" title="Share link to this page on StumbleUpon" onclick="return shareLink(this.href);" href="http://www.stumbleupon.com/submit?url=Share link to this page on StumbleUpon&title= Upload" ></a> </div> <span class="date">2024-11-27 16:05 CET</span> </div> <div id="portal-message"></div> </body> </html>