Hi,
(This post actually belongs to dev-context, but I do not know if
everyone interested in this reads dev-context, so I am posting it to
this list).
I have been looking at what is the best way to do theorems etc with
ConTeXt. There are ways to handle most of the requirements, but some
of them are not possible out of the box with ConTeXt. I have searched
the archives and this questions about theorems and proofs keep on
coming on and off. I want to see what is the requirements for
theorems, what all is possible right now, and what needs to be done.
Below I am writing my requirements of theorem. Does anyone have
anything more to add?
1. They should be numbered, it should be possible to control the
numbering mechanism, for example way=bysection, bychapter, etc.
> Can be done using enumerations.
2. It should be possible to have two different types of theorems have
the same number. For example,
\definetheorem[theorem]
\definetheorem[lemma][number=theorem]
should follow the same number as theorems.
> Is possible using enumerations
3. It should be possible to get a list of theorems. It should be
possible to say which types of theorems go to the list and which do
not.
> Is possible using enumerations
4. The theorem should have a title. The title should be optional.
> Is partially implemented
5. There should be a mechanism to do end-of-proof marks. The
end-of-proof marks should also work with itemizations, and formulas.
> Not implemented at all.
6. Anything more...?
Requirement 4 is not completely implemented. With
\defineenumeration[theorem][title=yes] I always have to give a
title. Normally, while writings theorems, there are only a few
theorems that have a title. The rest of them do not. Right now, I can
work around this restriction, by either having two different theorems
(titledtheorem and nontitledtheorem) or always adding {} at the
beginning of each theorem. I want the behaviour closer to title=maybe.
I do not understand why \@@startdescription contains
\dowithwargument{\@@startsomedescription{#1}[#2]}
I would prefer it to contain
\dosinglegroupempty{\@@startsomedescription{#1}[#2]}
(well this will of course not work, but I hope the idea is clear)
So that I can do
\defineenumeration[theorem][title=yes]
\starttheorem A silly theorem not worth a title \stoptheorem
as well
\starttheorem {My Fancy Theorem} A fancy theorem that needs to be
given a title \stoptheorem
I do not think that changing this will break anything. I am not even
sure why dowithwargument is there. I cannot imagine anyone writing
\startthoerem Title this is a theorem \stoptheorem
instead of
\starttheorem {Title} this is a theorem \stoptheorem
The title also needs some more attributes. Right now, only titlestyle,
titlecolor and titledistance are there. To be more flexible, you would
also need something like titleleft, and titleright, which should not
be too difficult.
The last things, that is the end of proof marker, is right now not
possible in ConTeXt. There are a lot of things that need to be taken
care of while having a end-of-proof marker: basically, you need to
ensure that there is no page break between the proof and the marker.
Also the marker needs to be moved up or down, depending on how the
proof ends. At the very least, ConTeXt should have something that
ensures that the end of proof marker does not go onto a page of its
own.
Finally, my question is:
Does it make sense to include all these functionality into
enumerations, or have them in a separate module?
Aditya