Received: by nummer-3.proteosys id <01C19443.4F814C8C@nummer-3.proteosys>; Thu, 3 Jan 2002 11:42:16 +0100 Return-Path: <@vm.gmd.de:LATEX-L@DHDURZ1.BITNET> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C19443.4F814C8C" x-vm-v5-data: ([nil nil nil nil nil nil t nil nil][nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil]) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message Subject: lux.tex Date: Fri, 20 Dec 1991 12:32:30 +0100 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: From: "Frank Mittelbach" Sender: "LaTeX-L Mailing list" To: "Rainer M. Schoepf" Reply-To: "LaTeX-L Mailing list" Status: R X-Status: X-Keywords: X-UID: 470 This is a multi-part message in MIME format. ------_=_NextPart_001_01C19443.4F814C8C Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable % Changes by Chris are marked (approxly) by %%CCC % Comments and questions, even answers! are in marginals. % We probably need to be more precise about the syntax and about % the implementation, particularly of the "preprocessing" of the % table, and the storing of computed values before sending it out % more generally for comments. \documentstyle[11pt]{article} % draft defs: \def \ccc #1{\marginpar{\raggedright{\bf CAR:} #1}} \author{Chris Rowley \and Rainer Sch\"opf} \date{Paris, Jardin du Luxembourg, Stardate 1991/09/26 11:00:00:00.00} \title{How to treat math fonts --- how to specify them} \begin{document} \maketitle \section{Notation} Just to distinguish these dreaded kinds of text size\ldots \begin{description} %%CCC \item [text-size] The size used in the text surrounding a math formula, i.e., outside of math mode. %%CCC \item [mathsize] Inside a math formula, the size\ccc{Phil T suggested `mathsize' for this.} used for \verb|\textstyle|. \item [scriptsize] Inside a math formula, the size used for \verb|\scriptstyle|. \item [scriptscriptsize] Inside a math formula, the size used for \verb|\scriptscriptstyle|. \end{description} \section{Informal specification} %%CCC The mathsize, scriptsize and scriptscriptsize to be used with a given text-size can be specified by giving a sequence of \begin{quote} ``math font size specification'' (MFS). \end{quote} %%CCC An MFS consists of a range, plus $3$ ``functions'' which, in general, take the actual text-size as argument and should be defined to return these $3$ %%CCC values in $3$ specified places (see below). General functions will be supported, but easy specification of certain = commonly used {\em linear functions\/} will be supported, in particular \begin{enumerate} %%CCC \item the linear function defined by giving its values at the end = points of the range, %%CCC \item the linear function defined by giving its slope and its value at a given point\ccc{Any given point, or just, say, the = beginning of the range?}, \item the identity function, %%CCC \item constant functions, \item dilation functions. \end{enumerate} The idea behind this is the following: the table entries are searched %%CCC until the first entry is found for which the requested ``text-size'' falls within the specified range. Then the three functions associated with that range are called, with the ``text-size'' as argument. Each of these three functions computes a number and leaves it, say, in a macro \ccc{I would suggest a macro: isnt this just the existing two macros, plus a `mathsize' one?} or dimen register. It is then easy to select the math fonts at the sizes that have just been computed (loading them if necessary). %%CCC [One\ccc{Cant this be done by just using suitable functions/ ranges?} thing that needs further thought is the question of using `nearby' sizes, e.g. 8pt if the computed value is 7.8pt. Even though the = surrounding text may be set at 7.8pt it may still be worthwhile to use 8pt math, for example since one doesn't want to recompute the fonts at 7.8pt.] \subsection{nomathsizes?} We are not sure whether the concept of ``nomathsizes'' should remain. %%CCC If it does, what should its effect be? Simply not switch the math fonts, thereby producing surprising results if one uses math---but remember that some constructions (eg itemize labels and footnote markers) involve ``hidden maths''? Or give an error message when math mode is entered---this may also cause surprises due to ``hidden maths''? \subsection{Short forms} %%CCC ``Short forms'' for presently supported cases (i.e.~when the range is a single value) should be provided, e.g.~for saying: 10pt ``text-size'' uses 10/7/5 for = math. Perhaps there is a need for short forms for other simple cases as well\ccc{Example: $I/0.7I/0.5I$ where $I$ is the identity.}? \subsection{Fallback} We suggest a ``suitable linear function'' as fall-back when the requested ``text-size'' matches none of the given ranges. This could be done by appending ``invisible'' extra entries at the end of the table (assuming linear search,\ccc{What other search could be used?} for the = moment). %%CCC \section{Implementation options} %%CCC One could preprocess the table and look for ``simple entries'', i.e. single value ranges (SVRs). The processed table would be constructed so that these SVRs are tried first, before the ranges. Since this could be done by a simple lookup, similar\ccc{See para below.} to the mechanism in use in the present NFSS, these cases would be comparatively fast. [But this means that these simple entries have different semantics >from ranges, since they are always tried before any range. One might want to get special effects by inserting these simple entries between range entries. But is this sensible?\ccc{I cannot think of any use for this.}] [{\bf CAR:} Would it be much slower if this were not done by just expanding a macro? If the SVRs were still kept in a table, in such a way that there presence could be easily detected and the assignments could be quickly made by that table entry, then this table could be changed by either addition or deletion, as suggested below. A table and look-up like the one used for finding an external font-file name would work, thus the overhead would be like one extra font to check for each size change: or maybe more due to catcode problems?] %%CCC An extension of this idea is to record the result of every calculation in the same way as simple entries: i.e. after 11.25pt has been requested for the first time, there is a simple entry for 11.25pt---thus, if (as is likely) this size is used again, then it can be processed quickly next time. But this needs a switch, to prevent this from happening\ccc{I dont understand this, but see my table suggestion above.}. %%CCC One needs also to consider the possibility of changing the table during processing, i.e.~forgetting everything that has been calculated so far. We are not sure whether this is needed or whether it is even sensible to allow this. But it might happen that, when another font family is used, different sizes are needed for = math. \section{An extension} One could have more than three functions in a ``math font size specification''. These extra functions would be used to calculate values based on ranges for ``text-size'', e.g., \verb|\jot|, or for tweaking the fontdimen parameters\ccc{This could be done by allowing optional ``arbitrary functions'' with input the ``text-size'' supplied, possibly as an argument to these functions.}. This certainly needs more thought. \end{document} ------_=_NextPart_001_01C19443.4F814C8C Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable lux.tex

