Difference between revisions of "Document Titles"

From Wiki
Jump to navigation Jump to search
(Added a simple solution, to start with.)
(Finished the answer, including a proper solution as well as the simple one.)
Line 19: Line 19:
 
== In ConTeXt: A simple solution ==
 
== In ConTeXt: A simple solution ==
  
The ConTeXt philosophy is for the author to specify the formatting, rather than selecting from existing formats.  A simple solution is thus to write the title block directly; the following version is a close duplicate of the version produced by the <code>\maketitle</code> command in LaTeX's startard article class.
+
The ConTeXt philosophy is for the author to specify the formatting, rather than selecting from existing formats.  A simple solution is thus to write the title block directly; the following version is a close duplicate of the version produced by the <code>\maketitle</code> command in LaTeX's startard article class.  Obviously, the fine details of spacing and font sizes can be adjusted as desired.
  
 
<texcode>
 
<texcode>
Line 57: Line 57:
 
== In ConTeXt: A more flexible solution ==
 
== In ConTeXt: A more flexible solution ==
  
{{howto}}
+
The simple solution replicates the appearance of the LaTeX original, but it doesn't replicate the spirit of it, which is to separate the formatting from the content.  We can do this by creating the following definitions, and putting them in a module file.  The <code>\title</code> and similar commands are copied nearly directly from the LaTeX kernel, and the formatting command the same as the previous version.
 +
 
 +
<texcode>
 +
\unprotect
 +
\def\title#1{\gdef\@title{#1}}
 +
\def\author#1{\gdef\@author{#1}}
 +
\def\date#1{\gdef\@date{#1}}
 +
\date{\today}  % Default to today unless specified otherwise.
 +
 
 +
\def\maketitle{%
 +
  \startalignment[center]
 +
    \blank[2*big]
 +
      {\tfd \@title}
 +
    \blank[3*medium]
 +
      {\tfa \@author}
 +
    \blank[2*medium]
 +
      {\tfa \@date}
 +
    \blank[3*medium]
 +
  \stopalignment}
 +
\protect
 +
</texcode>
 +
 
 +
Suppose that we save this in the file <code>t-title.tex</code>.  Then, we can use this in our main ConTeXt document with the following syntax, which is quite similar to the LaTeX version aside from the addition of the <cmd>usepackage</cmd><tt>[title]</tt> command in place of <code>\documentclass{article}</code>.
 +
 
 +
<texcode>
 +
\usepackage[title]
 +
  \title{How to do this in Context}
 +
  \author{The author}
 +
  \date{July 26, 2005}
 +
 
 +
\starttext
 +
  \maketitle
 +
  Then, the actual text of the document starts here.  We'll put in enough text to
 +
  fill out the line and start to make a paragraph.
 +
\stoptext
 +
</texcode>
 +
 
 +
The result is, of course, identical to the previous version.  Now, the <code>t-title.tex</code> macros can be shared between any number of documents, and changes will affect all of the documents that use this file.
 +
 
 +
<context>
 +
\unprotect
 +
\def\title#1{\gdef\@title{#1}}
 +
\def\author#1{\gdef\@author{#1}}
 +
\def\date#1{\gdef\@date{#1}}
 +
\date{\today}  % Default to today unless specified otherwise.
 +
 
 +
\def\maketitle{%
 +
  \startalignment[center]
 +
    \blank[2*big]
 +
      {\tfd \@title}
 +
    \blank[3*medium]
 +
      {\tfa \@author}
 +
    \blank[2*medium]
 +
      {\tfa \@date}
 +
    \blank[3*medium]
 +
  \stopalignment}
 +
\protect
 +
 
 +
\title{How to do this in Context}
 +
\author{The author}
 +
\date{July 26, 2005}
 +
 
 +
\starttext
 +
\maketitle
 +
Then, the actual text of the document starts here.  We'll put in enough text to
 +
fill out the line and start to make a paragraph.
 +
\stoptext
 +
</context>

Revision as of 23:14, 3 September 2005

< From LaTeX to ConTeXt >

In LaTeX

The standard LaTeX document classes define a \maketitle command, along with \title, \author, and \date commands, which can be used to produce a relatively automatic title block.

\documentclass{article}
  \title{How to do this in Context}
  \author{The author}
  \date{July 26, 2005}
\begin{document}
  \maketitle
\end{document}

The title, author, and date defined by these commands is also used to create the PDF authoring information, if appropriate packages are used. (I'm not sure of the details of this; will look them up later. --Brooks)

In ConTeXt: A simple solution

The ConTeXt philosophy is for the author to specify the formatting, rather than selecting from existing formats. A simple solution is thus to write the title block directly; the following version is a close duplicate of the version produced by the \maketitle command in LaTeX's startard article class. Obviously, the fine details of spacing and font sizes can be adjusted as desired.

\starttext
\startalignment[center]
  \blank[2*big]
    {\tfd How to do this in Context}
  \blank[3*medium]
    {\tfa The author}
  \blank[2*medium]
    {\tfa July 26, 2005}
  \blank[3*medium]
\stopalignment

Then, the actual text of the document starts here.  We'll put in enough text to
fill out the line and start to make a paragraph.
\stoptext

In ConTeXt: A more flexible solution

The simple solution replicates the appearance of the LaTeX original, but it doesn't replicate the spirit of it, which is to separate the formatting from the content. We can do this by creating the following definitions, and putting them in a module file. The \title and similar commands are copied nearly directly from the LaTeX kernel, and the formatting command the same as the previous version.

\unprotect
\def\title#1{\gdef\@title{#1}}
\def\author#1{\gdef\@author{#1}}
\def\date#1{\gdef\@date{#1}}
\date{\today}  % Default to today unless specified otherwise.

\def\maketitle{%
  \startalignment[center]
    \blank[2*big]
      {\tfd \@title}
    \blank[3*medium]
      {\tfa \@author}
    \blank[2*medium]
      {\tfa \@date}
    \blank[3*medium]
  \stopalignment}
\protect

Suppose that we save this in the file t-title.tex. Then, we can use this in our main ConTeXt document with the following syntax, which is quite similar to the LaTeX version aside from the addition of the \usepackage[title] command in place of \documentclass{article}.

\usepackage[title]
  \title{How to do this in Context}
  \author{The author}
  \date{July 26, 2005}

\starttext
  \maketitle
  Then, the actual text of the document starts here.  We'll put in enough text to
  fill out the line and start to make a paragraph.
\stoptext

The result is, of course, identical to the previous version. Now, the t-title.tex macros can be shared between any number of documents, and changes will affect all of the documents that use this file.