2

Is it safe to use the LaTeX commands \@ifpackagelater, \@ifl@t@r and/or \@parse@version to compare/parse dates in the format used with \ProvidesPackage (YYYY/MM/DD)? Or is there a package providing such functionality in a documented way?

Unfortunately, it is not clear (to me, any pointers to relevant documentation are very welcome!) which commands in the LaTeX kernel are internal and subject to change and which ones are stable and can be used by package authors.

1
  • The LaTeX kernel was changed very little in the past few years, so I think that it can be considered very stable, and changes to commands like the ones you're asking will probably not happen... Commented Jun 6, 2018 at 18:54

1 Answer 1

3

In contrast to expl3 (which has a very clear notion of internal and external commands) the LaTeX2e kernel hasn't and so it is not easy to give a good rule of thumb for what is intended as an interface command and what is not. After all the kernel was written over a long period of time by different people and with different coding practices.

But a few guidelines:

  • reading up clsguide.pdf should give you a number of ideas --- that is definitely documentation what we thought in 1993 or so as being important interface commands (though not complete necessarily)

  • reading up source2e.pdf is probably also a good idea. While that documentation could be much better in places there is a lot there about internal commands and also more or less most sections have a command summary at the beginning which kind of defines the interface commands

  • anything in CamelCase (and not containing @) is clearly an interface command

  • anything involving two or more @ signs is most likely not

  • @@ is definitely a no-go

  • whenever there is a command that uses helper commands with similar names then the latter ones are not really intended as interface commands

    I'm sure there are exceptions but ...

The documents mentioned above should be part of distributions but are also available at https://www.latex-project.org/help/documentation/

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .