Difference between revisions of "Proclaim"

From Wiki
Jump to navigation Jump to search
m (Make example narrower, cut some fat.)
Line 1: Line 1:
In Plain-TeX there is the command \proclaim which is very handy when writing mathematics and stating Theorems, Lemmas, Definitions and so on. Unfortunately it doesn't allow one to number automatically these statements in order to refer to them through cross referencing, and somehow it has disappeared from ConTeXt.
+
In Plain-TeX there is the command \proclaim which is very handy when writing mathematics and stating theorems, lemmas, definitions and so on. Unfortunately it doesn't allow one to number automatically these statements in order to refer to them through cross referencing, and somehow it has disappeared from ConTeXt.
  
If one wishes to number in a sequential way all these « proclaims », here is a solution, which works veru well in ConTeXt mkii (for a solution with mkiv see below):
+
If one wishes to number all these ‘proclaimations’, regardless of type and in the order in which they appear, here is a solution which works very well in ConTeXt Mark II. (For a solution with Mark IV see below.)
  
<texcode>
+
<context source=yes>
 +
\setuppapersize[A5]
  
 
%% defining an enumeration environment replacing Plain-TeX's \proclaim
 
%% defining an enumeration environment replacing Plain-TeX's \proclaim
%
 
 
\defineenumeration[proclaim]
 
\defineenumeration[proclaim]
 
[text=,
 
[text=,
Line 16: Line 16:
 
width=fit,
 
width=fit,
 
right={. }]
 
right={. }]
\setupnumber[proclaim][way=bysection,numbersection=yes] %% this can be changed according to one's wishes
+
\setupnumber[proclaim][way=bysection, numbersection=yes] %% this can be changed according to one's wishes
 
%
 
%
 
%% end definition \proclaim
 
%% end definition \proclaim
 
</texcode>
 
 
After having defined this, one can use it in the following way:
 
 
<texcode>
 
  
 
\starttext
 
\starttext
Line 68: Line 62:
 
\stoptext
 
\stoptext
  
</texcode>
+
</context>
 
 
and we get this upon typesetting in mkii:
 
 
 
 
 
 
 
<context>
 
 
 
 
 
%% defining an enumeration environment replacing Plain-TeX's \proclaim
 
%
 
\defineenumeration[proclaim]
 
[text=,
 
style=slanted,
 
title=yes,
 
titleleft=,
 
titleright=,
 
location=serried,
 
width=fit,
 
right={. }]
 
\setupnumber[proclaim][way=bysection,numbersection=yes] %% this can be changed according to one's wishes
 
%
 
%% end definition \proclaim
 
 
 
\starttext
 
\title{On proclamations}
 
\blank
 
When there is not a declared section, the numbers have no prefix as in the following:
 
 
 
\startproclaim[def:test]{Definition}
 
This is a definition.
 
\stopproclaim
 
 
 
\startproclaim{Lemma}
 
This is a lemma.
 
\stopproclaim
 
 
 
\section{Here is a section}
 
 
 
When there is a declared section, the numbers have as prefix the section number, as in the following:
 
 
 
\startproclaim{Lemma}
 
Here is another lemma.
 
\stopproclaim
 
 
 
\startproclaim[thm:result]{Theorem}
 
This is our main theorem.
 
\stopproclaim
 
 
 
\section{Here is another section}
 
 
 
When there is a declared section the numbers have as prefix the section number, as in the following:
 
 
 
\startproclaim[lem:resultB]{Lemma}
 
Here is an elementary lemma.
 
\stopproclaim
 
 
 
\startproclaim{Corollary}
 
This is a corollary.
 
\stopproclaim
 
 
 
Note that we can refer to our results in the following way: according to the definition \in[def:test] we see that theorem \in[thm:result] is
 
an easy consequence  of  lemma \in[lem:resultB].
 
 
 
\stoptext
 
  
</context>
 
  
 +
In Mark IV there is another solution which consists in defining first a certain ‘enumeration’ (in the example below for Remarks) and then use the counter created for this enumeration in other enumerations such as lemmas, theorems, etc.
  
In mkiv there is another solution which consists in defining first a certain « enumeration » (in the example below for Remarks) and then use the counter created for this enumeration in other enumerations such as Lemmas, Theorems, etc.
+
<context mode=mkiv source=yes>
 +
% mode=mkiv
  
<texcode>
+
\setuppapersize[A5]
  
%% Defining \proclaim style Remark, Lemmas, Theorem, Corollary, etc
 
 
\defineenumeration[remark]
 
\defineenumeration[remark]
 
