Let's say I have an experimental Asymptote module that I want to make available through CTAN. I can think of several options for this:

  • Create a package that uses a filecontents* environment to install the module in the current directory.

  • Somehow find an appropriate place in the TDS(?) structure where Asymptote will automatically look for modules. This would be ideal if

    1. Such a place existed (outside the asymptote/base folder, which I am guessing is not intended for additions), and
    2. I knew anything at all about the TDS structure. (Judging from other questions, this is something that is hard to get right unless you know what you are doing.)
  • Create a package, which must be loaded after the asymptote package, that uses an asydef environment to include all my Asymptote code in all the Asymptote images throughout the tex document. This would be the easiest, but I think it's the least desirable of the three methods described. For one thing, it prevents the user from choosing which asy environments actually need the extra overhead of loading my module. For another, it can only be used for diagrams inside a tex file; I personally prefer to write all but the simplest asy code in a separate .asy file first, since it is easier to debug that way.

Are any of these reasonable? In particular, is there anything I could do for the second option?

Is CTAN even a suitable option for publishing an Asymptote module?

  • CTAN want 'flattened' packages so you do not need to create a package based on the TDS structure. The files will be placed appropriately when included in distributions according to their policies. In fact, if you upload a package in TDS structure, they will reject it. (This is a change of policy, I think. They used to either request or allow packages in TDS format. Now they won't accept them. At least, they certainly won't take them as the main package submitted. I think they might still allow one as an addition.)
    – cfr
    Feb 12, 2014 at 22:24
  • 1
    i don't know whether ctan is appropriate for asymptote add-ons; we do, after all, hold asymptote itself. if asymptote has a formal "add-on" structure, then i see no need for us not to hold that structure, and your package would then fit there. (note, i've never used asymptote, and have no clear idea how it is -- or might in future be -- structured.) Feb 14, 2014 at 18:29
  • @wasteofspace: Asymptote has a facility for loading a module similar to the TeX facility for loading a package. However, the modules that come with the distribution are all contained in the same directory (called base) and contain a lot of code that is basic to the functioning of Asymptote. There may be modules that many would find useful, but that the developers do not think should be included in the code base--for instance, if the module is a temporary measure that is expected to be replaced, or is useful but not yet polished ("version 0.3"). Feb 14, 2014 at 20:43
  • @cfr: I think the answer below is addressed to you, and would be a comment if possible. Feb 18, 2014 at 14:04

1 Answer 1


@cfr: There is no change of CTAN policy concerning TDS-structured packages. We allow them as secondary artifacts and ask authors to make them conform to TeX Live standards. We have never requested nor endorsed them as primary artifacts. The rationale for flattened source archives is easier handling for administration, cataloguing, searching, and browsing. Remember, CTAN stores submissions not as packages, but unpacked. Joachim (CTAN Team member and TDS co-author).

  • 1
    Thanks a lot for this answer, but please make it self-contained (if possible). You may reference comments in your answer, but your answer shouldn't simply be a reply to a comment.
    – jub0bs
    Feb 18, 2014 at 14:20
  • It may be that different people interpreted the policy in different ways rather than the policy changing. And the point I wanted to make is that one need not provide a package in this format, though I indicated that it might be permissible to do so as an addition.
    – cfr
    Feb 18, 2014 at 15:14

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.