[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r4988 - Extractor/doc
From: |
gnunet |
Subject: |
[GNUnet-SVN] r4988 - Extractor/doc |
Date: |
Sat, 9 Jun 2007 03:04:56 -0600 (MDT) |
Author: grothoff
Date: 2007-06-09 03:04:55 -0600 (Sat, 09 Jun 2007)
New Revision: 4988
Modified:
Extractor/doc/extractor.texi
Extractor/doc/mdate-sh
Extractor/doc/texinfo.tex
Log:
info pages update
Modified: Extractor/doc/extractor.texi
===================================================================
--- Extractor/doc/extractor.texi 2007-06-09 08:20:05 UTC (rev 4987)
+++ Extractor/doc/extractor.texi 2007-06-09 09:04:55 UTC (rev 4988)
@@ -319,18 +319,41 @@
@node Customizing the Plugins
@section Customizing the Plugins
address@hidden EXTRACTOR_loadConfigLibraries
address@hidden|EXTRACTOR_loadConfigLibraries|}
+The functions described in this section can be used to control which
+plugins are loaded and in which order they are executed. This provides
+more control than simply sticking to the default list. It is recommended
+that clients start by loading the default plugins and then allow the user
+to perform further customizations using command-line options or a
+configuration file.
@findex EXTRACTOR_addLibrary
address@hidden|EXTRACTOR_addLibrary|}
+The @verb{|EXTRACTOR_addLibrary|} function can be used to add a
+single plugin to the front of the list of already loaded plugins.
@findex EXTRACTOR_addLibraryLast
address@hidden|EXTRACTOR_addLibraryLast|}
+Use @verb{|EXTRACTOR_addLibraryLast|} to add a plugin to the end of
+the list of plugins. Plugins at the end can benefit from analyses
+performed by plugins earlier (such as mime-type detection). This can
+be useful to avoid more expensive processing. Some plugins need to be
+loaded last since they transform the keyword list. For example, the
address@hidden|split|} plugin tokenizes the meta data returned by other
+plugins. Since this plugin needs the keywords generated by the other
+plugins as its' input, it must be run last in order to ensure that it
+is applied to all keywords.
@findex EXTRACTOR_removeLibrary
address@hidden|EXTRACTOR_removeLibrary|}
+The @verb{|EXTRACTOR_removeLibrary|} function can be used to unload
+a specific plugin.
address@hidden EXTRACTOR_loadConfigLibraries
+The @verb{|EXTRACTOR_loadConfigLibraries|} provides a simple interface
+for highly customized loading of plugins. The provided configuration
+string can specify multiple plugins (seperated by colons) with
+optional arguments to the plugins (in parenteses after the plugin
+name). By default the plugins are pre-pended to the plugin list in
+the order that the plugins are processed; however, by prefixing the
+plugin name with a minus-sign that particular library will be
+appended to the list.
@@ -365,22 +388,44 @@
@section Utility Constants
@findex EXTRACTOR_VERSION
address@hidden|EXTRACTOR_VERSION|}
+The constant @verb{|EXTRACTOR_VERSION|} is a hexadecimal
+representation of the version number of the installed libextractor
+header. The hexadecimal format is 0xAABBCCDD where AA is the major
+version (so far always 0), BB is the minor version, CC is the revision
+and DD the patch number. For example, for version 0.5.18, we would
+have AA=0, BB=5, CC=18 and DD=0. Minor releases such as 0.5.18a or
+significant changes in unreleased versions would be marked with DD=1
+or higher.
+
@findex EXTRACTOR_getDefaultLibraries
address@hidden|EXTRACTOR_getDefaultLibraries|}
+If your code needs to find out what the set of default
+plugins that would be loaded with
address@hidden|EXTRACTOR_loadDefaultLibraries|} is, the function
address@hidden|EXTRACTOR_getDefaultLibraries|} returns a constant
+string which follows the format of
address@hidden|EXTRACTOR_loadConfigLibraries|} and specifies
+the set of default plugins for this version of
+libextractor.
@node Misc Keyword List
@section Misc Keyword List
+This section describes a couple of convenience functions for
+manipulating the keyword list.
@findex EXTRACTOR_printKeywords
address@hidden|EXTRACTOR_printKeywords|}
+The @verb{|EXTRACTOR_printKeywords|} is a simple function which
+prints the meta data found with libextractor to a file. The
+function is mostly useful for debugging and as an example for
+how to manipulate the keyword list.
@findex EXTRACTOR_countKeywords
address@hidden|EXTRACTOR_countKeywords|}
+The @verb{|EXTRACTOR_countKeywords|} returns the number of
+keywords found. It simply traverses the linked list and
+determines its length.
@node Cleaning up the Keyword List
@@ -388,13 +433,28 @@
@findex EXTRACTOR_removeDuplicateKeywords
address@hidden|EXTRACTOR_removeDuplicateKeywords|}
+The @verb{|EXTRACTOR_removeDuplicateKeywords|} function can be used to
+remove duplicate keywords. This is useful since the same keyword can
+be extracted by multiple plugins. In addition to the keyword list,
+the function requires an argument options which is used to specify
+what should be considered a duplicate. The value zero should be used
+if only exact matches (same keyword string and same meta data type)
+should be removed. Use @verb{|EXTRACTOR_DUPLICATES_TYPELESS|} in
+order to remove duplicate keywords even if the meta data types are
+different. Use @verb{|EXTRACTOR_DUPLICATES_REMOVE_UNKNOWN|} to remove
+entries where the keywords match exactly and one of the keyword types
+is @verb{|EXTRACTOR_UNKNOWN|}. Given the choice,
address@hidden|EXTRACTOR_removeDuplicateKeywords|} will always prefer to
+remove the duplicate keyword with the @verb{|EXTRACTOR_UNKNOWN|} and
address@hidden|EXTRACTOR_SPLIT|} types.
@findex EXTRACTOR_removeEmptyKeywords
address@hidden|EXTRACTOR_removeEmptyKeywords|}
+The @verb{|EXTRACTOR_removeEmptyKeywords|} simply removes meta data
+entries that are empty strings.
@findex EXTRACTOR_removeKeywordsOfType
address@hidden|EXTRACTOR_removeKeywordsOfType|}
+The @verb{|EXTRACTOR_removeKeywordsOfType|} function can be used to
+remove all keywords of a particular meta data type.
@node Finding Keywords
@@ -402,24 +462,54 @@
@findex EXTRACTOR_extractLast
address@hidden|EXTRACTOR_extractLast|}
+The @verb{|EXTRACTOR_extractLast|} function returns the
+last keyword value in the linked list that has the given
+meta data type.
@findex EXTRACTOR_extractLastByString
address@hidden|EXTRACTOR_extractLastByString|}
+The @verb{|EXTRACTOR_extractLastByString|} works exactly
+like @verb{|EXTRACTOR_extractLast|} except that the meta
+data type is specified using the corresponding string
+value.
@node Binary Meta data
@section Binary Meta data
+libextractor supports binary meta data. At this point, binary
+meta data is rarely encountered -- the default meta data plugins
+do not generate binary meta data. However, you can load one of
+the thumbnail-plugins to generate thumbnails for various images.
+These thumbnails are binary meta data. In the future it is
+conceivable that additional binary meta data extractors will be
+implemented.
+
+Since the simple linked list of keywords that is used by the
+libextractor API only contains 0-terminated strings, binary
+meta data cannot be directly returned as-is by the plugins.
+Also, if binary meta data is returned, the keyword string does
+not point to the usual UTF-8 encoded string. Applications must
+be aware of this in order to avoid printing binary meta data
+by accident as if it was UTF-8.
+
@findex EXTRACTOR_isBinaryType
address@hidden|EXTRACTOR_isBinaryType|}
+The @verb{|EXTRACTOR_isBinaryType|} function is used to test if a
+particular meta data type contains binary meta data. If this function
+returns 0, the client can be certain that the keyword is UTF-8 and not
+binary.
@findex EXTRACTOR_binaryDecode
address@hidden|EXTRACTOR_binaryDecode|}
+In order to handle zero-bytes in binary data, libextractor
+encodes binary data in a particular format. The function
address@hidden|EXTRACTOR_binaryDecode|} can be used to convert the
+0-terminated string back to the standard binary format.
@findex EXTRACTOR_binaryEncode
address@hidden|EXTRACTOR_binaryEncode|}
+The @verb{|EXTRACTOR_binaryEncode|} function converts binary data into
+libextractor's internal 0-terminated binary format. This function is
+mostly useful for writing plugins that need to return binary meta
+data.
Modified: Extractor/doc/mdate-sh
===================================================================
--- Extractor/doc/mdate-sh 2007-06-09 08:20:05 UTC (rev 4987)
+++ Extractor/doc/mdate-sh 2007-06-09 09:04:55 UTC (rev 4988)
@@ -1,10 +1,9 @@
#!/bin/sh
# Get modification time of a file or directory and pretty-print it.
-scriptversion=2005-06-29.22
+scriptversion=2003-11-09.00
-# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005 Free Software
-# Foundation, Inc.
+# Copyright (C) 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
# written by Ulrich Drepper <address@hidden>, June 1995
#
# This program is free software; you can redistribute it and/or modify
@@ -19,7 +18,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -43,11 +42,11 @@
Report bugs to <address@hidden>.
EOF
- exit $?
+ exit 0
;;
-v | --v*)
echo "mdate-sh $scriptversion"
- exit $?
+ exit 0
;;
esac
@@ -59,16 +58,8 @@
LC_TIME=C
export LC_TIME
-# GNU ls changes its time format in response to the TIME_STYLE
-# variable. Since we cannot assume `unset' works, revert this
-# variable to its documented default.
-if test "${TIME_STYLE+set}" = set; then
- TIME_STYLE=posix-long-iso
- export TIME_STYLE
-fi
+save_arg1="$1"
-save_arg1=$1
-
# Find out how to get the extended ls output of a file or directory.
if ls -L /dev/null 1>/dev/null 2>&1; then
ls_command='ls -L -l -d'
@@ -89,7 +80,7 @@
# words should be skipped to get the date.
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
-set x`ls -l -d /`
+set - x`$ls_command /`
# Find which argument is the month.
month=
@@ -116,32 +107,13 @@
done
# Get the extended ls output of the file or directory.
-set dummy x`eval "$ls_command \"\$save_arg1\""`
+set - x`eval "$ls_command \"\$save_arg1\""`
# Remove all preceding arguments
eval $command
-# Because of the dummy argument above, month is in $2.
-#
-# On a POSIX system, we should have
-#
-# $# = 5
-# $1 = file size
-# $2 = month
-# $3 = day
-# $4 = year or time
-# $5 = filename
-#
-# On Darwin 7.7.0 and 7.6.0, we have
-#
-# $# = 4
-# $1 = day
-# $2 = month
-# $3 = year or time
-# $4 = filename
-
-# Get the month.
-case $2 in
+# Get the month. Next argument is day, followed by the year or time.
+case $1 in
Jan) month=January; nummonth=1;;
Feb) month=February; nummonth=2;;
Mar) month=March; nummonth=3;;
@@ -156,10 +128,7 @@
Dec) month=December; nummonth=12;;
esac
-case $3 in
- ???*) day=$1;;
- *) day=$3; shift;;
-esac
+day=$2
# Here we have to deal with the problem that the ls output gives either
# the time of day or the year.
Modified: Extractor/doc/texinfo.tex
===================================================================
--- Extractor/doc/texinfo.tex 2007-06-09 08:20:05 UTC (rev 4987)
+++ Extractor/doc/texinfo.tex 2007-06-09 09:04:55 UTC (rev 4988)
@@ -3,10 +3,10 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2005-07-05.19}
+\def\texinfoversion{2004-05-16.08}
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
% Foundation, Inc.
%
% This texinfo.tex file is free software; you can redistribute it and/or
@@ -21,8 +21,8 @@
%
% You should have received a copy of the GNU General Public License
% along with this texinfo.tex file; see the file COPYING. If not, write
-% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-% Boston, MA 02110-1301, USA.
+% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
%
% As a special exception, when this file is read by TeX when processing
% a Texinfo source document, you may use the result without
@@ -89,11 +89,10 @@
\let\ptexhat=^
\let\ptexi=\i
\let\ptexindent=\indent
+\let\ptexnoindent=\noindent
\let\ptexinsert=\insert
\let\ptexlbrace=\{
\let\ptexless=<
-\let\ptexnewwrite\newwrite
-\let\ptexnoindent=\noindent
\let\ptexplus=+
\let\ptexrbrace=\}
\let\ptexslash=\/
@@ -155,12 +154,10 @@
% In some macros, we cannot use the `\? notation---the left quote is
% in some cases the escape char.
-\chardef\backChar = `\\
\chardef\colonChar = `\:
\chardef\commaChar = `\,
\chardef\dotChar = `\.
\chardef\exclamChar= `\!
-\chardef\plusChar = `\+
\chardef\questChar = `\?
\chardef\semiChar = `\;
\chardef\underChar = `\_
@@ -169,12 +166,6 @@
\chardef\spacecat = 10
\def\spaceisspace{\catcode\spaceChar=\spacecat}
-{% for help with debugging.
- % example usage: \expandafter\show\activebackslash
- \catcode`\! = 0 \catcode`\\ = \active
- !global!def!activebackslash{\}
-}
-
% Ignore a token.
%
\def\gobble#1{}
@@ -310,7 +301,10 @@
% take effect in \write's, yet the group defined by the \vbox ends
% before the \shipout runs.
%
+ \escapechar = `\\ % use backslash in output files.
\indexdummies % don't expand commands in the output.
+ \normalturnoffactive % \ in index entries must not stay \, e.g., if
+ % the page break happens to be in the middle of an example.
\shipout\vbox{%
% Do this early so pdf references go to the beginning of the page.
\ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
@@ -361,7 +355,7 @@
\egroup % \vbox from first cropmarks clause
\fi
}% end of \shipout\vbox
- }% end of group with \indexdummies
+ }% end of group with \normalturnoffactive
\advancepageno
\ifnum\outputpenalty>-20000 \else\dosupereject\fi
}
@@ -571,7 +565,7 @@
\let\}=\myrbrace
\begingroup
% Definitions to produce \{ and \} commands for indices,
- % and @{ and @} for the aux/toc files.
+ % and @{ and @} for the aux file.
\catcode`\{ = \other \catcode`\} = \other
\catcode`\[ = 1 \catcode`\] = 2
\catcode`\! = 0 \catcode`\\ = \other
@@ -614,7 +608,7 @@
% The \TeX{} logo, as in plain, but resetting the spacing so that a
% period following counts as ending a sentence. (Idea found in latex.)
%
-\edef\TeX{\TeX \spacefactor=1000 }
+\edef\TeX{\TeX \spacefactor=3000 }
% @LaTeX{} logo. Not quite the same results as the definition in
% latex.ltx, since we use a different font for the raised A; it's most
@@ -652,29 +646,14 @@
\let\/=\allowbreak
% @. is an end-of-sentence period.
-\def\.{.\spacefactor=\endofsentencespacefactor\space}
+\def\.{.\spacefactor=3000 }
% @! is an end-of-sentence bang.
-\def\!{!\spacefactor=\endofsentencespacefactor\space}
+\def\!{!\spacefactor=3000 }
% @? is an end-of-sentence query.
-\def\?{?\spacefactor=\endofsentencespacefactor\space}
+\def\?{?\spacefactor=3000 }
-% @frenchspacing on|off says whether to put extra space after punctuation.
-%
-\def\onword{on}
-\def\offword{off}
-%
-\parseargdef\frenchspacing{%
- \def\temp{#1}%
- \ifx\temp\onword \plainfrenchspacing
- \else\ifx\temp\offword \plainnonfrenchspacing
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
- \fi\fi
-}
-
% @w prevents a word break. Without the \leavevmode, @w at the
% beginning of a paragraph, when TeX is still in vertical mode, would
% produce a whole line of output instead of starting the paragraph.
@@ -1112,7 +1091,7 @@
%
\def\enddots{%
\dots
- \spacefactor=\endofsentencespacefactor
+ \spacefactor=3000
}
% @comma{} is so commas can be inserted into text without messing up
@@ -1196,62 +1175,7 @@
\fi
\fi
\fi
-
-% PDF uses PostScript string constants for the names of xref targets, to
-% for display in the outlines, and in other places. Thus, we have to
-% double any backslashes. Otherwise, a name like "\node" will be
-% interpreted as a newline (\n), followed by o, d, e. Not good.
-% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
-% (and related messages, the final outcome is that it is up to the TeX
-% user to double the backslashes and otherwise make the string valid, so
-% that's we do).
-
-% double active backslashes.
-%
address@hidden \catcode`\\=\active
- @address@hidden@address@hidden@active @otherbackslash}
- @address@hidden
- @address@hidden@active
- @address@hidden
-}
-
-% To handle parens, we must adopt a different approach, since parens are
-% not active characters. hyperref.dtx (which has the same problem as
-% us) handles it with this amazing macro to replace tokens. I've
-% tinkered with it a little for texinfo, but it's definitely from there.
-%
-% #1 is the tokens to replace.
-% #2 is the replacement.
-% #3 is the control sequence with the string.
-%
-\def\HyPsdSubst#1#2#3{%
- \def\HyPsdReplace##1#1##2\END{%
- ##1%
- \ifx\\##2\\%
- \else
- #2%
- \HyReturnAfterFi{%
- \HyPsdReplace##2\END
- }%
- \fi
- }%
- \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
-}
-\long\def\HyReturnAfterFi#1\fi{\fi#1}
-
-% #1 is a control sequence in which to do the replacements.
-\def\backslashparens#1{%
- \xdef#1{#1}% redefine it as its expansion; the definition is simply
- % \lastnode when called from \setref -> \pdfmkdest.
- \HyPsdSubst{(}{\backslashlparen}{#1}%
- \HyPsdSubst{)}{\backslashrparen}{#1}%
-}
-
-{\catcode\exclamChar = 0 \catcode\backChar = \other
- !gdef!backslashlparen{\(}%
- !gdef!backslashrparen{\)}%
-}
-
+%
\ifpdf
\input pdfcolor
\pdfcatalog{/PageMode /UseOutlines}%
@@ -1276,18 +1200,13 @@
\pdfrefximage \pdflastximage
\fi}
\def\pdfmkdest#1{{%
- % We have to set dummies so commands such as @code, and characters
- % such as \, aren't expanded when present in a section title.
+ % We have to set dummies so commands such as @code in a section title
+ % aren't expanded.
\atdummies
- \activebackslashdouble
- \def\pdfdestname{#1}%
- \backslashparens\pdfdestname
- \pdfdest name{\pdfdestname} xyz%
- }}%
- %
- % used to mark target names; must be expandable.
- \def\pdfmkpgn#1{#1}%
- %
+ \normalturnoffactive
+ \pdfdest name{#1} xyz%
+ }}
+ \def\pdfmkpgn#1{#1}
\let\linkcolor = \Blue % was Cyan, but that seems light?
\def\endlink{\Black\pdfendlink}
% Adding outlines to PDF; macros for calculating structure of outlines
@@ -1298,31 +1217,20 @@
\advance\tempnum by 1
\expandafter\xdef\csname#1\endcsname{\the\tempnum}}
%
- % #1 is the section text, which is what will be displayed in the
- % outline by the pdf viewer. #2 is the pdf expression for the number
- % of subentries (or empty, for subsubsections). #3 is the node text,
- % which might be empty if this toc entry had no corresponding node.
- % #4 is the page number
+ % #1 is the section text. #2 is the pdf expression for the number
+ % of subentries (or empty, for subsubsections). #3 is the node
+ % text, which might be empty if this toc entry had no
+ % corresponding node. #4 is the page number.
%
\def\dopdfoutline#1#2#3#4{%
% Generate a link to the node text if that exists; else, use the
% page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't
- % seem worth the trouble, since most documents are normally structured.
+ % seem worthwhile, since most documents are normally structured.
\def\pdfoutlinedest{#3}%
- \ifx\pdfoutlinedest\empty
- \def\pdfoutlinedest{#4}%
- \else
- % Doubled backslashes in the name.
- {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
- \backslashparens\pdfoutlinedest}%
- \fi
+ \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}\fi
%
- % Also double the backslashes in the display string.
- {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
- \backslashparens\pdfoutlinetext}%
- %
- \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+ \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{#1}%
}
%
\def\pdfmakeoutlines{%
@@ -1334,13 +1242,13 @@
% Read toc silently, to get counts of subentries for \pdfoutline.
\def\numchapentry##1##2##3##4{%
\def\thischapnum{##2}%
- \def\thissecnum{0}%
- \def\thissubsecnum{0}%
+ \let\thissecnum\empty
+ \let\thissubsecnum\empty
}%
\def\numsecentry##1##2##3##4{%
\advancenumber{chap\thischapnum}%
\def\thissecnum{##2}%
- \def\thissubsecnum{0}%
+ \let\thissubsecnum\empty
}%
\def\numsubsecentry##1##2##3##4{%
\advancenumber{sec\thissecnum}%
@@ -1349,9 +1257,9 @@
\def\numsubsubsecentry##1##2##3##4{%
\advancenumber{subsec\thissubsecnum}%
}%
- \def\thischapnum{0}%
- \def\thissecnum{0}%
- \def\thissubsecnum{0}%
+ \let\thischapnum\empty
+ \let\thissecnum\empty
+ \let\thissubsecnum\empty
%
% use \def rather than \let here because we redefine \chapentry et
% al. a second time, below.
@@ -1363,7 +1271,7 @@
\def\unnsecentry{\numsecentry}%
\def\unnsubsecentry{\numsubsecentry}%
\def\unnsubsubsecentry{\numsubsubsecentry}%
- \readdatafile{toc}%
+ \input \jobname.toc
%
% Read toc second time, this time actually producing the outlines.
% The `-' means take the \expnumber as the absolute number of
@@ -1389,12 +1297,41 @@
% their "best" equivalent, based on the @documentencoding. Right
% now, I guess we'll just let the pdf reader have its way.
\indexnofonts
- \setupdatafile
- \activebackslash
+ \turnoffactive
\input \jobname.toc
\endgroup
}
%
+ \def\makelinks #1,{%
+ \def\params{#1}\def\E{END}%
+ \ifx\params\E
+ \let\nextmakelinks=\relax
+ \else
+ \let\nextmakelinks=\makelinks
+ \ifnum\lnkcount>0,\fi
+ \picknum{#1}%
+ \startlink attr{/Border [0 0 0]}
+ goto name{\pdfmkpgn{\the\pgn}}%
+ \linkcolor #1%
+ \advance\lnkcount by 1%
+ \endlink
+ \fi
+ \nextmakelinks
+ }
+ \def\picknum#1{\expandafter\pn#1}
+ \def\pn#1{%
+ \def\p{#1}%
+ \ifx\p\lbrace
+ \let\nextpn=\ppn
+ \else
+ \let\nextpn=\ppnn
+ \def\first{#1}
+ \fi
+ \nextpn
+ }
+ \def\ppn#1{\pgn=#1\gobble}
+ \def\ppnn{\pgn=\first}
+ \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
\def\skipspaces#1{\def\PP{#1}\def\D{|}%
\ifx\PP\D\let\nextsp\relax
\else\let\nextsp\skipspaces
@@ -1469,7 +1406,7 @@
\def\rm{\fam=0 \setfontstyle{rm}}
\def\it{\fam=\itfam \setfontstyle{it}}
\def\sl{\fam=\slfam \setfontstyle{sl}}
-\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\bf{\fam=\bffam \setfontstyle{bf}}
\def\tt{\fam=\ttfam \setfontstyle{tt}}
% Texinfo sort of supports the sans serif font style, which plain TeX does not.
@@ -1531,10 +1468,17 @@
\def\scbshape{csc}
% Text fonts (11.2pt, magstep1).
-\def\textnominalsize{11pt}
-\edef\mainmagstep{\magstephalf}
-\setfont\textrm\rmshape{10}{\mainmagstep}
-\setfont\texttt\ttshape{10}{\mainmagstep}
+\newcount\mainmagstep
+\ifx\bigger\relax
+ % not really supported.
+ \mainmagstep=\magstep1
+ \setfont\textrm\rmshape{12}{1000}
+ \setfont\texttt\ttshape{12}{1000}
+\else
+ \mainmagstep=\magstephalf
+ \setfont\textrm\rmshape{10}{\mainmagstep}
+ \setfont\texttt\ttshape{10}{\mainmagstep}
+\fi
\setfont\textbf\bfshape{10}{\mainmagstep}
\setfont\textit\itshape{10}{\mainmagstep}
\setfont\textsl\slshape{10}{\mainmagstep}
@@ -1551,7 +1495,6 @@
\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
% Fonts for indices, footnotes, small examples (9pt).
-\def\smallnominalsize{9pt}
\setfont\smallrm\rmshape{9}{1000}
\setfont\smalltt\ttshape{9}{1000}
\setfont\smallbf\bfshape{10}{900}
@@ -1564,7 +1507,6 @@
\font\smallsy=cmsy9
% Fonts for small examples (8pt).
-\def\smallernominalsize{8pt}
\setfont\smallerrm\rmshape{8}{1000}
\setfont\smallertt\ttshape{8}{1000}
\setfont\smallerbf\bfshape{10}{800}
@@ -1577,7 +1519,6 @@
\font\smallersy=cmsy8
% Fonts for title page (20.4pt):
-\def\titlenominalsize{20pt}
\setfont\titlerm\rmbshape{12}{\magstep3}
\setfont\titleit\itbshape{10}{\magstep4}
\setfont\titlesl\slbshape{10}{\magstep4}
@@ -1592,7 +1533,6 @@
\def\authortt{\sectt}
% Chapter (and unnumbered) fonts (17.28pt).
-\def\chapnominalsize{17pt}
\setfont\chaprm\rmbshape{12}{\magstep2}
\setfont\chapit\itbshape{10}{\magstep3}
\setfont\chapsl\slbshape{10}{\magstep3}
@@ -1605,7 +1545,6 @@
\font\chapsy=cmsy10 scaled \magstep3
% Section fonts (14.4pt).
-\def\secnominalsize{14pt}
\setfont\secrm\rmbshape{12}{\magstep1}
\setfont\secit\itbshape{10}{\magstep2}
\setfont\secsl\slbshape{10}{\magstep2}
@@ -1618,7 +1557,6 @@
\font\secsy=cmsy10 scaled \magstep2
% Subsection fonts (13.15pt).
-\def\ssecnominalsize{13pt}
\setfont\ssecrm\rmbshape{12}{\magstephalf}
\setfont\ssecit\itbshape{10}{1315}
\setfont\ssecsl\slbshape{10}{1315}
@@ -1631,7 +1569,6 @@
\font\ssecsy=cmsy10 scaled 1315
% Reduced fonts for @acro in text (10pt).
-\def\reducednominalsize{10pt}
\setfont\reducedrm\rmshape{10}{1000}
\setfont\reducedtt\ttshape{10}{1000}
\setfont\reducedbf\bfshape{10}{1000}
@@ -1671,7 +1608,6 @@
\let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
\let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
\let\tenttsl=\textttsl
- \def\curfontsize{text}%
\def\lsize{reduced}\def\lllsize{smaller}%
\resetmathfonts \setleading{\textleading}}
\def\titlefonts{%
@@ -1679,16 +1615,13 @@
\let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
\let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
\let\tenttsl=\titlettsl
- \def\curfontsize{title}%
\def\lsize{chap}\def\lllsize{subsec}%
\resetmathfonts \setleading{25pt}}
\def\titlefont#1{{\titlefonts\rm #1}}
\def\chapfonts{%
\let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
\let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
- \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
- \let\tenttsl=\chapttsl
- \def\curfontsize{chap}%
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl
\def\lsize{sec}\def\lllsize{text}%
\resetmathfonts \setleading{19pt}}
\def\secfonts{%
@@ -1696,7 +1629,6 @@
\let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
\let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
\let\tenttsl=\secttsl
- \def\curfontsize{sec}%
\def\lsize{subsec}\def\lllsize{reduced}%
\resetmathfonts \setleading{16pt}}
\def\subsecfonts{%
@@ -1704,7 +1636,6 @@
\let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
\let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
\let\tenttsl=\ssecttsl
- \def\curfontsize{ssec}%
\def\lsize{text}\def\lllsize{small}%
\resetmathfonts \setleading{15pt}}
\let\subsubsecfonts = \subsecfonts
@@ -1713,7 +1644,6 @@
\let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
\let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
\let\tenttsl=\reducedttsl
- \def\curfontsize{reduced}%
\def\lsize{small}\def\lllsize{smaller}%
\resetmathfonts \setleading{10.5pt}}
\def\smallfonts{%
@@ -1721,7 +1651,6 @@
\let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
\let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
\let\tenttsl=\smallttsl
- \def\curfontsize{small}%
\def\lsize{smaller}\def\lllsize{smaller}%
\resetmathfonts \setleading{10.5pt}}
\def\smallerfonts{%
@@ -1729,7 +1658,6 @@
\let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
\let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
\let\tenttsl=\smallerttsl
- \def\curfontsize{smaller}%
\def\lsize{smaller}\def\lllsize{smaller}%
\resetmathfonts \setleading{9.5pt}}
@@ -1787,18 +1715,13 @@
\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
\let\i=\smartitalic
-\let\slanted=\smartslanted
\let\var=\smartslanted
\let\dfn=\smartslanted
\let\emph=\smartitalic
-% @b, explicit bold.
\def\b#1{{\bf #1}}
\let\strong=\b
-% @sansserif, explicit sans.
-\def\sansserif#1{{\sf #1}}
-
% We can't just use \exhyphenpenalty, because that only has effect at
% the end of a paragraph. Restore normal hyphenation at the end of the
% group within which \nohyphenation is presumably called.
@@ -1811,21 +1734,14 @@
% sometimes \x has an active definition that messes things up.
%
address@hidden
- \def\plainfrenchspacing{%
+ \def\frenchspacing{%
\sfcode\dotChar address@hidden address@hidden address@hidden
address@hidden \sfcode\semiChar address@hidden \sfcode\commaChar
address@hidden
- \def\endofsentencespacefactor{1000}% for @. and friends
}
- \def\plainnonfrenchspacing{%
- \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
- \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
- \def\endofsentencespacefactor{3000}% for @. and friends
- }
address@hidden
-\def\endofsentencespacefactor{3000}% default
\def\t#1{%
- {\tt \rawbackslash \plainfrenchspacing #1}%
+ {\tt \rawbackslash \frenchspacing #1}%
\null
}
\def\samp#1{`\tclose{#1}'\null}
@@ -1862,7 +1778,7 @@
\nohyphenation
%
\rawbackslash
- \plainfrenchspacing
+ \frenchspacing
#1%
}%
\null
@@ -1882,14 +1798,8 @@
\catcode`\_=\active
%
\global\def\code{\begingroup
- \catcode`\-=\active \catcode`\_=\active
- \ifallowcodebreaks
- \let-\codedash
- \let_\codeunder
- \else
- \let-\realdash
- \let_\realunder
- \fi
+ \catcode`\-=\active \let-\codedash
+ \catcode`\_=\active \let_\codeunder
\codex
}
}
@@ -1909,28 +1819,6 @@
}
\def\codex #1{\tclose{#1}\endgroup}
-% An additional complication: the above will allow breaks after, e.g.,
-% each of the four underscores in __typeof__. This is undesirable in
-% some manuals, especially if they don't have long identifiers in
-% general. @allowcodebreaks provides a way to control this.
-%
-\newif\ifallowcodebreaks \allowcodebreakstrue
-
-\def\keywordtrue{true}
-\def\keywordfalse{false}
-
-\parseargdef\allowcodebreaks{%
- \def\txiarg{#1}%
- \ifx\txiarg\keywordtrue
- \allowcodebreakstrue
- \else\ifx\txiarg\keywordfalse
- \allowcodebreaksfalse
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
- \fi\fi
-}
-
% @kbd is like @code, except that if the argument is just one @key command,
% then @kbd has no effect.
@@ -1938,16 +1826,16 @@
% `example' (@kbd uses ttsl only inside of @example and friends),
% or `code' (@kbd uses normal tty font always).
\parseargdef\kbdinputstyle{%
- \def\txiarg{#1}%
- \ifx\txiarg\worddistinct
+ \def\arg{#1}%
+ \ifx\arg\worddistinct
\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
- \else\ifx\txiarg\wordexample
+ \else\ifx\arg\wordexample
\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
- \else\ifx\txiarg\wordcode
+ \else\ifx\arg\wordcode
\gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
\else
\errhelp = \EMsimple
- \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
+ \errmessage{Unknown @kbdinputstyle option `\arg'}%
\fi\fi\fi
}
\def\worddistinct{distinct}
@@ -2041,10 +1929,6 @@
\def\sc#1{{\smallcaps#1}} % smallcaps font
\def\ii#1{{\it #1}} % italic font
-% @acronym for "FBI", "NATO", and the like.
-% We print this one point size smaller, since it's intended for
-% all-uppercase.
-%
\def\acronym#1{\doacronym #1,,\finish}
\def\doacronym#1,#2,#3\finish{%
{\selectfonts\lsize #1}%
@@ -2054,70 +1938,10 @@
\fi
}
-% @abbr for "Comput. J." and the like.
-% No font change, but don't do end-of-sentence spacing.
-%
-\def\abbr#1{\doabbr #1,,\finish}
-\def\doabbr#1,#2,#3\finish{%
- {\plainfrenchspacing #1}%
- \def\temp{#2}%
- \ifx\temp\empty \else
- \space ({\unsepspaces \ignorespaces \temp \unskip})%
- \fi
-}
-
-% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+% @pounds{} is a sterling sign, which is in the CM italic font.
%
\def\pounds{{\it\$}}
-% @euro{} comes from a separate font, depending on the current style.
-% We use the free feym* fonts from the eurosym package by Henrik
-% Theiling, which support regular, slanted, bold and bold slanted (and
-% "outlined" (blackboard board, sort of) versions, which we don't need).
-% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
-%
-% Although only regular is the truly official Euro symbol, we ignore
-% that. The Euro is designed to be slightly taller than the regular
-% font height.
-%
-% feymr - regular
-% feymo - slanted
-% feybr - bold
-% feybo - bold slanted
-%
-% There is no good (free) typewriter version, to my knowledge.
-% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
-% Hmm.
-%
-% Also doesn't work in math. Do we need to do math with euro symbols?
-% Hope not.
-%
-%
-\def\euro{{\eurofont e}}
-\def\eurofont{%
- % We set the font at each command, rather than predefining it in
- % \textfonts and the other font-switching commands, so that
- % installations which never need the symbol don't have to have the
- % font installed.
- %
- % There is only one designed size (nominal 10pt), so we always scale
- % that to the current nominal size.
- %
- % By the way, simply using "at 1em" works for cmr10 and the like, but
- % does not work for cmbx10 and other extended/shrunken fonts.
- %
- \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
- %
- \ifx\curfontstyle\bfstylename
- % bold:
- \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
- \else
- % regular:
- \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
- \fi
- \thiseurofont
-}
-
% @registeredsymbol - R in a circle. The font for the R should really
% be smaller yet, but lllsize is the best we can do for now.
% Adapted from the plain.tex definition of \copyright.
@@ -2441,13 +2265,17 @@
% \parskip glue -- logically it's part of the @item we just started.
\nobreak \vskip-\parskip
%
- % Stop a page break at the \parskip glue coming up. However, if
- % what follows is an environment such as @example, there will be no
- % \parskip glue; then the negative vskip we just inserted would
- % cause the example and the item to crash together. So we use this
- % bizarre value of 10001 as a signal to \aboveenvbreak to insert
- % \parskip glue after all. Section titles are handled this way also.
- %
+ % Stop a page break at the \parskip glue coming up. (Unfortunately
+ % we can't prevent a possible page break at the following
+ % \baselineskip glue.) However, if what follows is an environment
+ % such as @example, there will be no \parskip glue; then
+ % the negative vskip we just would cause the example and the item to
+ % crash together. So we use this bizarre value of 10001 as a signal
+ % to \aboveenvbreak to insert \parskip glue after all.
+ % (Possibly there are other commands that could be followed by
+ % @example which need the same treatment, but not section titles; or
+ % maybe section titles are the only special case and they should be
+ % penalty 10001...)
\penalty 10001
\endgroup
\itemxneedsnegativevskipfalse
@@ -2473,27 +2301,16 @@
% @table, @ftable, @vtable.
\envdef\table{%
\let\itemindex\gobble
- \tablecheck{table}%
+ \tablex
}
\envdef\ftable{%
\def\itemindex ##1{\doind {fn}{\code{##1}}}%
- \tablecheck{ftable}%
+ \tablex
}
\envdef\vtable{%
\def\itemindex ##1{\doind {vr}{\code{##1}}}%
- \tablecheck{vtable}%
+ \tablex
}
-\def\tablecheck#1{%
- \ifnum \the\catcode`\^^M=\active
- \endgroup
- \errmessage{This command won't work in this context; perhaps the problem is
- that we are \inenvironment\thisenv}%
- \def\next{\doignore{#1}}%
- \else
- \let\next\tablex
- \fi
- \next
-}
\def\tablex#1{%
\def\itemindicate{#1}%
\parsearg\tabley
@@ -2803,10 +2620,7 @@
\startsavinginserts
%
% @item within a multitable starts a normal row.
- % We use \def instead of \let so that if one of the multitable entries
- % contains an @itemize, we don't choke on the \item (seen as \crcr aka
- % \endtemplate) expanding \doitemize.
- \def\item{\crcr}%
+ \let\item\crcr
%
\tolerance=9500
\hbadness=9500
@@ -2891,17 +2705,19 @@
\global\setpercentfalse
}
-\def\setmultitablespacing{%
- \def\multistrut{\strut}% just use the standard line spacing
- %
- % Compute \multitablelinespace (if not defined by user) for use in
- % \multitableparskip calculation. We used define \multistrut based on
- % this, but (ironically) that caused the spacing to be off.
- % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
+% If so, do nothing. If not, give it an appropriate dimension based on
+% current baselineskip.
\ifdim\multitablelinespace=0pt
\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
\global\advance\multitablelinespace by-\ht0
-\fi
+%% strut to put in table in case some entry doesn't have descenders,
+%% to keep lines equally spaced
+\let\multistrut = \strut
+\else
+%% FIXME: what is \box0 supposed to be?
+\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
+width0pt\relax} \fi
%% Test to see if parskip is larger than space between lines of
%% table. If not, do nothing.
%% If so, set to same dimension as multitablelinespace.
@@ -2970,14 +2786,14 @@
\doignorecount = 0
%
% Swallow text until we reach the matching address@hidden #1'.
- \dodoignore{#1}%
+ \dodoignore {#1}%
}
{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
\obeylines %
%
\gdef\dodoignore#1{%
- % #1 contains the command name as a string, e.g., `ifinfo'.
+ % #1 contains the string `ifinfo'.
%
% Define a command to find the next address@hidden #1', which must be on a
line
% by itself.
@@ -3131,8 +2947,9 @@
% Index generation facilities
% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within macros and \if's.
-\edef\newwrite{\makecsname{ptexnewwrite}}
+% except not \outer, so it can be used within \newindex.
address@hidden
address@hidden@@n}}
% \newindex {foo} defines an index named foo.
% It automatically defines \fooindex such that
@@ -3218,7 +3035,6 @@
% we have to laboriously prevent expansion for those that we don't.
%
\def\indexdummies{%
- \escapechar = `\\ % use backslash in output files.
address@hidden@}% change to @@ when we switch to @ as escape char in index
files.
\def\ {\realbackslash\space }%
% Need these in case \tex is in effect and \{ is a \delimiter again.
@@ -3227,14 +3043,34 @@
\let\{ = \mylbrace
\let\} = \myrbrace
%
+ % \definedummyword defines \#1 as \realbackslash #1\space, thus
+ % effectively preventing its expansion. This is used only for control
+ % words, not control letters, because the \space would be incorrect
+ % for control characters, but is needed to separate the control word
+ % from whatever follows.
+ %
+ % For control letters, we have \definedummyletter, which omits the
+ % space.
+ %
+ % These can be used both for control words that take an argument and
+ % those that do not. If it is followed by {arg} in the input, then
+ % that will dutifully get written to the index (or wherever).
+ %
+ \def\definedummyword##1{%
+ \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}%
+ }%
+ \def\definedummyletter##1{%
+ \expandafter\def\csname ##1\endcsname{\realbackslash ##1}%
+ }%
+ \let\definedummyaccent\definedummyletter
+ %
% Do the redefinitions.
\commondummies
}
-% For the aux and toc files, @ is the escape character. So we want to
-% redefine everything using @ as the escape character (instead of
-% \realbackslash, still used for index files). When everything uses @,
-% this will be simpler.
+% For the aux file, @ is the escape character. So we want to redefine
+% everything using @ instead of \realbackslash. When everything uses
+% @, this will be simpler.
%
\def\atdummies{%
address@hidden@@}%
@@ -3242,90 +3078,84 @@
\let\{ = \lbraceatcmd
\let\} = \rbraceatcmd
%
+ % (See comments in \indexdummies.)
+ \def\definedummyword##1{%
+ \expandafter\def\csname address@hidden
+ }%
+ \def\definedummyletter##1{%
+ \expandafter\def\csname address@hidden
+ }%
+ \let\definedummyaccent\definedummyletter
+ %
% Do the redefinitions.
\commondummies
}
-% Called from \indexdummies and \atdummies.
+% Called from \indexdummies and \atdummies. \definedummyword and
+% \definedummyletter must be defined first.
%
\def\commondummies{%
%
- % \definedummyword defines \#1 as \string\#1\space, thus effectively
- % preventing its expansion. This is used only for control% words,
- % not control letters, because the \space would be incorrect for
- % control characters, but is needed to separate the control word
- % from whatever follows.
+ \normalturnoffactive
%
- % For control letters, we have \definedummyletter, which omits the
- % space.
- %
- % These can be used both for control words that take an argument and
- % those that do not. If it is followed by {arg} in the input, then
- % that will dutifully get written to the index (or wherever).
- %
- \def\definedummyword ##1{\def##1{\string##1\space}}%
- \def\definedummyletter##1{\def##1{\string##1}}%
- \let\definedummyaccent\definedummyletter
- %
\commondummiesnofonts
%
- \definedummyletter\_%
+ \definedummyletter{_}%
%
% Non-English letters.
- \definedummyword\AA
- \definedummyword\AE
- \definedummyword\L
- \definedummyword\OE
- \definedummyword\O
- \definedummyword\aa
- \definedummyword\ae
- \definedummyword\l
- \definedummyword\oe
- \definedummyword\o
- \definedummyword\ss
- \definedummyword\exclamdown
- \definedummyword\questiondown
- \definedummyword\ordf
- \definedummyword\ordm
+ \definedummyword{AA}%
+ \definedummyword{AE}%
+ \definedummyword{L}%
+ \definedummyword{OE}%
+ \definedummyword{O}%
+ \definedummyword{aa}%
+ \definedummyword{ae}%
+ \definedummyword{l}%
+ \definedummyword{oe}%
+ \definedummyword{o}%
+ \definedummyword{ss}%
+ \definedummyword{exclamdown}%
+ \definedummyword{questiondown}%
+ \definedummyword{ordf}%
+ \definedummyword{ordm}%
%
% Although these internal commands shouldn't show up, sometimes they do.
- \definedummyword\bf
- \definedummyword\gtr
- \definedummyword\hat
- \definedummyword\less
- \definedummyword\sf
- \definedummyword\sl
- \definedummyword\tclose
- \definedummyword\tt
+ \definedummyword{bf}%
+ \definedummyword{gtr}%
+ \definedummyword{hat}%
+ \definedummyword{less}%
+ \definedummyword{sf}%
+ \definedummyword{sl}%
+ \definedummyword{tclose}%
+ \definedummyword{tt}%
%
- \definedummyword\LaTeX
- \definedummyword\TeX
+ \definedummyword{LaTeX}%
+ \definedummyword{TeX}%
%
% Assorted special characters.
- \definedummyword\bullet
- \definedummyword\comma
- \definedummyword\copyright
- \definedummyword\registeredsymbol
- \definedummyword\dots
- \definedummyword\enddots
- \definedummyword\equiv
- \definedummyword\error
- \definedummyword\euro
- \definedummyword\expansion
- \definedummyword\minus
- \definedummyword\pounds
- \definedummyword\point
- \definedummyword\print
- \definedummyword\result
+ \definedummyword{bullet}%
+ \definedummyword{copyright}%
+ \definedummyword{registeredsymbol}%
+ \definedummyword{dots}%
+ \definedummyword{enddots}%
+ \definedummyword{equiv}%
+ \definedummyword{error}%
+ \definedummyword{expansion}%
+ \definedummyword{minus}%
+ \definedummyword{pounds}%
+ \definedummyword{point}%
+ \definedummyword{print}%
+ \definedummyword{result}%
%
- % We want to disable all macros so that they are not expanded by \write.
- \macrolist
- %
- \normalturnoffactive
- %
% Handle some cases of @value -- where it does not contain any
% (non-fully-expandable) commands.
\makevalueexpandable
+ %
+ % Normal spaces, not active ones.
+ \unsepspaces
+ %
+ % No macro expansion.
+ \turnoffmacros
}
% \commondummiesnofonts: common to \commondummies and \indexnofonts.
@@ -3335,57 +3165,57 @@
\catcode`\~=\other
\gdef\commondummiesnofonts{%
% Control letters and accents.
- \definedummyletter\!%
- \definedummyaccent\"%
- \definedummyaccent\'%
- \definedummyletter\*%
- \definedummyaccent\,%
- \definedummyletter\.%
- \definedummyletter\/%
- \definedummyletter\:%
- \definedummyaccent\=%
- \definedummyletter\?%
- \definedummyaccent\^%
- \definedummyaccent\`%
- \definedummyaccent\~%
- \definedummyword\u
- \definedummyword\v
- \definedummyword\H
- \definedummyword\dotaccent
- \definedummyword\ringaccent
- \definedummyword\tieaccent
- \definedummyword\ubaraccent
- \definedummyword\udotaccent
- \definedummyword\dotless
+ \definedummyletter{!}%
+ \definedummyaccent{"}%
+ \definedummyaccent{'}%
+ \definedummyletter{*}%
+ \definedummyaccent{,}%
+ \definedummyletter{.}%
+ \definedummyletter{/}%
+ \definedummyletter{:}%
+ \definedummyaccent{=}%
+ \definedummyletter{?}%
+ \definedummyaccent{^}%
+ \definedummyaccent{`}%
+ \definedummyaccent{~}%
+ \definedummyword{u}%
+ \definedummyword{v}%
+ \definedummyword{H}%
+ \definedummyword{dotaccent}%
+ \definedummyword{ringaccent}%
+ \definedummyword{tieaccent}%
+ \definedummyword{ubaraccent}%
+ \definedummyword{udotaccent}%
+ \definedummyword{dotless}%
%
% Texinfo font commands.
- \definedummyword\b
- \definedummyword\i
- \definedummyword\r
- \definedummyword\sc
- \definedummyword\t
+ \definedummyword{b}%
+ \definedummyword{i}%
+ \definedummyword{r}%
+ \definedummyword{sc}%
+ \definedummyword{t}%
%
% Commands that take arguments.
- \definedummyword\acronym
- \definedummyword\cite
- \definedummyword\code
- \definedummyword\command
- \definedummyword\dfn
- \definedummyword\emph
- \definedummyword\env
- \definedummyword\file
- \definedummyword\kbd
- \definedummyword\key
- \definedummyword\math
- \definedummyword\option
- \definedummyword\samp
- \definedummyword\strong
- \definedummyword\tie
- \definedummyword\uref
- \definedummyword\url
- \definedummyword\var
- \definedummyword\verb
- \definedummyword\w
+ \definedummyword{acronym}%
+ \definedummyword{cite}%
+ \definedummyword{code}%
+ \definedummyword{command}%
+ \definedummyword{dfn}%
+ \definedummyword{emph}%
+ \definedummyword{env}%
+ \definedummyword{file}%
+ \definedummyword{kbd}%
+ \definedummyword{key}%
+ \definedummyword{math}%
+ \definedummyword{option}%
+ \definedummyword{samp}%
+ \definedummyword{strong}%
+ \definedummyword{tie}%
+ \definedummyword{uref}%
+ \definedummyword{url}%
+ \definedummyword{var}%
+ \definedummyword{verb}%
+ \definedummyword{w}%
}
}
@@ -3396,9 +3226,13 @@
%
\def\indexnofonts{%
% Accent commands should become @asis.
- \def\definedummyaccent##1{\let##1\asis}%
+ \def\definedummyaccent##1{%
+ \expandafter\let\csname ##1\endcsname\asis
+ }%
% We can just ignore other control letters.
- \def\definedummyletter##1{\let##1\empty}%
+ \def\definedummyletter##1{%
+ \expandafter\def\csname ##1\endcsname{}%
+ }%
% Hopefully, all control words can become @asis.
\let\definedummyword\definedummyaccent
%
@@ -3437,14 +3271,12 @@
% Assorted special characters.
% (The following {} will end up in the sort string, but that's ok.)
\def\bullet{bullet}%
- \def\comma{,}%
\def\copyright{copyright}%
\def\registeredsymbol{R}%
\def\dots{...}%
\def\enddots{...}%
\def\equiv{==}%
\def\error{error}%
- \def\euro{euro}%
\def\expansion{==>}%
\def\minus{-}%
\def\pounds{pounds}%
@@ -3452,17 +3284,8 @@
\def\print{-|}%
\def\result{=>}%
%
- % We need to get rid of all macros, leaving only the arguments (if present).
- % Of course this is not nearly correct, but it is the best we can do for now.
- % makeinfo does not expand macros in the argument to @deffn, which ends up
- % writing an index entry, and texindex isn't prepared for an index sort entry
- % that starts with \.
- %
- % Since macro invocations are followed by braces, we can just redefine them
- % to take a single TeX argument. The case of a macro invocation that
- % goes to end-of-line is not handled.
- %
- \macrolist
+ % Don't write macro names.
+ \emptyusermacros
}
\let\indexbackslash=0 %overridden during \printindex.
@@ -3509,6 +3332,7 @@
%
% Remember, we are within a group.
\indexdummies % Must do this here, since \bf, etc expand at this stage
+ \escapechar=`\\
\def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
% so it will be output as is; and it will print as backslash.
%
@@ -3582,18 +3406,17 @@
\dosubindwrite
%
\ifx\lastskipmacro\zeroskipmacro
- % If \lastskip was zero, perhaps the last item was a penalty, and
- % perhaps it was >=10000, e.g., a \nobreak. In that case, we want
- % to re-insert the same penalty (values >10000 are used for various
- % signals); since we just inserted a non-discardable item, any
- % following glue (such as a \parskip) would be a breakpoint. For example:
- %
+ % if \lastskip was zero, perhaps the last item was a
+ % penalty, and perhaps it was >=10000, e.g., a \nobreak.
+ % In that case, we want to re-insert the penalty; since we
+ % just inserted a non-discardable item, any following glue
+ % (such as a \parskip) would be a breakpoint. For example:
% @deffn deffn-whatever
% @vindex index-whatever
% Description.
% would allow a break between the index-whatever whatsit
% and the "Description." paragraph.
- \ifnum\count255>9999 \penalty\count255 \fi
+ \ifnum\count255>9999 \nobreak \fi
\else
% On the other hand, if we had a nonzero \lastskip,
% this make-up glue would be preceded by a non-discardable item
@@ -3691,10 +3514,7 @@
\removelastskip
%
% We like breaks before the index initials, so insert a bonus.
- \nobreak
- \vskip 0pt plus 3\baselineskip
- \penalty 0
- \vskip 0pt plus -3\baselineskip
+ \penalty -300
%
% Typeset the initial. Making this add up to a whole number of
% baselineskips increases the chance of the dots lining up from column
@@ -3704,9 +3524,10 @@
% No shrink because it confuses \balancecolumns.
\vskip 1.67\baselineskip plus .5\baselineskip
\leftline{\secbf #1}%
+ \vskip .33\baselineskip plus .1\baselineskip
+ %
% Do our best not to break after the initial.
\nobreak
- \vskip .33\baselineskip plus .1\baselineskip
}}
% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
@@ -4375,11 +4196,11 @@
\ifx\temptype\Ynothingkeyword
\setbox0 = \hbox{}%
\def\toctype{unnchap}%
- \gdef\thischapter{#1}%
+ \def\thischapter{#1}%
\else\ifx\temptype\Yomitfromtockeyword
\setbox0 = \hbox{}% contents like unnumbered, but no toc entry
\def\toctype{omit}%
- \gdef\thischapter{}%
+ \xdef\thischapter{}%
\else\ifx\temptype\Yappendixkeyword
\setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
\def\toctype{app}%
@@ -4527,14 +4348,14 @@
% glue accumulate. (Not a breakpoint because it's preceded by a
% discardable item.)
\vskip-\parskip
- %
- % This is purely so the last item on the list is a known \penalty >
- % 10000. This is so \startdefun can avoid allowing breakpoints after
- % section headings. Otherwise, it would insert a valid breakpoint between:
- %
+ %
+ % This \nobreak is purely so the last item on the list is a \penalty
+ % of 10000. This is so other code, for instance \parsebodycommon, can
+ % check for and avoid allowing breakpoints. Otherwise, it would
+ % insert a valid breakpoint between:
% @section sec-whatever
% @deffn def-whatever
- \penalty 10001
+ \nobreak
}
@@ -4568,11 +4389,11 @@
\fi
%
\iflinks
- {\atdummies
- \edef\temp{%
- address@hidden
- \temp
- }
+ \toks0 = {#2}%
+ \toks2 = \expandafter{\lastnode}%
+ \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}{#3}%
+ {\the\toks2}{\noexpand\folio}}}%
+ \temp
\fi
\fi
%
@@ -4585,31 +4406,6 @@
\ifpdf \global\pdfmakepagedesttrue \fi
}
-
-% These characters do not print properly in the Computer Modern roman
-% fonts, so we must take special care. This is more or less redundant
-% with the Texinfo input format setup at the end of this file.
-%
-\def\activecatcodes{%
- \catcode`\"=\active
- \catcode`\$=\active
- \catcode`\<=\active
- \catcode`\>=\active
- \catcode`\\=\active
- \catcode`\^=\active
- \catcode`\_=\active
- \catcode`\|=\active
- \catcode`\~=\active
-}
-
-
-% Read the toc file, which is essentially Texinfo input.
-\def\readtocfile{%
- \setupdatafile
- \activecatcodes
- \input \jobname.toc
-}
-
\newskip\contentsrightmargin \contentsrightmargin=1in
\newcount\savepageno
\newcount\lastnegativepageno \lastnegativepageno = -1
@@ -4631,7 +4427,11 @@
%
\savepageno = \pageno
\begingroup % Set up to handle contents files properly.
- \raggedbottom % Worry more about breakpoints than the bottom.
+ \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 address@hidden
+ % We can't do this, because then an actual ^ in a section
+ % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97.
+ %\catcode`\^=7 % to see ^^e4 as \"a etc. address@hidden
+ \raggedbottom % Worry more about breakpoints than the bottom.
\advance\hsize by -\contentsrightmargin % Don't use the full line length.
%
% Roman numerals for page numbers.
@@ -4644,7 +4444,7 @@
\startcontents{\putwordTOC}%
\openin 1 \jobname.toc
\ifeof 1 \else
- \readtocfile
+ \input \jobname.toc
\fi
\vfill \eject
\contentsalignmacro % in case @setchapternewpage odd is in effect
@@ -4682,7 +4482,7 @@
\let\unnsubsubsecentry = \numsecentry
\openin 1 \jobname.toc
\ifeof 1 \else
- \readtocfile
+ \input \jobname.toc
\fi
\closein 1
\vfill \eject
@@ -4872,7 +4672,6 @@
\let\/=\ptexslash
\let\*=\ptexstar
\let\t=\ptext
- \let\frenchspacing=\plainfrenchspacing
%
\def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
\def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
@@ -4901,8 +4700,7 @@
% start of the next paragraph will insert \parskip.
%
\def\aboveenvbreak{{%
- % =10000 instead of <10000 because of a special case in \itemzzz and
- % \sectionheading, q.v.
+ % =10000 instead of <10000 because of a special case in \itemzzz, q.v.
\ifnum \lastpenalty=10000 \else
\advance\envskipamount by \parskip
\endgraf
@@ -4918,8 +4716,7 @@
\let\afterenvbreak = \aboveenvbreak
-% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will
-% also clear it, so that its embedded environments do the narrowing again.
+% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
\let\nonarrowing=\relax
% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
@@ -4956,7 +4753,7 @@
% each corner char, and rule thickness
\normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
% Flag to tell @lisp, etc., not to narrow margin.
- \let\nonarrowing = t%
+ \let\nonarrowing=\comment
\vbox\bgroup
\baselineskip=0pt\parskip=0pt\lineskip=0pt
\carttop
@@ -4996,11 +4793,11 @@
\parskip = 0pt
\parindent = 0pt
\emergencystretch = 0pt % don't try to avoid overfull boxes
+ % @cartouche defines \nonarrowing to inhibit narrowing
+ % at next level down.
\ifx\nonarrowing\relax
\advance \leftskip by \lispnarrowing
\exdentamount=\lispnarrowing
- \else
- \let\nonarrowing = \relax
\fi
\let\exdent=\nofillexdent
}
@@ -5100,7 +4897,6 @@
\advance\leftskip by \lispnarrowing
\advance\rightskip by \lispnarrowing
\exdentamount = \lispnarrowing
- \else
\let\nonarrowing = \relax
\fi
\parsearg\quotationlabel
@@ -5193,8 +4989,8 @@
}
\endgroup
\def\setupverbatim{%
- \let\nonarrowing = t%
\nonfillstart
+ \advance\leftskip by -\defbodyindent
% Easiest (and conventionally used) font for verbatim
\tt
\def\par{\leavevmode\egroup\box0\endgraf}%
@@ -5265,7 +5061,8 @@
}
% @copying ... @end copying.
-% Save the text away for @insertcopying later.
+% Save the text away for @insertcopying later. Many commands won't be
+% allowed in this context, but that's ok.
%
% We save the uninterpreted tokens, rather than creating a box.
% Saving the text in a box would be much easier, but then all the
@@ -5274,14 +5071,62 @@
% file; b) letting users define the frontmatter in as flexible order as
% possible is very desirable.
%
-\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
address@hidden copying{\endgroup\def\copyingtext{#1}}
+\def\copying{\begingroup
+ % Define a command to swallow text until we reach address@hidden copying'.
+ % \ is the escape char in this texinfo.tex file, so it is the
+ % delimiter for the command; @ will be the escape char when we read
+ % it, but that doesn't matter.
+ \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}%
+ %
+ % We must preserve ^^M's in the input file; see \insertcopying below.
+ \catcode`\^^M = \active
+ \docopying
+}
+
+% What we do to finish off the copying text.
%
-\def\insertcopying{%
- \begingroup
- \parindent = 0pt % paragraph indentation looks wrong on title page
- \scanexp\copyingtext
- \endgroup
+\def\enddocopying{\endgroup\ignorespaces}
+
+% @insertcopying. Here we must play games with ^^M's. On the one hand,
+% we need them to delimit commands such as address@hidden quotation', so they
+% must be active. On the other hand, we certainly don't want every
+% end-of-line to be a \par, as would happen with the normal active
+% definition of ^^M. On the third hand, two ^^M's in a row should still
+% generate a \par.
+%
+% Our approach is to make ^^M insert a space and a penalty1 normally;
+% then it can also check if \lastpenalty=1. If it does, then manually
+% do \par.
+%
+% This messes up the normal definitions of @c[omment], so we redefine
+% it. Similarly for @ignore. (These commands are used in the gcc
+% manual for man page generation.)
+%
+% Seems pretty fragile, most line-oriented commands will presumably
+% fail, but for the limited use of getting the copying text (which
+% should be quite simple) inserted, we can hope it's ok.
+%
+{\catcode`\^^M=\active %
+\gdef\insertcopying{\begingroup %
+ \parindent = 0pt % looks wrong on title page
+ \def^^M{%
+ \ifnum \lastpenalty=1 %
+ \par %
+ \else %
+ \space \penalty 1 %
+ \fi %
+ }%
+ %
+ % Fix @c[omment] for catcode 13 ^^M's.
+ \def\c##1^^M{\ignorespaces}%
+ \let\comment = \c %
+ %
+ % Don't bother jumping through all the hoops that \doignore does, it
+ % would be very hard since the catcodes are already set.
+ \long\def\ignore##1\end ignore{\ignorespaces}%
+ %
+ \copyingtext %
+\endgroup}%
}
\message{defuns,}
@@ -5299,11 +5144,10 @@
% If there are two @def commands in a row, we'll have a \nobreak,
% which is there to keep the function description together with its
% header. But if there's nothing but headers, we need to allow a
- % break somewhere. Check specifically for penalty 10002, inserted
- % by \defargscommonending, instead of 10000, since the sectioning
- % commands also insert a nobreak penalty, and we don't want to allow
- % a break between a section heading and a defun.
- %
+ % break somewhere. Check for penalty 10002 (inserted by
+ % \defargscommonending) instead of 10000, since the sectioning
+ % commands insert a \penalty10000, and we don't want to allow a break
+ % between a section heading and a defun.
\ifnum\lastpenalty=10002 \penalty2000 \fi
%
% Similarly, after a section heading, do not allow a break.
@@ -5627,7 +5471,7 @@
\ifx\eTeXversion\undefined
\newwrite\macscribble
\def\scantokens#1{%
- \toks0={#1}%
+ \toks0={#1\endinput}%
\immediate\openout\macscribble=\jobname.tmp
\immediate\write\macscribble{\the\toks0}%
\immediate\closeout\macscribble
@@ -5640,11 +5484,7 @@
\newlinechar`\^^M
\let\xeatspaces\eatspaces
% Undo catcode changes of \startcontents and \doprintindex
- % When called from @insertcopying or (short)caption, we need active
- % backslash to get it printed correctly. Previously, we had
- % \catcode`\\=\other instead. We'll see whether a problem appears
- % with macro expansion. --kasal, 19aug04
- address@hidden \catcode`\\=\active \escapechar=`\@
+ address@hidden \catcode`\\=\other \escapechar=`\@
% ... and \example
\spaceisspace
%
@@ -5656,38 +5496,20 @@
\endgroup
}
-\def\scanexp#1{%
- \edef\temp{\noexpand\scanmacro{#1}}%
- \temp
-}
-
\newcount\paramno % Count of parameters
\newtoks\macname % Macro name
\newif\ifrecursive % Is it recursive?
+\def\macrolist{} % List of all defined macros in the form
+ % \do\macro1\do\macro2...
-% List of all defined macros in the form
-% \definedummyword\macro1\definedummyword\macro2...
-% Currently is also contains all @aliases; the list can be split
-% if there is a need.
-\def\macrolist{}
-
-% Add the macro to \macrolist
-\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
-\def\addtomacrolistxxx#1{%
- \toks0 = \expandafter{\macrolist\definedummyword#1}%
- \xdef\macrolist{\the\toks0}%
-}
-
% Utility routines.
-% This does \let #1 = #2, with \csnames; that is,
-% \let \csname#1\endcsname = \csname#2\endcsname
-% (except of course we have to play expansion games).
-%
+% This does \let #1 = #2, except with \csnames.
\def\cslet#1#2{%
- \expandafter\let
- \csname#1\expandafter\endcsname
- \csname#2\endcsname
-}
+\expandafter\expandafter
+\expandafter\let
+\expandafter\expandafter
+\csname#1\endcsname
+\csname#2\endcsname}
% Trim leading and trailing spaces off a string.
% Concepts from aro-bend problem 15 (see CTAN).
@@ -5714,36 +5536,30 @@
% done by making ^^M (\endlinechar) catcode 12 when reading the macro
% body, and then making it the \newlinechar in \scanmacro.
-\def\scanctxt{%
- \catcode`\"=\other
- \catcode`\+=\other
- \catcode`\<=\other
- \catcode`\>=\other
- address@hidden
+\def\macrobodyctxt{%
+ \catcode`\~=\other
\catcode`\^=\other
\catcode`\_=\other
\catcode`\|=\other
- \catcode`\~=\other
-}
-
-\def\scanargctxt{%
- \scanctxt
- \catcode`\\=\other
- \catcode`\^^M=\other
-}
-
-\def\macrobodyctxt{%
- \scanctxt
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\+=\other
\catcode`\{=\other
\catcode`\}=\other
+ address@hidden
\catcode`\^^M=\other
- \usembodybackslash
-}
+ \usembodybackslash}
\def\macroargctxt{%
- \scanctxt
- \catcode`\\=\other
-}
+ \catcode`\~=\other
+ \catcode`\^=\other
+ \catcode`\_=\other
+ \catcode`\|=\other
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\+=\other
+ address@hidden
+ \catcode`\\=\other}
% \mbodybackslash is the definition of \ in @macro bodies.
% It maps \foo\ => \csname macarg.foo\endcsname => #N
@@ -5774,7 +5590,10 @@
\else \errmessage{Macro name \the\macname\space already defined}\fi
\global\cslet{macsave.\the\macname}{\the\macname}%
\global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
- \addtomacrolist{\the\macname}%
+ % Add the macroname to \macrolist
+ \toks0 = \expandafter{\macrolist\do}%
+ \xdef\macrolist{\the\toks0
+ \expandafter\noexpand\csname\the\macname\endcsname}%
\fi
\begingroup \macrobodyctxt
\ifrecursive \expandafter\parsermacbody
@@ -5788,7 +5607,7 @@
% Remove the macro name from \macrolist:
\begingroup
\expandafter\let\csname#1\endcsname \relax
- \let\definedummyword\unmacrodo
+ \let\do\unmacrodo
\xdef\macrolist{\macrolist}%
\endgroup
\else
@@ -5800,10 +5619,10 @@
% macro definitions that have been changed to \relax.
%
\def\unmacrodo#1{%
- \ifx #1\relax
+ \ifx#1\relax
% remove this
\else
- \noexpand\definedummyword \noexpand#1%
+ \noexpand\do \noexpand #1%
\fi
}
@@ -5922,7 +5741,26 @@
\expandafter\parsearg
\fi \next}
+% We want to disable all macros during \shipout so that they are not
+% expanded by \write.
+\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
+ \edef\next{\macrolist}\expandafter\endgroup\next}
+% For \indexnofonts, we need to get rid of all macros, leaving only the
+% arguments (if present). Of course this is not nearly correct, but it
+% is the best we can do for now. makeinfo does not expand macros in the
+% argument to @deffn, which ends up writing an index entry, and texindex
+% isn't prepared for an index sort entry that starts with \.
+%
+% Since macro invocations are followed by braces, we can just redefine them
+% to take a single TeX argument. The case of a macro invocation that
+% goes to end-of-line is not handled.
+%
+\def\emptyusermacros{\begingroup
+ \def\do##1{\let\noexpand##1=\noexpand\asis}%
+ \edef\next{\macrolist}\expandafter\endgroup\next}
+
+
% @alias.
% We need some trickery to remove the optional spaces around the equal
% sign. Just make them active and then expand them all to nothing.
@@ -5931,7 +5769,6 @@
\def\aliasyyy #1=#2\relax{%
{%
\expandafter\let\obeyedspace=\empty
- \addtomacrolist{#1}%
\xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
}%
\next
@@ -6001,6 +5838,8 @@
\iflinks
{%
\atdummies % preserve commands, but don't expand them
+ \turnoffactive
+ \otherbackslash
\edef\writexrdef##1##2{%
address@hidden #1 of \setref, expanded by the \edef
##1}{##2}}% these are parameters of \writexrdef
@@ -6054,17 +5893,13 @@
\ifpdf
\leavevmode
\getfilename{#4}%
- {\turnoffactive
- % See comments at \activebackslashdouble.
- {\activebackslashdouble \xdef\pdfxrefdest{#1}%
- \backslashparens\pdfxrefdest}%
- %
+ {\turnoffactive \otherbackslash
\ifnum\filenamelength>0
\startlink attr{/Border [0 0 0]}%
- goto file{\the\filename.pdf} name{\pdfxrefdest}%
+ goto file{\the\filename.pdf} name{#1}%
\else
\startlink attr{/Border [0 0 0]}%
- goto name{\pdfmkpgn{\pdfxrefdest}}%
+ goto name{\pdfmkpgn{#1}}%
\fi
}%
\linkcolor
@@ -6078,6 +5913,7 @@
% include an _ in the xref name, etc.
\indexnofonts
\turnoffactive
+ \otherbackslash
\expandafter\global\expandafter\let\expandafter\Xthisreftitle
\csname XR#1-title\endcsname
}%
@@ -6112,7 +5948,7 @@
% into the usual \leavevmode...\vrule stuff for purposes of
% printing. So we \turnoffactive for the \refx-snt, back on for the
% printing, back off for the \refx-pg.
- {\turnoffactive
+ {\turnoffactive \otherbackslash
% Only output a following space if the -snt ref is nonempty; for
% @unnumbered and @anchor, it won't be.
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
@@ -6125,7 +5961,7 @@
,\space
%
% output the `page 3'.
- \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+ \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
\fi
\fi
\endlink
@@ -6228,13 +6064,13 @@
\def\tryauxfile{%
\openin 1 \jobname.aux
\ifeof 1 \else
- \readdatafile{aux}%
+ \readauxfile
\global\havexrefstrue
\fi
\closein 1
}
-\def\setupdatafile{%
+\def\readauxfile{\begingroup
address@hidden
\catcode`\^^A=\other
\catcode`\^^B=\other
@@ -6303,11 +6139,11 @@
%
% Make the characters 128-255 be printing characters.
{%
- \count1=128
+ \count 1=128
\def\loop{%
- \catcode\count1=\other
- \advance\count1 by 1
- \ifnum \count1<256 \loop \fi
+ \catcode\count 1=\other
+ \advance\count 1 by 1
+ \ifnum \count 1<256 \loop \fi
}%
}%
%
@@ -6315,14 +6151,11 @@
\catcode`\{=1
\catcode`\}=2
address@hidden
-}
-
-\def\readdatafile#1{%
-\begingroup
- \setupdatafile
- \input\jobname.#1
+ %
+ \input \jobname.aux
\endgroup}
+
\message{insertions,}
% including footnotes.
@@ -6532,15 +6365,12 @@
\endgroup}
-% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
-% etc. We don't actually implement floating yet, we always include the
-% float "here". But it seemed the best name for the future.
+% @float FLOATTYPE,LOC ... @end float for displayed figures, tables, etc.
+% We don't actually implement floating yet, we just plop the float "here".
+% But it seemed the best name for the future.
%
-\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+\envparseargdef\float{\dofloat #1,,,\finish}
-% There may be a space before second and/or third parameter; delete it.
-\def\eatcommaspace#1, {#1,}
-
% #1 is the optional FLOATTYPE, the text label for this float, typically
% "Figure", "Table", "Example", etc. Can't contain commas. If omitted,
% this float will not be numbered and cannot be referred to.
@@ -6560,10 +6390,6 @@
\let\thisshortcaption=\empty
%
% don't lose footnotes inside @float.
- %
- % BEWARE: when the floats start float, we have to issue warning whenever an
- % insert appears inside a float which could possibly float. --kasal, 26may04
- %
\startsavinginserts
%
% We can't be used inside a paragraph.
@@ -6648,7 +6474,7 @@
\fi
%
% caption text.
- \appendtomacro\captionline{\scanexp\thiscaption}%
+ \appendtomacro\captionline\thiscaption
\fi
%
% If we have anything to print, print it, with space before.
@@ -6656,9 +6482,6 @@
\ifx\captionline\empty \else
\vskip.5\parskip
\captionline
- %
- % Space below caption.
- \vskip\parskip
\fi
%
% If have an xref label, write the list of floats info. Do this
@@ -6668,45 +6491,38 @@
% \floatlabel-lof. Besides \floatident, we include the short
% caption if specified, else the full caption if specified, else nothing.
{%
- \atdummies
- % since we read the caption text in the macro world, where ^^M
- % is turned into a normal character, we have to scan it back, so
- % we don't write the literal three characters "^^M" into the aux file.
- \scanexp{%
- \xdef\noexpand\gtemp{%
- \ifx\thisshortcaption\empty
- \thiscaption
- \else
- \thisshortcaption
- \fi
- }%
- }%
- address@hidden
- \ifx\gtemp\empty \else : \gtemp \fi}}%
+ \atdummies \turnoffactive \otherbackslash
+ address@hidden
+ \floatident
+ \ifx\thisshortcaption\empty
+ \ifx\thiscaption\empty \else : \thiscaption \fi
+ \else
+ : \thisshortcaption
+ \fi
+ }}%
}%
\fi
+ %
+ % Space below caption, if we printed anything.
+ \ifx\printedsomething\empty \else \vskip\parskip \fi
\egroup % end of \vtop
- %
- % place the captured inserts
- %
- % BEWARE: when the floats start float, we have to issue warning whenever an
- % insert appears inside a float which could possibly float. --kasal, 26may04
- %
\checkinserts
}
% Append the tokens #2 to the definition of macro #1, not expanding either.
%
+\newtoks\appendtomacroAtoks
+\newtoks\appendtomacroBtoks
\def\appendtomacro#1#2{%
- \expandafter\def\expandafter#1\expandafter{#1#2}%
+ \appendtomacroAtoks = \expandafter{#1}%
+ \appendtomacroBtoks = {#2}%
+ \edef#1{\the\appendtomacroAtoks \the\appendtomacroBtoks}%
}
-% @caption, @shortcaption
+% @caption, @shortcaption are easy.
%
-\def\caption{\docaption\thiscaption}
-\def\shortcaption{\docaption\thisshortcaption}
-\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
-\def\defcaption#1#2{\egroup \def#1{#2}}
+\long\def\caption#1{\checkenv\float \def\thiscaption{#1}}
+\def\shortcaption#1{\checkenv\float \def\thisshortcaption{#1}}
% The parameter is the control sequence identifying the counter we are
% going to use. Create it if it doesn't exist and assign it to \floatno.
@@ -6858,9 +6674,9 @@
\fi
}
-% Parameters in order: 1) textheight; 2) textwidth;
-% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
-% 7) physical page height; 8) physical page width.
+% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
+% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8)
+% physical page width.
%
% We also call \setleading{\textleading}, so the caller should define
% \textleading. The caller should also set \parskip.
@@ -6907,7 +6723,7 @@
{11in}{8.5in}%
}}
-% Use @smallbook to reset parameters for 7x9.25 trim size.
+% Use @smallbook to reset parameters for 7x9.5 (or so) format.
\def\smallbook{{\globaldefs = 1
\parskip = 2pt plus 1pt
\textleading = 12pt
@@ -6924,24 +6740,6 @@
\defbodyindent = .5cm
}}
-% Use @smallerbook to reset parameters for 6x9 trim size.
-% (Just testing, parameters still in flux.)
-\def\smallerbook{{\globaldefs = 1
- \parskip = 1.5pt plus 1pt
- \textleading = 12pt
- %
- \internalpagesizes{7.4in}{4.8in}%
- {-.2in}{-.4in}%
- {0pt}{14pt}%
- {9in}{6in}%
- %
- \lispnarrowing = 0.25in
- \tolerance = 700
- \hfuzz = 1pt
- \contentsrightmargin = 0pt
- \defbodyindent = .4cm
-}}
-
% Use @afourpaper to print on European A4 paper.
\def\afourpaper{{\globaldefs = 1
\parskip = 3pt plus 2pt minus 1pt
@@ -7094,7 +6892,6 @@
\catcode`\_=\active
\def_{\ifusingtt\normalunderscore\_}
-\let\realunder=_
% Subroutine for the previous macro.
\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
@@ -7132,9 +6929,8 @@
@address@hidden@address@hidden
}
-% \realbackslash is an actual character `\' with catcode other, and
-% \doublebackslash is two of them (for the pdf outlines).
-{\catcode`\\=\other @address@hidden @address@hidden
+% \realbackslash is an actual character `\' with catcode other.
+{\catcode`\\=\other @address@hidden
% \normalbackslash outputs one backslash in fixed width font.
\def\normalbackslash{{\tt\backslashcurfont}}
@@ -7177,7 +6973,7 @@
% On the other hand, perhaps the file did not have a `\input texinfo'. Then
% the first `\{ in the file would cause an error. This macro tries to fix
% that, assuming it is called before the first `\' could plausibly occur.
-% Also turn back on active characters that might appear in the input
+% Also back turn on active characters that might appear in the input
% file name, in case not using a pre-dumped format.
%
@address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r4988 - Extractor/doc,
gnunet <=