[text=Remark,
 
[text=Remark,
Line 151: Line 81:
 
prefixsegments=section] % or prefixsegments=chapter:section
 
prefixsegments=section] % or prefixsegments=chapter:section
 
\setupnumber[remark][way=bysection]
 
\setupnumber[remark][way=bysection]
 
\defineenumeration[lemma]
 
[text=Lemma,
 
location=serried,
 
width=fit,
 
counter=remark, % only use counter of remark
 
style=slanted,
 
right={.~}]
 
\setupenumerations[lemma]
 
[prefix=yes,
 
prefixsegments=section]
 
  
 
\defineenumeration[theorem]
 
\defineenumeration[theorem]
 
[text=Theorem,
 
[text=Theorem,
location=serried,
 
width=fit,
 
counter=remark,
 
style=slanted,
 
right={.~}]
 
\setupenumerations[theorem]
 
[prefix=yes,
 
prefixsegments=section]
 
 
\starttext
 
 
\title{First and only title of the article}
 
 
This file has been typeset
 
on \currentdate{}
 
at \currenttime,
 
with
 
\doifmodeelse{mkiv}
 
{mkiv,
 
LuaTeX version \the\luatexversion,
 
LuaTeX revision \luatexrevision,
 
(LuaTeX date stamp \luatexdatestamp),
 
using the command: \par
 
\type{context basic-test.tex}\par}
 
{mkii,
 
using the command: \par
 
\type{texexec basic-test.tex}\par}
 
ConTeXt version \contextversion.
 
Here we don't have any section.
 
 
\startremark
 
This is a silly remark.
 
\stopremark
 
 
\startlemma[lem:elem]
 
This is an elementary result.
 
\stoplemma
 
 
\starttheorem
 
This is a deep theorem.
 
\stoptheorem
 
 
\startremark
 
This is a silly remark.
 
\stopremark
 
 
\startlemma
 
This is an elementary result.
 
\stoplemma
 
 
\starttheorem
 
This is a deep theorem.
 
\stoptheorem
 
 
\section{This is a section}
 
 
Here we do have a section.
 
 
\startremark
 
This is a silly remark.
 
\stopremark
 
 
\startlemma
 
This is an elementary result.
 
\stoplemma
 
 
\starttheorem
 
This is a deep theorem.
 
\stoptheorem
 
 
\startremark[rem:silly]
 
This is a silly remark.
 
\stopremark
 
 
\startlemma
 
This is an elementary result.
 
\stoplemma
 
 
\starttheorem[thm:deep]
 
This is a deep theorem.
 
\stoptheorem
 
 
As mentioned in remark \in[rem:silly], the results of lemma \in[lem:elem] and that of theorem \in[thm:deep] are trivial.
 
 
\stoptext
 
 
</texcode>
 
 
This results in the following (…oops… the ConTeXt version on the wiki doesn't run mkiv as one would have expected: the numbering is wrong in the output, see below for the numebring after Remark 1.1. However this issue has been fixed in ConTeXt version 2009.11.30 22:20 and later running mkiv):
 
 
 
<context>
 
 
\defineenumeration[remark]
 
[text=Remark,
 
location=serried,
 
width=fit,
 
right={.~}]
 
\setupenumerations[remark]
 
[prefix=yes,
 
prefixsegments=section] % or prefixsegments=chapter:section
 
\setupnumber[remark][way=bysection]
 
 
\defineenumeration[lemma]
 
[text=Lemma,
 
 
location=serried,
 
location=serried,
 
width=fit,
 
width=fit,
 
counter=remark, % only use counter of remark
 
counter=remark, % only use counter of remark
style=slanted,
 
right={.~}]
 
\setupenumerations[lemma]
 
[prefix=yes,
 
prefixsegments=section]
 
 
\defineenumeration[theorem]
 
[text=Theorem,
 
location=serried,
 
width=fit,
 
counter=remark,
 
 
style=slanted,
 
style=slanted,
 
right={.~}]
 
right={.~}]
Line 314: Line 117:
 
This is a silly remark.
 
This is a silly remark.
 
\stopremark
 
\stopremark
 
\startlemma[lem:elem]
 
This is an elementary result.
 
\stoplemma
 
  
 
\starttheorem
 
\starttheorem
Line 326: Line 125:
 
This is a silly remark.
 
This is a silly remark.
 
\stopremark
 
\stopremark
 
\startlemma
 
This is an elementary result.
 
\stoplemma
 
  
 
\starttheorem
 
\starttheorem
Line 342: Line 137:
 
This is a silly remark.
 
This is a silly remark.
 
\stopremark
 
\stopremark
 
\startlemma
 
This is an elementary result.
 
\stoplemma
 
  
 
\starttheorem
 
\starttheorem
Line 354: Line 145:
 
This is a silly remark.
 
This is a silly remark.
 
\stopremark
 
\stopremark
 
\startlemma
 
This is an elementary result.
 
\stoplemma
 
  
 
\starttheorem[thm:deep]
 
\starttheorem[thm:deep]
Line 363: Line 150:
 
\stoptheorem
 
\stoptheorem
  
As mentioned in remark \in[rem:silly], the results of lemma \in[lem:elem] and that of theorem \in[thm:deep] are trivial.
+
As mentioned in remark \in[rem:silly], the result of theorem \in[thm:deep] is trivial.
  
 
\stoptext
 
\stoptext
 
 
</context>
 
</context>

Revision as of 16:30, 29 June 2012

In Plain-TeX there is the command \proclaim which is very handy when writing mathematics and stating theorems, lemmas, definitions and so on. Unfortunately it doesn't allow one to number automatically these statements in order to refer to them through cross referencing, and somehow it has disappeared from ConTeXt.

If one wishes to number all these ‘proclaimations’, regardless of type and in the order in which they appear, here is a solution which works very well in ConTeXt Mark II. (For a solution with Mark IV see below.)

\setuppapersize[A5]

%% defining an enumeration environment replacing Plain-TeX's \proclaim
\defineenumeration[proclaim]
	[text=,
	style=slanted,
	title=yes,
	titleleft=,
	titleright=,
	location=serried,
	width=fit,
	right={. }]
\setupnumber[proclaim][way=bysection, numbersection=yes] %% this can be changed according to one's wishes
%
%% end definition \proclaim

\starttext
\title{On proclamations}
\blank
When there is not a declared section, the numbers have no prefix as in the following:

\startproclaim[def:test]{Definition}
This is a definition.
\stopproclaim

\startproclaim{Lemma}
This is a lemma.
\stopproclaim

\section{Here is a section}

When there is a declared section, the numbers have as prefix the section number, as in the following:

\startproclaim{Lemma}
Here is another lemma.
\stopproclaim

\startproclaim[thm:result]{Theorem}
This is our main theorem.
\stopproclaim

\section{Here is another section}

When there is a declared section the numbers have as prefix the section number, as in the following:

\startproclaim[lem:resultB]{Lemma}
Here is an elementary lemma.
\stopproclaim

\startproclaim{Corollary}
This is a corollary.
\stopproclaim

Note that we can refer to our results in the following way: according to the definition \in[def:test] we see that theorem \in[thm:result] is
 an easy consequence  of  lemma \in[lem:resultB].

\stoptext


In Mark IV there is another solution which consists in defining first a certain ‘enumeration’ (in the example below for Remarks) and then use the counter created for this enumeration in other enumerations such as lemmas, theorems, etc.

% mode=mkiv

\setuppapersize[A5]

\defineenumeration[remark]
	[text=Remark,
	location=serried,
	width=fit,
	right={.~}]
\setupenumerations[remark]
	[prefix=yes,
	prefixsegments=section] % or prefixsegments=chapter:section
\setupnumber[remark][way=bysection]

\defineenumeration[theorem]
	[text=Theorem,
	location=serried,
	width=fit,
	counter=remark, % only use counter of remark
	style=slanted,
	right={.~}]
\setupenumerations[theorem]
	[prefix=yes,
	prefixsegments=section]

\starttext

\title{First and only title of the article}

This file has been typeset 
on \currentdate{} 
at \currenttime, 
with 
\doifmodeelse{mkiv}
	{mkiv, 
	LuaTeX version \the\luatexversion,
	LuaTeX revision \luatexrevision,
	(LuaTeX date stamp \luatexdatestamp),
	using the command: \par
	\type{context basic-test.tex}\par}
	{mkii, 
	using the command: \par
	\type{texexec basic-test.tex}\par}
	ConTeXt version \contextversion.
Here we don't have any section.

\startremark
This is a silly remark.
\stopremark

\starttheorem
This is a deep theorem.
\stoptheorem

\startremark
This is a silly remark.
\stopremark

\starttheorem
This is a deep theorem.
\stoptheorem

\section{This is a section}

Here we do have a section.

\startremark
This is a silly remark.
\stopremark

\starttheorem
This is a deep theorem.
\stoptheorem

\startremark[rem:silly]
This is a silly remark.
\stopremark

\starttheorem[thm:deep]
This is a deep theorem.
\stoptheorem

As mentioned in remark \in[rem:silly], the result of theorem \in[thm:deep] is trivial.

\stoptext

internal error: copy error XDCeg0/cropped.pdf