% Changes by Chris are marked (approxly) by = %%CCC
% Comments and questions, even answers! are in = marginals.
% We probably need to be more precise about the = syntax and about
%  the implementation, particularly of the = "preprocessing" of the
%  table, and the storing of computed values = before sending it out
%  more generally for comments.

\documentstyle[11pt]{article}
% draft defs:
\def \ccc #1{\marginpar{\raggedright{\bf CAR:} = #1}}
\author{Chris Rowley \and Rainer = Sch\"opf}

\date{Paris, Jardin du Luxembourg, Stardate 1991/09/26 = 11:00:00:00.00}

\title{How to treat math fonts --- how to specify = them}

\begin{document}

\maketitle

\section{Notation}

Just to distinguish these dreaded kinds of text = size\ldots
\begin{description}
%%CCC
  \item [text-size] The size used in the text = surrounding a math
        formula, = i.e., outside of math mode.
%%CCC
  \item [mathsize] Inside a math formula, the = size\ccc{Phil T
suggested `mathsize' for this.}
        used for = \verb|\textstyle|.
  \item [scriptsize] Inside a math formula, the = size
        used for = \verb|\scriptstyle|.
  \item [scriptscriptsize] Inside a math = formula, the size
        used for = \verb|\scriptscriptstyle|.
\end{description}

\section{Informal specification}
%%CCC
The
mathsize, scriptsize and scriptscriptsize to be used = with a given
text-size can be
specified by giving a sequence of
\begin{quote}
  ``math font size specification'' (MFS).
\end{quote}
%%CCC
An MFS consists of a range, plus $3$ ``functions'' = which, in general,
take the actual text-size as argument and should = be
defined to return these $3$
%%CCC
values in $3$ specified places (see below).

General functions will be supported, but easy = specification of certain commonly
used {\em linear functions\/}
will be supported, in particular
\begin{enumerate}
%%CCC
  \item the linear function defined by giving = its values at the end points
        of the = range,
%%CCC
  \item the linear function defined by giving = its slope and its
        value at a = given point\ccc{Any given point, or just, say, the beginning
of the range?},
  \item the identity function,
%%CCC
  \item constant functions,
  \item dilation functions.
\end{enumerate}
The idea behind this is the following: the table = entries are searched
%%CCC
until the first entry is found for which the
requested ``text-size'' falls within the specified = range.
Then the three functions associated with
that range are called, with the ``text-size'' as = argument. Each of
these three functions computes a number and leaves = it, say, in a macro
\ccc{I would suggest a macro: isnt this just the = existing two macros,
plus a `mathsize' one?}
or dimen register. It is then easy to select the math = fonts at the sizes
that have just been computed (loading them if = necessary).

%%CCC
[One\ccc{Cant this be done by just using suitable = functions/ ranges?}
 thing that needs further thought is the = question of using `nearby'
sizes, e.g. 8pt if the computed value is 7.8pt. Even = though the surrounding
text may be set at 7.8pt it may still be worthwhile = to use 8pt math, for
example since one doesn't want to recompute the fonts = at 7.8pt.]

\subsection{nomathsizes?}

We are not sure whether the concept of ``nomathsizes'' = should remain.
%%CCC
If it does, what should its effect be? Simply not = switch the math
fonts, thereby producing surprising results if one = uses math---but
remember that some constructions (eg itemize labels = and footnote
markers) involve ``hidden maths''? Or
give an error message when math mode is = entered---this may also
cause surprises due to ``hidden maths''?

\subsection{Short forms}

%%CCC
``Short forms'' for presently supported cases = (i.e.~when the range is
a single value)
should be provided, e.g.~for saying: 10pt = ``text-size'' uses 10/7/5 for math.
Perhaps there is a need for
short forms for other simple cases as = well\ccc{Example: $I/0.7I/0.5I$
where $I$ is the identity.}?

\subsection{Fallback}

We suggest a ``suitable linear function'' as fall-back = when the
requested ``text-size'' matches none of the given = ranges. This could be
done by appending  ``invisible'' extra entries = at the end of the table
(assuming linear search,\ccc{What other search could = be used?} for the moment).


%%CCC
\section{Implementation options}

%%CCC
One could preprocess the table and look for ``simple = entries'', i.e.
single value ranges (SVRs).  The = processed
table would be constructed so that these SVRs are = tried first,
before the ranges. Since this could be done by a = simple
lookup, similar\ccc{See para below.}
to the mechanism in use in the present NFSS, = these
cases would be comparatively fast.

[But this means that these simple entries have = different semantics
>from ranges, since they are always tried before = any range. One might
want to get special effects by inserting these simple = entries between
range entries. But is this sensible?\ccc{I cannot = think of any use for
this.}]

[{\bf CAR:} Would it be much slower if this were not = done by
just expanding a macro?  If the SVRs were still = kept in
a table, in such a way that there presence could be = easily detected
and the assignments could be quickly made by that = table entry, then
this table could be changed by either addition or = deletion, as
suggested below. A table and look-up like the one = used for finding an
external font-file name would work, thus the overhead = would be like
one extra font to check for each size change: or = maybe more due to
catcode problems?]

%%CCC
An extension of this idea is to record the result of = every calculation
in the same way as simple entries: i.e. after 11.25pt = has been requested
for the first time, there is a simple entry for = 11.25pt---thus, if (as
is likely) this size is used again, then it can be = processed quickly
next time.

But this needs a switch, to prevent this from = happening\ccc{I dont
understand this, but see my table suggestion = above.}.

%%CCC
One needs also to
consider the possibility of changing the table during = processing,
i.e.~forgetting everything
that has been calculated so far. We are not sure = whether this is needed
or whether it is even sensible to allow this. But it = might happen
that, when another font family is used, different = sizes are needed for math.

\section{An extension}

One could have more than three functions in a ``math = font size
specification''. These extra functions would be used = to calculate values
based on ranges for ``text-size'', e.g., \verb|\jot|, = or
for tweaking the fontdimen parameters\ccc{This could = be done by
allowing optional ``arbitrary functions'' with input = the
``text-size'' supplied, possibly as an argument to = these functions.}.

This certainly  needs more thought.

\end{document}


------_=_NextPart_001_01C19443.4F814C8C--