Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

(This is not a duplicate of How can I use @author, @date, and @title after maketitle?)

I understand that \maketitle resets a bunch of macros, including \@title, \@author, \@date, and \maketitle itself. I assume there's a good reason for this, and I'd like to know what it is.

For a bit of context, I'm writing my own class which redefines \maketitle to print a title page in the format required by my university for theses and dissertations. This title page includes some information, like the expected degree, which one might handle similarly to the title and author (i.e. provide a \degree macro which sets an internal\@degree macro).

It seems that I have a few options for my redefinition of \maketitle:

  1. I could be lazy and not bother resetting anything.
  2. I could mimic the standard behaviour and reset \title, \@title, ...
  3. I could go beyond that and reset my new (analogous) macros \degree, \@degree, ...

Up to this point I've chosen the third option, but I haven't the faintest clue why. Is there a good reason why \maketitle should reset document information macros like \title?

share|improve this question

1 Answer 1

up vote 23 down vote accepted

The documentation of article.cls (see classes.pdf) says

We reset the footnote counter, disable \thanks and \maketitle and save some storage space by emptying the internal information macros.

This is a result of constraints in earlier tex systems where pools sizes and other aspects of memory etc. were limited. Much of the original design of TeX contains elements chosen to make optimal use of the space available. In modern set-ups this is almost never a problem. One interesting constraint that is still around is on the number of math alphabets that can be loaded.

share|improve this answer
    
Interesting! That explains a lot. I won't bother resetting anything from now on, then --- I can afford the extra few bytes of memory to make the source more readable! –  Ross Churchley Aug 21 '12 at 12:14
    
One reason to reset maketitle itself is to keep the user from accidently using it twice. It usually makes no sense to have duplicated titles! –  mrf Aug 21 '12 at 16:04
4  
The main reason was "main-memory" back in those days. LaTeX was effectively eating up half of the available space just through macro definitions. So with complicated pages or with some picture environments etc you could hit the limit. So freeing up any bit was essential and you still see traces of this in the code. Pool size couldn't be reclaimed this way unfortunately. These days the memory arrays are much bigger so this type of optimization isn't necessary any more. The math alphabets have a different reason: they are hard-wired into the design and that's why the limitation still exists. –  Frank Mittelbach Aug 21 '12 at 20:52
    
@mrf In the absence of memory constraints, I'd prefer not to make that decision for the user. You make a good point, though: things like \maketitle are almost never called twice, so you can safely free up memory by having them reset themselves. When the memory situation was as dire as @Frank Mittelbach explains, this would be a great source of efficiency! If I'm not mistaken, \tableofcontents clears itself for the same reason. –  Ross Churchley Aug 22 '12 at 19:16

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.