/* sectioning.h -- all related stuff @chapter, @section... @contents
   $Id: sectioning.h,v 1.8 2007/07/01 21:20:33 karl Exp $

   Copyright (C) 1999, 2003, 2007 Free Software Foundation, Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.

   Written by Karl Heinz Marbaise <kama@hippo.fido.de>.  */

#ifndef SECTIONING_H
#define SECTIONING_H

/* Sectioning.  */

/* Level 4.  */
extern void cm_chapter (void),
  cm_unnumbered (void),
  cm_appendix (void),
  cm_top (void);

/* Level 3.  */
extern void cm_section (void),
  cm_unnumberedsec (void),
  cm_appendixsec (void);

/* Level 2.  */
extern void cm_subsection (void),
  cm_unnumberedsubsec (void),
  cm_appendixsubsec (void);

/* Level 1.  */
extern void cm_subsubsection (void),
  cm_unnumberedsubsubsec (void),
  cm_appendixsubsubsec (void);

/* Headings.  */
extern void cm_heading (void),
  cm_chapheading (void),
  cm_subheading (void),
  cm_subsubheading (void),
  cm_majorheading (void);

extern void cm_raisesections (void),
  cm_lowersections (void),
  cm_ideprecated (int arg, int start, int end);

extern void
  sectioning_underscore (char *cmd),
  insert_and_underscore (int level, char *cmd);

/* needed in node.c */
extern int set_top_section_level (int level);

extern void sectioning_html (int level, char *cmd);
extern int what_section (char *text, char **secname);
extern char *current_chapter_number (void),
  *current_sectioning_number (void),
  *current_sectioning_name (void);

/* The argument of @settitle, used for HTML. */
extern char *title;


/* Here is a structure which associates sectioning commands with
   an integer that reflects the depth of the current section. */
typedef struct
{
  char *name;
  int level; /* I can't replace the levels with defines
                because it is changed during run */
  int num; /* ENUM_SECT_NO means no enumeration...
              ENUM_SECT_YES means enumerated version
              ENUM_SECT_APP appendix (Character enumerated
                            at first position */
  int toc; /* TOC_NO means do not enter in toc;
              TOC_YES means enter it in toc */
} section_alist_type;

extern section_alist_type section_alist[];

/* enumerate sections */
#define ENUM_SECT_NO  0
#define ENUM_SECT_YES 1
#define ENUM_SECT_APP 2

/* make entries into toc no/yes */
#define TOC_NO  0
#define TOC_YES 1


#endif /* not SECTIONING_H */
