[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Paragraph indentation suppression
From: |
Simon Law |
Subject: |
Re: Paragraph indentation suppression |
Date: |
Sat, 12 Apr 2003 19:00:18 -0400 |
User-agent: |
Mutt/1.3.28i |
I suck.
Stupid indenting footnotes, grumble grumble.
New changelog and patch.
Simon
2003-04-12 Simon Law <address@hidden>
* doc/texinfo.tex (\firstparagraphindent): implement suppression
of the indentation of the first paragraph.
(\dofirstparagraphindent): for parsing arguments.
(\suppressfirstparagraphindent): does the actual gobbling of
indentation.
(\footnote): Compensate for the hanging-indent side-effect.
(\numhead, \apphead, \unnmhead): ensures the suppression occurs.
* makeinfo/cmds.c (command_table): add "firstparagraphindent"
(as cm_firstparagraphindent)
(set_firstparagraphindent, cm_firstparagraphindent): implement
@firstparagraphindent parsing of options.
* makeinfo/makeinfo.c (long_options): add "no-first-par-indent"
(as &no_first_par_indent).
* makeinfo/makeinfo.h: declare "no_first_par_indent".
* makeinfo/sectioning.c (sectioning_underscore): suppress
indentation.
* doc/texinfo.txi: document it.
* doc/texinfo.tex (\indent): override \indent primitive to
clear \everypar.
(\ptexindent): for saving/restoring \indent in @tex.
(\footnote): Neutralise the effect of @indent
within a footnote.
* makeinfo/cmds.c (command_table): add "indent" (as cm_indent).
(cm_indent): un-inhibit_paragraph_indentation.
* doc/texinfo.txi: document it.
* doc/texinfo.txi: take advantage of @firstparagraphindent.
* doc/texinfo.txi (Conventions): remove extra vertical space
from bulleted itemize.
* makeinfo/cmds.c (command_table): fix "novalidate" option.
Index: doc/texinfo.tex
===================================================================
RCS file: /cvsroot/texinfo/texinfo/doc/texinfo.tex,v
retrieving revision 1.67
diff -u -r1.67 texinfo.tex
--- doc/texinfo.tex 22 Mar 2003 16:50:15 -0000 1.67
+++ doc/texinfo.tex 12 Apr 2003 22:56:16 -0000
@@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2003-03-22.08}
+\def\texinfoversion{2003-04-12.19}
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
@@ -88,6 +88,7 @@
\let\ptexgtr=>
\let\ptexhat=^
\let\ptexi=\i
+\let\ptexindent=\indent
\let\ptexlbrace=\{
\let\ptexless=<
\let\ptexplus=+
@@ -866,6 +867,34 @@
\parindent = \defaultparindent
}
+% @firstparagraphindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+\let\suppressfirstparagraphindent=\relax
+\newdimen\currentparindent
+\def\suppressword{suppress}
+\def\defaultword{default}
+\def\firstparagraphindent{\parsearg\dofirstparagraphindent}
+\def\dofirstparagraphindent#1{%
+ \def\temp{#1}%
+ \ifx\temp\suppressword
+ \gdef\suppressfirstparagraphindent{%
+ \gdef\indent{%
+ \global\everypar = {}%
+ \global\let\indent=\ptexindent
+ }%
+ \global\everypar = {%
+ \kern-\parindent
+ \global\let\indent=\ptexindent
+ \global\everypar = {}%
+ }%
+ }%
+ \else\ifx\temp\defaultword
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @firstparagraphindent `\temp'}%
+ \fi\fi
+}
+
% @exampleindent NCHARS
% We'll use ems for NCHARS like @paragraphindent.
% It seems @exampleindent asis isn't necessary, but
@@ -3721,6 +3750,7 @@
\numberedsubsubseczzz{#2}
\fi
\fi
+\suppressfirstparagraphindent
}
% like \numhead, but chooses appendix heading levels
@@ -3740,6 +3770,7 @@
\appendixsubsubseczzz{#2}
\fi
\fi
+\suppressfirstparagraphindent
}
% like \numhead, but chooses numberless heading levels
@@ -3759,6 +3790,7 @@
\unnumberedsubsubseczzz{#2}
\fi
\fi
+\suppressfirstparagraphindent
}
% @chapter, @appendix, @unnumbered.
@@ -4430,6 +4462,7 @@
\let\equiv=\ptexequiv
\let\!=\ptexexclam
\let\i=\ptexi
+ \let\indent=\ptexindent
\let\{=\ptexlbrace
\let\+=\tabalign
\let\}=\ptexrbrace
@@ -6146,6 +6179,7 @@
%
% Auto-number footnotes. Otherwise like plain.
\gdef\footnote{%
+ \let\indent=\ptexindent
\global\advance\footnoteno by address@hidden
\edef\thisfootno{$^{\the\footnoteno}$}%
%
Index: doc/texinfo.txi
===================================================================
RCS file: /cvsroot/texinfo/texinfo/doc/texinfo.txi,v
retrieving revision 1.37
diff -u -r1.37 texinfo.txi
--- doc/texinfo.txi 9 Apr 2003 12:29:26 -0000 1.37
+++ doc/texinfo.txi 12 Apr 2003 22:56:24 -0000
@@ -29,6 +29,7 @@
@footnotestyle separate
@paragraphindent 2
address@hidden suppress
@c finalout
@comment %**end of header
@@ -257,6 +258,7 @@
* documentdescription:: Document summary for the HTML output.
* setchapternewpage:: Start chapters on right-hand pages.
* paragraphindent:: Specify paragraph indentation.
+* firstparagraphindent:: Suppress indentation of the first paragraph.
* exampleindent:: Specify environment indentation.
Ending a Texinfo File
@@ -372,6 +374,7 @@
* exdent:: Undo indentation on a line.
* flushleft & flushright:: Pushing text flush left or flush right.
* noindent:: Preventing paragraph indentation.
+* indent:: Forcing paragraph indentation.
* cartouche:: Drawing rounded rectangles around examples.
Lists and Tables
@@ -1245,6 +1248,9 @@
@xref{Conditionals}.
@item
address@hidden
address@hidden@baselineskip
address@hidden iftex
@cindex Tabs; don't use!
@quotation
@strong{Caution:} Do not use tab characters in a Texinfo file (except in
@@ -3668,6 +3674,7 @@
* documentdescription:: Document summary for the HTML output.
* setchapternewpage:: Start chapters on right-hand pages.
* paragraphindent:: Specify paragraph indentation.
+* firstparagraphindent:: Suppress indentation of the first paragraph.
* exampleindent:: Specify environment indentation.
@end menu
@@ -3779,7 +3786,7 @@
@node paragraphindent
address@hidden Paragraph Indenting
address@hidden @code{@@paragraphindent}: Paragraph Indenting
@cindex Indenting paragraphs, control of
@cindex Paragraph indentation control
@findex paragraphindent
@@ -3824,6 +3831,50 @@
@xref{Refilling Paragraphs}, for further information.
address@hidden firstparagraphindent
address@hidden @code{@@firstparagraphindent}: Suppress Indentation of the First
Paragraph
address@hidden First paragraph, suppressing indentation of
address@hidden Suppressing first paragraph indentation
address@hidden Preventing first paragraph indentation
address@hidden Indenting, suppressing of first paragraph
address@hidden firstparagraphindent
+
+As you can see, the first paragraph in any section is never indented.
+Indentation is meant to be a paragraph separator, which means that it
+is unnecessary when a new section begins. In fact, it is a typographical
+error to indent the first paragraph.
+
+In order to preserve compatibility with older versions of Texinfo,
+the default behaviour is to indent the first paragraph. However, the
address@hidden option is recommended.
+
address@hidden
+@@firstparagraphindent @var{indent}
address@hidden example
+
+The first paragraph is indented according to the value of @var{indent}:
+
address@hidden @asis
address@hidden @code{suppress}
+Prevents the first paragraph from being indented. This option is
+ignored if @code{@@paragraphindent asis} is in effect.
+
address@hidden @code{default}
+Leaves the indentation as-is. By default, this will respect the
+Paragraph Indentation set by an @code{@@paragraphindent} command.
+(@pxref{paragraphindent})
+
address@hidden table
+
+Like @code{@@paragraphindent}, the default value of @var{indent}
+is @code{default}. In HTML output, the value of
address@hidden@@firstparagraphinput} is ignored.
+
+Similiarily, it is best to write the @code{@@firstparagraphindent}
+command before the end-of-header line at the beginning of a Texinfo
+file. @xref{Start of Header}.
+
+
@node exampleindent
@subsection @code{@@exampleindent}: Environment Indenting
@cindex Indenting environments
@@ -7522,6 +7573,7 @@
* exdent:: Undo indentation on a line.
* flushleft & flushright:: Pushing text flush left or flush right.
* noindent:: Preventing paragraph indentation.
+* indent:: Forcing paragraph indentation.
* cartouche:: Drawing rounded rectangles around examples.
@end menu
@@ -8019,6 +8071,9 @@
@node noindent
@section @code{@@noindent}: Omitting Indentation
address@hidden Omitting indentation
address@hidden Suppressing indentation
address@hidden Indentation, omitting
@findex noindent
An example or other inclusion can break a paragraph into segments.
@@ -8078,6 +8133,32 @@
paragraphs (@pxref{Command Syntax}).
address@hidden indent
address@hidden @code{@@indent}: Forcing Indentation.
address@hidden Forcing indentation
address@hidden Inserting indentation
address@hidden Indentation, forcing
address@hidden indent
+
address@hidden
+To complement the @code{@@noindent} command (@pxref{noindent}), Texinfo
+provides the @code{@@indent} command that forces a paragraph to be
+indented. This paragraph is indented using an @code{@@indent} command.
+
+It is best to write @code{@@indent} on a line by itself, since in most
+environments, spaces following the command will not be ignored. It's ok
+to use it at the beginning of a line, with text following, outside of
+any environment.
+
+To adjust the number of blank lines properly in the Info file output,
+remember that the line containing @code{@@indent} does not generate a
+blank line, and neither does the @code{@@end example} line.
+
+Do not put braces after an @code{@@indent} command; they are not
+necessary, since @code{@@indent} is a command used outside of
+paragraphs (@pxref{Command Syntax}).
+
+
@node cartouche
@section @code{@@cartouche}: Rounded Rectangles Around Examples
@findex cartouche
@@ -14223,6 +14304,12 @@
@code{makeinfo} and then discarded. This option is used by
@command{texi2dvi} if you are using an old version of @file{texinfo.tex}
that does not support @code{@@macro}.
+
address@hidden --no-first-par-indent
address@hidden --no-first-par-indent
+Never indents the first paragraph of any section. This option overrides
+the value set in a Texinfo file by an
address@hidden@@firstparagraphindent} command (@pxref{firstparagraphindent}).
@item --no-headers
@opindex --no-headers
Index: makeinfo/cmds.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/cmds.c,v
retrieving revision 1.17
diff -u -r1.17 cmds.c
--- makeinfo/cmds.c 7 Mar 2003 19:22:52 -0000 1.17
+++ makeinfo/cmds.c 12 Apr 2003 22:56:24 -0000
@@ -56,7 +56,8 @@
cm_anchor (), cm_node (), cm_menu (), cm_xref (), cm_ftable (),
cm_vtable (), cm_pxref (), cm_inforef (), cm_uref (), cm_email (),
cm_quotation (), cm_display (), cm_smalldisplay (), cm_itemize (),
- cm_enumerate (), cm_tab (), cm_table (), cm_itemx (), cm_noindent (),
+ cm_enumerate (), cm_tab (), cm_table (), cm_itemx (),
+ cm_noindent (), cm_indent (),
cm_setfilename (), cm_br (), cm_sp (), cm_page (), cm_group (),
cm_center (), cm_ref (), cm_include (), cm_bye (), cm_item (), cm_end (),
cm_kindex (), cm_cindex (), cm_findex (), cm_pindex (), cm_vindex (),
@@ -66,7 +67,8 @@
cm_defcodeindex (), cm_result (), cm_expansion (), cm_equiv (),
cm_print (), cm_error (), cm_point (), cm_today (), cm_flushleft (),
cm_flushright (), cm_finalout (), cm_cartouche (), cm_detailmenu (),
- cm_multitable (), cm_settitle (), cm_titlefont (), cm_titlepage (), cm_tie
(), cm_tt (),
+ cm_multitable (), cm_settitle (), cm_titlefont (), cm_titlepage (),
+ cm_tie (), cm_tt (),
cm_verbatim (), cm_verbatiminclude ();
/* Conditionals. */
@@ -74,7 +76,10 @@
void cm_value (), cm_ifeq ();
/* Options. */
-static void cm_paragraphindent (), cm_exampleindent ();
+static void
+ cm_paragraphindent (),
+ cm_firstparagraphindent (),
+ cm_exampleindent ();
/* Internals. */
static void cm_obsolete ();
@@ -220,6 +225,7 @@
{ "file", cm_code, BRACE_ARGS },
{ "finalout", cm_no_op, NO_BRACE_ARGS },
{ "findex", cm_findex, NO_BRACE_ARGS },
+ { "firstparagraphindent", cm_firstparagraphindent, NO_BRACE_ARGS },
{ "flushleft", cm_flushleft, NO_BRACE_ARGS },
{ "flushright", cm_flushright, NO_BRACE_ARGS },
{ "footnote", cm_footnote, NO_BRACE_ARGS}, /* self-arg eater */
@@ -248,6 +254,7 @@
{ "ignore", command_name_condition, NO_BRACE_ARGS },
{ "image", cm_image, BRACE_ARGS },
{ "include", cm_include, NO_BRACE_ARGS },
+ { "indent", cm_indent, NO_BRACE_ARGS },
{ "inforef", cm_inforef, BRACE_ARGS },
{ "insertcopying", cm_insert_copying, NO_BRACE_ARGS },
{ "item", cm_item, NO_BRACE_ARGS },
@@ -269,7 +276,7 @@
{ "need", cm_ignore_line, NO_BRACE_ARGS },
{ "node", cm_node, NO_BRACE_ARGS },
{ "noindent", cm_noindent, NO_BRACE_ARGS },
- { "noindent", cm_novalidate, NO_BRACE_ARGS },
+ { "novalidate", cm_novalidate, NO_BRACE_ARGS },
{ "nwnode", cm_node, NO_BRACE_ARGS },
{ "o", cm_special_char, BRACE_ARGS },
{ "oddfooting", cm_ignore_line, NO_BRACE_ARGS },
@@ -995,6 +1002,13 @@
inhibit_paragraph_indentation = -1;
}
+/* This says to indentation the next paragraph. */
+void
+cm_indent ()
+{
+ inhibit_paragraph_indentation = 0;
+}
+
/* I don't know exactly what to do with this. Should I allow
someone to switch filenames in the middle of output? Since the
file could be partially written, this doesn't seem to make sense.
@@ -1398,6 +1412,33 @@
get_rest_of_line (1, &arg);
if (set_paragraph_indent (arg) != 0)
+ line_error (_("Bad argument to %c%s"), COMMAND_PREFIX, command);
+
+ free (arg);
+}
+
+/* @firstparagraphindent: suppress indentation in the first paragraph. */
+static int
+set_firstparagraphindent (string)
+ char *string;
+{
+ if (strcmp (string, "default") == 0 || strcmp (string, _("default")) == 0)
+ ;
+ else if (strcmp (string, "suppress") == 0
+ || strcmp (string, _("suppress")) == 0)
+ no_first_par_indent = 1;
+ else
+ return -1;
+ return 0;
+}
+
+static void
+cm_firstparagraphindent ()
+{
+ char *arg;
+
+ get_rest_of_line (1, &arg);
+ if (set_firstparagraphindent (arg) != 0)
line_error (_("Bad argument to %c%s"), COMMAND_PREFIX, command);
free (arg);
Index: makeinfo/makeinfo.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/makeinfo.c,v
retrieving revision 1.24
diff -u -r1.24 makeinfo.c
--- makeinfo/makeinfo.c 8 Apr 2003 14:13:54 -0000 1.24
+++ makeinfo/makeinfo.c 12 Apr 2003 22:56:26 -0000
@@ -427,6 +427,7 @@
--paragraph-indent=VAL indent Info paragraphs by VAL spaces (default
%d).\n\
If VAL is `none', do not indent; if VAL is\n\
`asis', preserve existing indentation.\n\
+ --no-first-par-indent suppress indentation of the first paragraph.\n\
--split-size=NUM split Info files at size NUM (default %d).\n"),
fill_column, paragraph_start_indent,
DEFAULT_SPLIT_SIZE);
@@ -503,6 +504,7 @@
{ "iftex", 0, &process_tex, 1 },
{ "ifxml", 0, &process_xml, 1 },
{ "macro-expand", 1, 0, 'E' },
+ { "no-first-par-indent", 0, &no_first_par_indent, 1 },
{ "no-headers", 0, &no_headers, 1 },
{ "no-ifhtml", 0, &process_html, 0 },
{ "no-ifinfo", 0, &process_info, 0 },
Index: makeinfo/makeinfo.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/makeinfo.h,v
retrieving revision 1.5
diff -u -r1.5 makeinfo.h
--- makeinfo/makeinfo.h 5 Apr 2003 22:51:01 -0000 1.5
+++ makeinfo/makeinfo.h 12 Apr 2003 22:56:26 -0000
@@ -178,6 +178,10 @@
is, generate plain text. (--no-headers) */
DECLARE (int, no_headers, 0);
+/* Nonzero means that we suppress the indentation of the first paragraph
+ in any section. (--no-first-par-indent) */
+DECLARE (int, no_first_par_indent, 0);
+
/* Nonzero means that we process @html and @rawhtml even when not
generating HTML. (--ifhtml) */
DECLARE (int, process_html, 0);
Index: makeinfo/sectioning.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/sectioning.c,v
retrieving revision 1.8
diff -u -r1.8 sectioning.c
--- makeinfo/sectioning.c 22 Mar 2003 17:40:54 -0000 1.8
+++ makeinfo/sectioning.c 12 Apr 2003 22:56:26 -0000
@@ -215,6 +215,11 @@
sectioning_underscore (cmd)
char *cmd;
{
+ /* If we're not indenting the first paragraph, we shall make it behave
+ like @noindent is called directly after the section heading. */
+ if (no_first_par_indent)
+ cm_noindent ();
+
if (xml)
{
char *temp;
- Re: Paragraph indentation suppression, (continued)
- Re: Paragraph indentation suppression, Stepan Kasal, 2003/04/08
- Re: Paragraph indentation suppression, Simon Law, 2003/04/08
- Re: Paragraph indentation suppression, Simon Law, 2003/04/08
- Re: Paragraph indentation suppression, Simon Law, 2003/04/08
- Re: Paragraph indentation suppression, Simon Law, 2003/04/08
- Re: Paragraph indentation suppression, Stepan Kasal, 2003/04/09
- Re: Paragraph indentation suppression, Simon Law, 2003/04/09
- Re: Paragraph indentation suppression, Stepan Kasal, 2003/04/10
- Re: Paragraph indentation suppression, Simon Law, 2003/04/12
- Re: Paragraph indentation suppression, Simon Law, 2003/04/12
- Re: Paragraph indentation suppression,
Simon Law <=
- Re: Paragraph indentation suppression, Stepan Kasal, 2003/04/13
- Re: Paragraph indentation suppression, Simon Law, 2003/04/14
- Re: Paragraph indentation suppression, Simon Law, 2003/04/16
- changing \parindent in \everypar (was Re: Paragraph indentation suppression), Stepan Kasal, 2003/04/09
Re: Paragraph indentation suppression, Karl Berry, 2003/04/08
Re: Paragraph indentation suppression, Karl Berry, 2003/04/08
Re: Paragraph indentation suppression, Karl Berry, 2003/04/16