#!/usr/bin/perl
#=======================================================================
# Copyright (C) 2000-2005 Daniele Giacomini daniele@swlibero.org
#
# 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 2 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, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#=======================================================================
# a2engine OPTION ARGUMENT
#
# Programma frontale per l'opera Appunti di informatica libera.
#=======================================================================
#
# Program name.
#
$program_canonical_name = "a2engine";
#
# Program version.
#
$VERSION = "2005.01.01";
#
# &help_syntax ()
#
sub help_syntax
{
    printf STDOUT
        ( "Usage: $0 OPZIONE ARGOMENTO\n"
        . "       $0 --help\n"
        . "       $0 --version\n"
        . "\n"
        . "Programma per la gestione specifica di Appunti di informatica libera.\n"
        . "\n"
        . "Opzioni:\n"
        . "--help        mostra questa guida.\n"
        . "--version     mostra la versione.\n"
        . "--pkg-html    prepara il pacchetto HTML per la distribuzione.\n"
        . "--pkg-text    prepara il pacchetto in formato testo puro per la distribuzione.\n"
        . "--pkg-dvi-a4  prepara il pacchetto del formato DVI A4 per la distribuzione.\n"
        . "--pkg-dvi-a4-small\n"
	. "              prepara il pacchetto ridotto del formato DVI A4 per la distribuzione.\n"
        . "--pkg-pdf-a4  prepara il pacchetto del formato PDF A4 per la distribuzione.\n"
        . "--pkg-pdf-plain-a4\n"
	. "              prepara il pacchetto del formato PDF (plain) A4 per la distribuzione.\n"
        . "--pkg-ps-a4   prepara il pacchetto dei formati PostScript A4 per la distribuzione.\n"
        . "--pkg-ps-a4-small\n"
	. "              prepara il pacchetto ridotto dei formati PostScript A4 per la distribuzione.\n"
        . "--pkg-ps-a7x4 prepara il pacchetto dei formati PostScript A7x4 per la distribuzione.\n"
        . "--pkg-ps-a7x4-small\n"
	. "              prepara il pacchetto ridotto dei formati PostScript A7x4 per la distribuzione.\n"
        . "--pkg-ps-raccolte-a4\n"
	. "                prepara i pacchetti delle raccolte A4 in PostScript.\n"
        . "--pkg-ps-raccolte-a7x4\n"
	. "                prepara i pacchetti delle raccolte A7x4 in PostScript.\n"
        . "--pkg-dvi-raccolte-a4\n"
	. "                prepara i pacchetti delle raccolte A4 in DVI.\n"
        . "--pkg-pdf-raccolte-a4\n"
	. "                prepara i pacchetti delle raccolte A4 in PDF.\n"
        . "--pkg-esempi  prepara il pacchetto degli esempi per la distribuzione.\n"
        . "--pkg-sgml    prepara il pacchetto dei sorgenti e altre directory.\n"
        . "--pkg-alml    prepara il pacchetto di Alml per la distribuzione.\n"
        . "--pkg-alml-deb\n"
	. "                prepara il pacchetto di Alml per la distribuzione assieme\n"
	. "                al pacchetto Debian binario di prova.\n"
        . "--pkg-alml-deb-inst\n"
	. "                prepara il pacchetto di Alml per la distribuzione assieme\n"
	. "                al pacchetto Debian binario di prova e installa il\n"
	. "                pacchetto Debian.\n"
        . "--pkg-sgmltexi\n"
	. "              prepara il pacchetto di Sgmltexi per la distribuzione.\n"
        . "--pkg-textchk\n"
	. "              prepara il pacchetto di Textchk per la distribuzione.\n"
        . "--pkg-readme  prepara i file \"leggimi\" della distribuzione.\n"
        . "--pkg-readme-small\n"
	. "              prepara i file \"leggimi\" della distribuzione ridotta.\n"
        . "--sgml-extract=FILE\n"
        . "              estrapola il file da un altro file SGML.\n"
        . "                In tal caso l'argomento finale  un file SGML contenente\n"
        . "                i commenti necessari per estrapolare il file indicato.\n"
        . "\n"
        . "Argomento:\n"
        . "In generale si tratta di un file PostScript.\n"
        . "\n"
        . "Report bugs to <daniele\@swlibero.org>\n");
}
#
# Show version information.
#
# &version_info ()
#
sub version_info
{
    printf STDOUT
        ( "$program_canonical_name, $VERSION\n"
        . "\n"
        . "Copyright (C) 2000-2004 Daniele giacomini <daniele\@swlibero.org>\n"
        . "This is free software; see the source for copying conditions.\n"
        . "There is NO warranty; not even for MERCHANTABILITY or FITNESS\n"
        . "FOR A PARTICULAR PURPOSE.\n" );
}
#
# Determinate the file name without extention.
#
# &root_name (FILE-NAME, EXTENTION)
#
sub root_name
{
    local( $file_name ) = $_[0];
    local( $extention_name ) = $_[1];
    local( $root_name ) = "";
    #    
    $file_name =~ m/^(.*)$extention_name$/;
    $root_name = $1;
    if ($root_name eq "")
      {
        # The extention is not the same.
        $root_name = $file_name;
      }
    return ("$root_name");
} # &root_name
#
# Put an index on any subdirectory
#
# &index_html_recursive (DIRECTORY)
#
sub index_html_recursive
{
    local ($directory) = $_[0];
    local ($ls) = $directory;
    #
    opendir ($ls, "$directory");
    while ($file = readdir ($ls))
      {
	if (-d "$directory/$file")
	  {
	    if ($file !~ m/^\./)
	      {
    		&index_html_recursive ("$directory/$file");
	      }
	  }
      }    
    closedir ($ls);
    print STDOUT ("$directory/index.html\n");
    system ("alml-extra --html-index-basic=\"$directory\" > $directory/index.html");
#    
} # &index_html
#
# Suddivide il file PostScript in raccolte.
#
# &raccolte (PAGE_LOC, FILE_PS)
#
sub raccolte
{
    local ($page_loc) = $_[0];
    local ($file_ps) = $_[1];
    local ($line) = "";
    local (@pagine) = ();
    local ($stage) = "intro";
    local ($previous_n) = 0;
    local ($n) = 0;
    local ($start_page) = 1;
    local ($stop_page) = 0;
    local ($radice) = &root_name ($file_ps, ".ps");
    #
    open (SPLIT_FILE, "< $page_loc");
    while ($line = <SPLIT_FILE>)
      {
	if ($stage eq "intro")
	  {
	    if ($line =~ m/tome\{([0-9]+)\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$n = $1;
		$stop_page = ($2 + $3 -1);
		$pagine[$previous_n] = ();
		$pagine[$previous_n][0] = $start_page;
		$pagine[$previous_n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "tome";
	      }
	  }
	elsif ($stage eq "tome")
	  {
	    if ($line =~ m/tome\{([0-9]+)\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$previous_n = $n;
		$n = $1;
		$stop_page = ($2 + $3 -1);
		$pagine[$previous_n] = ();
		$pagine[$previous_n][0] = $start_page;
		$pagine[$previous_n][1] = $stop_page;
		$start_page = ($stop_page + 1);
	      }
	    elsif ($line =~ m/appendix\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2 -1);
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "appendix";
	      }
	    elsif ($line =~ m/index\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2 -1);
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "index";
	      }
	    elsif ($line =~ m/eof\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2);
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "eof";
	      }
	  }
	elsif ($stage eq "appendix")
	  {
	    if ($line =~ m/index\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2 -1);
		$n++;
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "index";
	      }
	    elsif ($line =~ m/eof\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2);
		$n++;
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "eof";
	      }
	  }
	elsif ($stage eq "index")
	  {
	    if ($line =~ m/eof\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2);
		$n++;
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "eof";
	      }
	  }
      }        
    close (SPLIT_FILE);
    #
    # Prima raccolta.
    # tomi 1 e 2
    #
    system ("psselect -q -p "
            . $pagine[0][0]
	    . "-"
	    . $pagine[0][1]
	    . ","
            . $pagine[1][0]
	    . "-"
	    . $pagine[1][1]
	    . ","
            . $pagine[2][0]
	    . "-"
	    . $pagine[2][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . "-"
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . "-"
	    . $pagine[$#pagine][1]
	    . " $file_ps $radice.A.ps");
    #
    # Seconda raccolta.
    # tomi 3, 4, 5, 6 (reti)
    #
    system ("psselect -q -p "
            . $pagine[0][0]
	    . "-"
	    . $pagine[0][1]
	    . ","
            . $pagine[3][0]
	    . "-"
	    . $pagine[3][1]
	    . ","
            . $pagine[4][0]
	    . "-"
	    . $pagine[4][1]
	    . ","
            . $pagine[5][0]
	    . "-"
	    . $pagine[5][1]
	    . ","
            . $pagine[6][0]
	    . "-"
	    . $pagine[6][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . "-"
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . "-"
	    . $pagine[$#pagine][1]
	    . " $file_ps $radice.B.ps");
    #
    # Terza raccolta.
    # tomo 7   (scrittura)
    #
    system ("psselect -q -p "
            . $pagine[0][0]
	    . "-"
	    . $pagine[0][1]
	    . ","
            . $pagine[7][0]
	    . "-"
	    . $pagine[7][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . "-"
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . "-"
	    . $pagine[$#pagine][1]
	    . " $file_ps $radice.C.ps");
    #
    # Quarta raccolta.
    # tomo 8, 9, 10   (programmazione e software scientifico)
    #
    system ("psselect -q -p "
            . $pagine[0][0]
	    . "-"
	    . $pagine[0][1]
	    . ","
            . $pagine[8][0]
	    . "-"
	    . $pagine[8][1]
	    . ","
            . $pagine[9][0]
	    . "-"
	    . $pagine[9][1]
	    . ","
            . $pagine[10][0]
	    . "-"
	    . $pagine[10][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . "-"
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . "-"
	    . $pagine[$#pagine][1]
	    . " $file_ps $radice.D.ps");
    #
    # Quinta raccolta.
    # tomo 11, 12, 13, 14   (varie, LDR, licenze)
    #
    system ("psselect -q -p "
            . $pagine[0][0]
	    . "-"
	    . $pagine[0][1]
	    . ","
            . $pagine[11][0]
	    . "-"
	    . $pagine[11][1]
	    . ","
            . $pagine[12][0]
	    . "-"
	    . $pagine[12][1]
	    . ","
            . $pagine[13][0]
	    . "-"
	    . $pagine[13][1]
	    . ","
            . $pagine[14][0]
	    . "-"
	    . $pagine[14][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . "-"
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . "-"
	    . $pagine[$#pagine][1]
	    . " $file_ps $radice.E.ps");
#
}
#
# Suddivide il file DVI in raccolte.
#
# &raccolte_dvi (PAGE_LOC, FILE_DVI)
#
sub raccolte_dvi
{
    local ($page_loc) = $_[0];
    local ($file_dvi) = $_[1];
    local ($line) = "";
    local (@pagine) = ();
    local ($stage) = "intro";
    local ($previous_n) = 0;
    local ($n) = 0;
    local ($start_page) = 1;
    local ($stop_page) = 0;
    local ($radice) = &root_name ($file_dvi, ".dvi");

    open (SPLIT_FILE, "< $page_loc");
    while ($line = <SPLIT_FILE>)
      {
	if ($stage eq "intro")
	  {
	    if ($line =~ m/tome\{([0-9]+)\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$n = $1;
		$stop_page = ($2 + $3 -1);
		$pagine[$previous_n] = ();
		$pagine[$previous_n][0] = $start_page;
		$pagine[$previous_n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "tome";
	      }
	  }
	elsif ($stage eq "tome")
	  {
	    if ($line =~ m/tome\{([0-9]+)\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$previous_n = $n;
		$n = $1;
		$stop_page = ($2 + $3 -1);
		$pagine[$previous_n] = ();
		$pagine[$previous_n][0] = $start_page;
		$pagine[$previous_n][1] = $stop_page;
		$start_page = ($stop_page + 1);
	      }
	    elsif ($line =~ m/appendix\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2 -1);
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "appendix";
	      }
	    elsif ($line =~ m/index\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2 -1);
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "index";
	      }
	    elsif ($line =~ m/eof\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2);
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "eof";
	      }
	  }
	elsif ($stage eq "appendix")
	  {
	    if ($line =~ m/index\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2 -1);
		$n++;
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "index";
	      }
	    elsif ($line =~ m/eof\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2);
		$n++;
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "eof";
	      }
	  }
	elsif ($stage eq "index")
	  {
	    if ($line =~ m/eof\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2);
		$n++;
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "eof";
	      }
	  }
      }        
    close (SPLIT_FILE);

    #-------------------------------------------------------------------
    # Prima raccolta.
    # tomi 1 e 2
    #-------------------------------------------------------------------
    system ("dvidvi -i "
            . $pagine[0][0]
	    . ".."
	    . $pagine[0][1]
	    . ","
            . $pagine[1][0]
	    . ".."
	    . $pagine[1][1]
	    . ","
            . $pagine[2][0]
	    . ".."
	    . $pagine[2][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . ".."
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . ".."
	    . $pagine[$#pagine][1]
	    . " $file_dvi $radice.A.dvi");

    #-------------------------------------------------------------------
    # Seconda raccolta.
    # tomi 3, 4, 5, 6 (reti)
    #-------------------------------------------------------------------
    system ("dvidvi -i "
            . $pagine[0][0]
	    . ".."
	    . $pagine[0][1]
	    . ","
            . $pagine[3][0]
	    . ".."
	    . $pagine[3][1]
	    . ","
            . $pagine[4][0]
	    . ".."
	    . $pagine[4][1]
	    . ","
            . $pagine[5][0]
	    . ".."
	    . $pagine[5][1]
	    . ","
            . $pagine[6][0]
	    . ".."
	    . $pagine[6][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . ".."
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . ".."
	    . $pagine[$#pagine][1]
	    . " $file_dvi $radice.B.dvi");

    #-------------------------------------------------------------------
    # Terza raccolta.
    # tomo 7   (scrittura)
    #-------------------------------------------------------------------
    system ("dvidvi -i "
            . $pagine[0][0]
	    . ".."
	    . $pagine[0][1]
	    . ","
            . $pagine[7][0]
	    . ".."
	    . $pagine[7][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . ".."
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . ".."
	    . $pagine[$#pagine][1]
	    . " $file_dvi $radice.C.dvi");

    #-------------------------------------------------------------------
    # Quarta raccolta.
    # tomo 8, 9, 10   (programmazione e software scientifico)
    #-------------------------------------------------------------------
    system ("dvidvi -i "
            . $pagine[0][0]
	    . ".."
	    . $pagine[0][1]
	    . ","
            . $pagine[8][0]
	    . ".."
	    . $pagine[8][1]
	    . ","
            . $pagine[9][0]
	    . ".."
	    . $pagine[9][1]
	    . ","
            . $pagine[10][0]
	    . ".."
	    . $pagine[10][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . ".."
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . ".."
	    . $pagine[$#pagine][1]
	    . " $file_dvi $radice.D.dvi");

    #-------------------------------------------------------------------
    # Quinta raccolta.
    # tomo 11, 12, 13, 14   (varie, LDR, licenze)
    #-------------------------------------------------------------------
    system ("dvidvi -i "
            . $pagine[0][0]
	    . ".."
	    . $pagine[0][1]
	    . ","
            . $pagine[11][0]
	    . ".."
	    . $pagine[11][1]
	    . ","
            . $pagine[12][0]
	    . ".."
	    . $pagine[12][1]
	    . ","
            . $pagine[13][0]
	    . ".."
	    . $pagine[13][1]
	    . ","
            . $pagine[14][0]
	    . ".."
	    . $pagine[14][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . ".."
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . ".."
	    . $pagine[$#pagine][1]
	    . " $file_dvi $radice.E.dvi");
}

#-----------------------------------------------------------------------
# Suddivide il file DVI in raccolte PDF.
#
# &raccolte_pdf (PAGE_LOC, FILE_DVI)
#-----------------------------------------------------------------------
sub raccolte_pdf
{
    local ($page_loc) = $_[0];
    local ($file_dvi) = $_[1];
    local ($line) = "";
    local (@pagine) = ();
    local ($stage) = "intro";
    local ($previous_n) = 0;
    local ($n) = 0;
    local ($start_page) = 1;
    local ($stop_page) = 0;
    local ($radice) = &root_name ($file_dvi, ".dvi");

    open (SPLIT_FILE, "< $page_loc");
    while ($line = <SPLIT_FILE>)
      {
	if ($stage eq "intro")
	  {
	    if ($line =~ m/tome\{([0-9]+)\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$n = $1;
		$stop_page = ($2 + $3 -1);
		$pagine[$previous_n] = ();
		$pagine[$previous_n][0] = $start_page;
		$pagine[$previous_n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "tome";
	      }
	  }
	elsif ($stage eq "tome")
	  {
	    if ($line =~ m/tome\{([0-9]+)\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$previous_n = $n;
		$n = $1;
		$stop_page = ($2 + $3 -1);
		$pagine[$previous_n] = ();
		$pagine[$previous_n][0] = $start_page;
		$pagine[$previous_n][1] = $stop_page;
		$start_page = ($stop_page + 1);
	      }
	    elsif ($line =~ m/appendix\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2 -1);
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "appendix";
	      }
	    elsif ($line =~ m/index\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2 -1);
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "index";
	      }
	    elsif ($line =~ m/eof\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2);
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "eof";
	      }
	  }
	elsif ($stage eq "appendix")
	  {
	    if ($line =~ m/index\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2 -1);
		$n++;
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "index";
	      }
	    elsif ($line =~ m/eof\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2);
		$n++;
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "eof";
	      }
	  }
	elsif ($stage eq "index")
	  {
	    if ($line =~ m/eof\{\}pageoffset\{([0-9]+)\}relativepage\{([0-9]+)\}/i)
	      {
		$stop_page = ($1 + $2);
		$n++;
		$pagine[$n] = ();
		$pagine[$n][0] = $start_page;
		$pagine[$n][1] = $stop_page;
		$start_page = ($stop_page + 1);
		$stage = "eof";
	      }
	  }
      }        
    close (SPLIT_FILE);

    #-------------------------------------------------------------------
    # Prima raccolta.
    # tomi 1 e 2
    #-------------------------------------------------------------------
    system ("dvipdfm -o $radice.A.pdf -s "
            . $pagine[0][0]
	    . "-"
	    . $pagine[0][1]
	    . ","
            . $pagine[1][0]
	    . "-"
	    . $pagine[1][1]
	    . ","
            . $pagine[2][0]
	    . "-"
	    . $pagine[2][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . "-"
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . "-"
	    . $pagine[$#pagine][1]
	    . " $file_dvi");

    #-------------------------------------------------------------------
    # Seconda raccolta.
    # tomi 3, 4, 5, 6 (reti)
    #-------------------------------------------------------------------
    system ("dvipdfm -o $radice.B.pdf -s "
            . $pagine[0][0]
	    . "-"
	    . $pagine[0][1]
	    . ","
            . $pagine[3][0]
	    . "-"
	    . $pagine[3][1]
	    . ","
            . $pagine[4][0]
	    . "-"
	    . $pagine[4][1]
	    . ","
            . $pagine[5][0]
	    . "-"
	    . $pagine[5][1]
	    . ","
            . $pagine[6][0]
	    . "-"
	    . $pagine[6][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . "-"
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . "-"
	    . $pagine[$#pagine][1]
	    . " $file_dvi");

    #-------------------------------------------------------------------
    # Terza raccolta.
    # tomo 7   (scrittura)
    #-------------------------------------------------------------------
    system ("dvipdfm -o $radice.C.pdf -s "
            . $pagine[0][0]
	    . "-"
	    . $pagine[0][1]
	    . ","
            . $pagine[7][0]
	    . "-"
	    . $pagine[7][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . "-"
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . "-"
	    . $pagine[$#pagine][1]
	    . " $file_dvi");

    #-------------------------------------------------------------------
    # Quarta raccolta.
    # tomo 8, 9, 10   (programmazione e software scientifico)
    #-------------------------------------------------------------------
    system ("dvipdfm -o $radice.D.pdf -s "
            . $pagine[0][0]
	    . "-"
	    . $pagine[0][1]
	    . ","
            . $pagine[8][0]
	    . "-"
	    . $pagine[8][1]
	    . ","
            . $pagine[9][0]
	    . "-"
	    . $pagine[9][1]
	    . ","
            . $pagine[10][0]
	    . "-"
	    . $pagine[10][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . "-"
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . "-"
	    . $pagine[$#pagine][1]
	    . " $file_dvi");

    #-------------------------------------------------------------------
    # Quinta raccolta.
    # tomo 11, 12, 13, 14   (varie, LDR, licenze)
    #-------------------------------------------------------------------
    system ("dvipdfm -o $radice.E.pdf -s "
            . $pagine[0][0]
	    . "-"
	    . $pagine[0][1]
	    . ","
            . $pagine[11][0]
	    . "-"
	    . $pagine[11][1]
	    . ","
            . $pagine[12][0]
	    . "-"
	    . $pagine[12][1]
	    . ","
            . $pagine[13][0]
	    . "-"
	    . $pagine[13][1]
	    . ","
            . $pagine[14][0]
	    . "-"
	    . $pagine[14][1]
	    . ","
            . $pagine[$#pagine-1][0]
	    . "-"
	    . $pagine[$#pagine-1][1]
	    . ","
            . $pagine[$#pagine][0]
	    . "-"
	    . $pagine[$#pagine][1]
	    . " $file_dvi");
}

#----------------------------------------------------------------------
# Start of program.
#----------------------------------------------------------------------
local ($argument)       = "";
local ($action)         = "";
local ($n)              = 0;
local ($file_to_be_extracted) = "";

# Scan arguments.
for ($n = 0; $n <= $#ARGV; $n++)
  {
    # Analyze argument $n.
    if ($ARGV[$n] !~ m/^-/)
     {
        # This argument has no minus at the beguinning.
	# This must be a final argument.
        $argument = $ARGV[$n];
     }
    elsif ($ARGV[$n] eq "--help")
      {
        # The user is asking for help.
        &help_syntax;
        exit 0;
      }
    elsif ($ARGV[$n] eq "--version")
      {
        # The user wants to know the program version.
        &version_info;
        exit 0;

      }
    elsif ($ARGV[$n] eq "--pkg-readme")
      {
	$action = "pkg-readme";
      }
    elsif ($ARGV[$n] eq "--pkg-readme-small")
      {
	$action = "pkg-readme-small";
      }
    elsif ($ARGV[$n] eq "--pkg-html")
      {
	$action = "pkg-html";
      }
    elsif ($ARGV[$n] eq "--pkg-text")
      {
	$action = "pkg-text";
      }
    elsif ($ARGV[$n] eq "--pkg-pdf-a4")
      {
	$action = "pkg-pdf-a4";
      }
    elsif ($ARGV[$n] eq "--pkg-pdf-plain-a4")
      {
	$action = "pkg-pdf-plain-a4";
      }
    elsif ($ARGV[$n] eq "--pkg-dvi-a4")
      {
	$action = "pkg-dvi-a4";
      }
    elsif ($ARGV[$n] eq "--pkg-dvi-a4-small")
      {
	$action = "pkg-dvi-a4-small";
      }
    elsif ($ARGV[$n] eq "--pkg-ps-a4")
      {
	$action = "pkg-ps-a4";
      }
    elsif ($ARGV[$n] eq "--pkg-ps-a4-small")
      {
	$action = "pkg-ps-a4-small";
      }
    elsif ($ARGV[$n] eq "--pkg-ps-raccolte-a4")
      {
	$action = "pkg-ps-raccolte-a4";
      }
    elsif ($ARGV[$n] eq "--pkg-dvi-raccolte-a4")
      {
	$action = "pkg-dvi-raccolte-a4";
      }
    elsif ($ARGV[$n] eq "--pkg-pdf-raccolte-a4")
      {
	$action = "pkg-pdf-raccolte-a4";
      }
    elsif ($ARGV[$n] eq "--pkg-ps-a7x4")
      {
	$action = "pkg-ps-a7x4";
      }
    elsif ($ARGV[$n] eq "--pkg-ps-a7x4-small")
      {
	$action = "pkg-ps-a7x4-small";
      }
    elsif ($ARGV[$n] eq "--pkg-ps-raccolte-a7x4")
      {
	$action = "pkg-ps-raccolte-a7x4";
      }
    elsif ($ARGV[$n] eq "--pkg-esempi")
      {
	$action = "pkg-esempi";
      }
    elsif ($ARGV[$n] eq "--pkg-alml")
      {
	$action = "pkg-alml";
      }
    elsif ($ARGV[$n] eq "--pkg-alml-deb")
      {
	$action = "pkg-alml-deb";
      }
    elsif ($ARGV[$n] eq "--pkg-alml-deb-inst")
      {
	$action = "pkg-alml-deb-inst";
      }
    elsif ($ARGV[$n] eq "--pkg-sgmltexi")
      {
	$action = "pkg-sgmltexi";
      }
    elsif ($ARGV[$n] eq "--pkg-textchk")
      {
	$action = "pkg-textchk";
      }
    elsif ($ARGV[$n] eq "--pkg-sgml")
      {
	$action = "pkg-sgml";
      }
    elsif ($ARGV[$n] =~ m/--sgml-extract=([^ ]+)/)
      {
        $file_to_be_extracted = $1;
	$action = "sgml-extract";
      }
    else
      {
	print STDERR ("Argomento sconosciuto: " . $ARGV[$n] . "\n");
      }
  }

# Do the work.
if ($action eq "pkg-sgml")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    mkdir ("$version/sorgente", 0755);
    mkdir ("$version/sorgente/figure", 0755);
    mkdir ("$version/sorgente/allegati", 0755);
    system ("cp `ls a2-*.sgml | tail -n 1` $version/sorgente");
    system ("cp a2sub.sgml $version/sorgente");
    system ("cp a2make $version/sorgente");
    system ("cp a2.css $version/sorgente");
    system ("cp a2.syntax $version/sorgente");
    system ("cp a2sources $version/sorgente");
    system ("cp Makefile $version/sorgente");
    system ("cp EDIZIONE $version/sorgente");
    system ("cp COPYING $version/sorgente");
    system ("cp PAGINE $version/sorgente");
    system ("cp -dpR ortografia $version/sorgente");
    system ("rm -f $version/sorgente/ortografia/*.orig*");
    system ("rm -f $version/sorgente/ortografia/*.bkp?");
    system ("cp -dpR traduzioni $version/sorgente");
    system ("rm -f   $version/sorgente/traduzioni/en/a2-7*.sgml");
    system ("rm -f   $version/sorgente/traduzioni/messaggi");
    system ("cp -dpR .textchk* $version/sorgente");
    #system ("cp -dpR citazioni $version/sorgente");
    #system ("cp -dpR contributi $version/sorgente");
    #system ("cp -dpR formalita $version/sorgente");
    #system ("cp -dpR inclusi $version/sorgente");
    system ("cp -dpR ospiti $version/sorgente");
    system ("rm -fr $version/sorgente/ospiti/*.orig*");
    system ("mkdir $version/sorgente/riduzioni");
    system ("cp -dpR riduzioni/a2ant-* $version/sorgente/riduzioni/");
    system ("cp -dpR riduzioni/a2vol-* $version/sorgente/riduzioni/");
    system ("cp -dpR riduzioni/a2par-* $version/sorgente/riduzioni/");
    system ("cp -dpR figure/ $version/sorgente/");
    system ("cp -dpRL allegati/ $version/sorgente/");
    #system ("cp -dpR sistemi-mini $version");
    #system ("cp -dpR nanoLinux $version");
    system ("cp -dpR software $version");
    mkdir ("$version/sorgente/sistemi-mini", 0755);
    #mkdir ("$version/sorgente/nanoLinux", 0755);
    mkdir ("$version/sorgente/software", 0755);
    system ("cd $version/sorgente/riduzioni ; for a in * ; do cd $a ; ./a2make clean ; cd .. ; done");
    system ("cd $version/sorgente/ospiti ; for a in * ; do cd $a ; ./a2make clean ; cd .. ; done");
    system ("cd $version/sorgente/ ; ./a2make clean");
    system ("cd $version/sorgente ; tar czvf ../$version/a2-$version.sgml.tar.gz . ; cd ../..");
    system ("rm -fr $version/sorgente");
  }
elsif ($action eq "pkg-html")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/HTML", 0755);
    mkdir ("$version/HTML/allegati", 0755);
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    system ("cp -dpR *.html   $version/HTML");
    system ("cp      a2.html  $version/HTML/index.html");
    system ("cp -dpR *.jpg    $version/HTML");
    system ("cp -dpR *.midi   $version/HTML");
    system ("cp      a2.css   $version/HTML");
    system ("chmod 0444  $version/HTML/*");
    system ("cp -L   allegati/* $version/HTML/allegati");
    system ("chmod 0444  $version/HTML/allegati/*");
    system ("cd $version/HTML ; tar czvf ../$version/a2-$version.html.tar.gz . ; cd ../..");
  }
elsif ($action eq "pkg-text")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    system ("cat a2-$version.txt | gzip -f -9 > $version/$version/a2-$version.txt.gz");
  }
elsif ($action eq "pkg-pdf-a4")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    mkdir ("$version/PDF", 0755);
    system ("cp a2-$version.a4.pdf $version/PDF/a2-$version.a4.pdf");
    # suddivisioni
    mkdir ("$version/PDF/tomi", 0755);
    mkdir ("$version/PDF/parti", 0755);
    # a4
    mkdir ("$version/PDF/tomi/a4", 0755);
    mkdir ("$version/PDF/parti/a4", 0755);
    opendir (A4_TOMI, "tmp_tomi");
    while ($file = readdir (A4_TOMI))
      {
	if ($file =~ m/\.pdf$/)
	  {
	    system ("cp tmp_tomi/$file $version/PDF/tomi/a4/"
		    . &root_name ($file, ".pdf")
		    . ".a4.pdf");
	  }
      }    
    closedir (A4_TOMI);
    opendir (A4_PARTI, "tmp_parti");
    while ($file = readdir (A4_PARTI))
      {
	if ($file =~ m/\.pdf$/)
	  {
	    system ("cp tmp_parti/$file $version/PDF/parti/a4/"
		    . &root_name ($file, ".pdf")
		    . ".a4.pdf");
	  }
      }    
    closedir (A4_PARTI);
  }
elsif ($action eq "pkg-pdf-plain-a4")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    mkdir ("$version/PDF", 0755);
    system ("cp a2-$version-plain.a4.pdf $version/PDF/a2-$version-plain.a4.pdf");
  }
elsif ($action eq "pkg-dvi-a4-small")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    mkdir ("$version/DVI.tmp", 0755);
    system ("rm -fr $version/DVI.tmp/*");
    #
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    #
    system ("cp [0-9].ps $version/DVI.tmp/");
    system ("cp [0-9][0-9].ps $version/DVI.tmp/");
    system ("cp [0-9][0-9][0-9].ps $version/DVI.tmp/");
    system ("cp [0-9][0-9][0-9][0-9].ps $version/DVI.tmp/");
    #
    system ("cp -L allegati/* $version/DVI.tmp/allegati/");
    #
    system ("cp a2-$version.a4.dvi $version/DVI.tmp");
    system ("cd $version/DVI.tmp ; tar czvf ../$version/a2-$version.a4.dvi.tar.gz . ; cd ../..");
    system ("rm -f $version/DVI.tmp/*.dvi");
    # suddivisioni
  }
elsif ($action eq "pkg-dvi-a4")
  {
    #
    # Funziona, ma non  il caso: meglio risparmiare un po' di spazio.
    #
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    mkdir ("$version/DVI.tmp", 0755);
    mkdir ("$version/DVI.tmp/allegati", 0755);
    system ("rm -fr $version/DVI.tmp/*");
    #
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    #
    system ("cp [0-9].ps $version/DVI.tmp/");
    system ("cp [0-9][0-9].ps $version/DVI.tmp/");
    system ("cp [0-9][0-9][0-9].ps $version/DVI.tmp/");
    system ("cp [0-9][0-9][0-9][0-9].ps $version/DVI.tmp/");
    #
    system ("cp -L allegati/* $version/DVI.tmp/allegati/");
    #
    mkdir ("$version/DVI", 0755);
    system ("cp a2-$version.a4.dvi $version/DVI.tmp");
    system ("cd $version/DVI.tmp ; tar czvf ../DVI/a2-$version.a4.dvi.tar.gz . ; cd ../..");
    system ("rm -f $version/DVI.tmp/*.dvi");
    # suddivisioni
    mkdir ("$version/DVI/tomi", 0755);
    mkdir ("$version/DVI/parti", 0755);
    # a4
    mkdir ("$version/DVI/tomi/a4", 0755);
    mkdir ("$version/DVI/parti/a4", 0755);
    opendir (A4_TOMI, "tmp_tomi");
    while ($file = readdir (A4_TOMI))
      {
	if ($file =~ m/\.dvi$/)
	  {
	    system ("cp tmp_tomi/$file $version/DVI.tmp/"
		    . &root_name ($file, ".dvi")
		    . ".a4.dvi");
	    system ("cd $version/DVI.tmp ; tar czvf ../DVI/tomi/a4/"
	    	    . &root_name ($file, ".dvi")
		    . ".a4.dvi.tar.gz"
		    . " . ; cd ../..");
	    system ("rm -f $version/DVI.tmp/*.dvi");
	  }
      }    
    closedir (A4_TOMI);
    opendir (A4_PARTI, "tmp_parti");
    while ($file = readdir (A4_PARTI))
      {
	if ($file =~ m/\.dvi$/)
	  {
	    system ("cp tmp_tomi/$file $version/DVI.tmp/"
		    . &root_name ($file, ".dvi")
		    . ".a4.dvi");
	    system ("cd $version/DVI.tmp ; tar czvf ../DVI/parti/a4/"
	    	    . &root_name ($file, ".dvi")
		    . ".a4.dvi.tar.gz"
		    . " . ; cd ../..");
	    system ("rm -f $version/DVI.tmp/*.dvi");
	  }
      }    
    closedir (A4_PARTI);


  }
elsif ($action eq "pkg-ps-a4-small")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    local ($file) = "";

    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    mkdir ("$version/PS", 0755);
    system ("cp a2-$version.a4.ps $version/PS");
    system ("cd $version/PS/ ; gzip -f -9 *.ps");
    # suddivisioni
    mkdir ("$version/PS/tomi", 0755);
    mkdir ("$version/PS/parti", 0755);
    # a4
    mkdir ("$version/PS/tomi/a4", 0755);
    mkdir ("$version/PS/parti/a4", 0755);
    opendir (A4_TOMI, "tmp_tomi");
    while ($file = readdir (A4_TOMI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("cp tmp_tomi/$file $version/PS/tomi/a4/"
		    . &root_name ($file, ".ps")
		    . ".a4.ps");
	    system ("cd $version/PS/tomi/a4 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_TOMI);
    opendir (A4_PARTI, "tmp_parti");
    while ($file = readdir (A4_PARTI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("cp tmp_parti/$file $version/PS/parti/a4/"
		    . &root_name ($file, ".ps")
		    . ".a4.ps");
	    system ("cd $version/PS/parti/a4 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_PARTI);
  }
elsif ($action eq "pkg-ps-a4")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    local ($file) = "";

    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    mkdir ("$version/PS", 0755);
    system ("cp a2-$version.a4.ps $version/PS");
    system ("cd $version/PS/ ; gzip -f -9 *.ps");
    # suddivisioni
    mkdir ("$version/PS/tomi", 0755);
    mkdir ("$version/PS/parti", 0755);
    # a4
    mkdir ("$version/PS/tomi/a4", 0755);
    mkdir ("$version/PS/parti/a4", 0755);
    opendir (A4_TOMI, "tmp_tomi");
    while ($file = readdir (A4_TOMI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("cp tmp_tomi/$file $version/PS/tomi/a4/"
		    . &root_name ($file, ".ps")
		    . ".a4.ps");
	    system ("cd $version/PS/tomi/a4 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_TOMI);
    opendir (A4_PARTI, "tmp_parti");
    while ($file = readdir (A4_PARTI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("cp tmp_parti/$file $version/PS/parti/a4/"
		    . &root_name ($file, ".ps")
		    . ".a4.ps");
	    system ("cd $version/PS/parti/a4 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_PARTI);
    # a5-2-a4-1h-1
    mkdir ("$version/PS/tomi/a5-2-a4-1h-1", 0755);
    mkdir ("$version/PS/parti/a5-2-a4-1h-1", 0755);
    opendir (A4_TOMI, "tmp_tomi");
    while ($file = readdir (A4_TOMI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    print STDOUT ("alml-extra --a4-to-a5-2-a4-1h-1 tmp_tomi/$file\n");
	    system ("alml-extra --a4-to-a5-2-a4-1h-1 tmp_tomi/$file");
	    system ("mv tmp_tomi/*.a5-2-a4-1h-1.ps $version/PS/tomi/a5-2-a4-1h-1");
	    system ("cd $version/PS/tomi/a5-2-a4-1h-1 ; gzip -f -9 *.ps");
	  }
      }
    closedir (A4_TOMI);
    opendir (A4_PARTI, "tmp_parti");
    while ($file = readdir (A4_PARTI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a4-to-a5-2-a4-1h-1 tmp_parti/$file");
	    system ("mv tmp_parti/*.a5-2-a4-1h-1.ps $version/PS/parti/a5-2-a4-1h-1");
	    system ("cd $version/PS/parti/a5-2-a4-1h-1 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_PARTI);
    # a5-2-a4-1h-10
    mkdir ("$version/PS/tomi/a5-2-a4-1h-10", 0755);
    mkdir ("$version/PS/parti/a5-2-a4-1h-10", 0755);
    opendir (A4_TOMI, "tmp_tomi");
    while ($file = readdir (A4_TOMI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a4-to-a5-2-a4-1h-10 tmp_tomi/$file");
	    system ("mv tmp_tomi/*.a5-2-a4-1h-10.ps $version/PS/tomi/a5-2-a4-1h-10");
	    system ("cd $version/PS/tomi/a5-2-a4-1h-10 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_TOMI);
    opendir (A4_PARTI, "tmp_parti");
    while ($file = readdir (A4_PARTI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a4-to-a5-2-a4-1h-10 tmp_parti/$file");
	    system ("mv tmp_parti/*.a5-2-a4-1h-10.ps $version/PS/parti/a5-2-a4-1h-10");
	    system ("cd $version/PS/parti/a5-2-a4-1h-10 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_PARTI);
    # a6-4-a4-2h-8
    mkdir ("$version/PS/tomi/a6-4-a4-2h-8", 0755);
    mkdir ("$version/PS/parti/a6-4-a4-2h-8", 0755);
    opendir (A4_TOMI, "tmp_tomi");
    while ($file = readdir (A4_TOMI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a4-to-a6-4-a4-2h-8 tmp_tomi/$file");
	    system ("mv tmp_tomi/*.a6-4-a4-2h-8.ps $version/PS/tomi/a6-4-a4-2h-8");
	    system ("cd $version/PS/tomi/a6-4-a4-2h-8 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_TOMI);
    opendir (A4_PARTI, "tmp_parti");
    while ($file = readdir (A4_PARTI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a4-to-a6-4-a4-2h-8 tmp_parti/$file");
	    system ("mv tmp_parti/*.a6-4-a4-2h-8.ps $version/PS/parti/a6-4-a4-2h-8");
	    system ("cd $version/PS/parti/a6-4-a4-2h-8 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_PARTI);
  }
elsif ($action eq "pkg-ps-a7x4-small")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    local ($file) = "";

    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    # A7x4
    mkdir ("$version/PS", 0755);
    system ("cp a2-$version.a7x4.ps $version/PS");
    system ("cd $version/PS/ ; gzip -f -9 *.ps");
    # A7x4-2-a4
    system ("alml-extra --a7x4-to-a7x4-2-a4 a2-$version.a7x4.ps");
    system ("mv a2-$version.a7x4-2-a4.ps $version/PS");
    system ("cd $version/PS/ ; gzip -f -9 *.ps");
    # suddivisioni
    mkdir ("$version/PS/tomi", 0755);
    mkdir ("$version/PS/parti", 0755);
    # a7x4-2-a4
    mkdir ("$version/PS/tomi/a7x4-2-a4", 0755);
    mkdir ("$version/PS/parti/a7x4-2-a4", 0755);
    opendir (A4_TOMI, "tmp_tomi");
    while ($file = readdir (A4_TOMI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a7x4-to-a7x4-2-a4 tmp_tomi/$file");
	    system ("mv tmp_tomi/*.a7x4-2-a4.ps $version/PS/tomi/a7x4-2-a4");
	    system ("cd $version/PS/tomi/a7x4-2-a4 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_TOMI);
    opendir (A4_PARTI, "tmp_parti");
    while ($file = readdir (A4_PARTI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a7x4-to-a7x4-2-a4 tmp_parti/$file");
	    system ("mv tmp_parti/*.a7x4-2-a4.ps $version/PS/parti/a7x4-2-a4");
	    system ("cd $version/PS/parti/a7x4-2-a4 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_PARTI);
  }
elsif ($action eq "pkg-ps-a7x4")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    local ($file) = "";

    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    #
    mkdir ("$version/PS", 0755);
    system ("cp a2-$version.a7x4.ps $version/PS");
    system ("cd $version/PS/ ; gzip -f -9 *.ps");
    # suddivisioni
    mkdir ("$version/PS/tomi", 0755);
    mkdir ("$version/PS/parti", 0755);
    # a4
    mkdir ("$version/PS/tomi/a7x4", 0755);
    mkdir ("$version/PS/parti/a7x4", 0755);
    opendir (A4_TOMI, "tmp_tomi");
    while ($file = readdir (A4_TOMI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("cp tmp_tomi/$file $version/PS/tomi/a7x4/"
		    . &root_name ($file, ".ps")
		    . ".a7x4.ps");
	    system ("cd $version/PS/tomi/a7x4 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_TOMI);
    opendir (A4_PARTI, "tmp_parti");
    while ($file = readdir (A4_PARTI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("cp tmp_parti/$file $version/PS/parti/a7x4/"
		    . &root_name ($file, ".ps")
		    . ".a7x4.ps");
	    system ("cd $version/PS/parti/a7x4 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_PARTI);
    # a7x4-2-a4-1v-1
    mkdir ("$version/PS/tomi/a7x4-2-a4-1v-1", 0755);
    mkdir ("$version/PS/parti/a7x4-2-a4-1v-1", 0755);
    opendir (A4_TOMI, "tmp_tomi");
    while ($file = readdir (A4_TOMI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a7x4-to-a7x4-2-a4-1v-1 tmp_tomi/$file");
	    system ("mv tmp_tomi/*.a7x4-2-a4-1v-1.ps $version/PS/tomi/a7x4-2-a4-1v-1");
	    system ("cd $version/PS/tomi/a7x4-2-a4-1v-1 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_TOMI);
    opendir (A4_PARTI, "tmp_tomi");
    while ($file = readdir (A4_PARTI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a7x4-to-a7x4-2-a4-1v-1 tmp_parti/$file");
	    system ("mv tmp_parti/*.a7x4-2-a4-1v-1.ps $version/PS/parti/a7x4-2-a4-1v-1");
	    system ("cd $version/PS/parti/a7x4-2-a4-1v-1 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_PARTI);
    # a7x4-2-a4-1v-10
    mkdir ("$version/PS/tomi/a7x4-2-a4-1v-10", 0755);
    mkdir ("$version/PS/parti/a7x4-2-a4-1v-10", 0755);
    opendir (A4_TOMI, "tmp_tomi");
    while ($file = readdir (A4_TOMI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a7x4-to-a7x4-2-a4-1v-10 tmp_tomi/$file");
	    system ("mv tmp_tomi/*.a7x4-2-a4-1v-10.ps $version/PS/tomi/a7x4-2-a4-1v-10");
	    system ("cd $version/PS/tomi/a7x4-2-a4-1v-10 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_TOMI);
    opendir (A4_PARTI, "tmp_tomi");
    while ($file = readdir (A4_PARTI))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a7x4-to-a7x4-2-a4-1v-10 tmp_parti/$file");
	    system ("mv tmp_parti/*.a7x4-2-a4-1v-10.ps $version/PS/parti/a7x4-2-a4-1v-10");
	    system ("cd $version/PS/parti/a7x4-2-a4-1v-10 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (A4_PARTI);

  }
elsif ($action eq "pkg-ps-raccolte-a4")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    local ($file) = "";

    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    system ("rm -fr tmp_raccolte");
    system ("mkdir tmp_raccolte");
    system ("cp a2-$version.a4.ps tmp_raccolte/a2-$version.ps");
    # suddivisioni
    &raccolte ("a2.pageloc", "tmp_raccolte/a2-$version.ps");
    system ("rm -f tmp_raccolte/a2-$version.ps");
    # directory di destinazione
    mkdir ("$version/PS", 0755);
    mkdir ("$version/PS/raccolte", 0755);
    # a4
    mkdir ("$version/PS/raccolte/a4", 0755);
    opendir (RACCOLTE, "tmp_raccolte");
    while ($file = readdir (RACCOLTE))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("cp tmp_raccolte/$file $version/PS/raccolte/a4/"
		    . &root_name ($file, ".ps")
		    . ".a4.ps");
	    system ("cd $version/PS/raccolte/a4 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (RACCOLTE);
    # a5-2-a4-1h-1
    mkdir ("$version/PS/raccolte/a5-2-a4-1h-1", 0755);
    opendir (RACCOLTE, "tmp_raccolte");
    while ($file = readdir (RACCOLTE))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a4-to-a5-2-a4-1h-1 tmp_raccolte/$file");
	    system ("mv tmp_raccolte/*.a5-2-a4-1h-1.ps $version/PS/raccolte/a5-2-a4-1h-1");
	    system ("cd $version/PS/raccolte/a5-2-a4-1h-1 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (RACCOLTE);
    # a5-2-a4-1h-10
    mkdir ("$version/PS/raccolte/a5-2-a4-1h-10", 0755);
    opendir (RACCOLTE, "tmp_raccolte");
    while ($file = readdir (RACCOLTE))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a4-to-a5-2-a4-1h-10 tmp_raccolte/$file");
	    system ("mv tmp_raccolte/*.a5-2-a4-1h-10.ps $version/PS/raccolte/a5-2-a4-1h-10");
	    system ("cd $version/PS/raccolte/a5-2-a4-1h-10 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (RACCOLTE);
    # a6-4-a4-2h-8
    mkdir ("$version/PS/raccolte/a6-4-a4-2h-8", 0755);
    opendir (RACCOLTE, "tmp_raccolte");
    while ($file = readdir (RACCOLTE))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a4-to-a6-4-a4-2h-8 tmp_raccolte/$file");
	    system ("mv tmp_raccolte/*.a6-4-a4-2h-8.ps $version/PS/raccolte/a6-4-a4-2h-8");
	    system ("cd $version/PS/raccolte/a6-4-a4-2h-8 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (RACCOLTE);
  }
elsif ($action eq "pkg-dvi-raccolte-a4")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    local ($file) = "";

    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    system ("rm -fr tmp_raccolte");
    system ("mkdir tmp_raccolte");
    system ("cp a2-$version.a4.dvi tmp_raccolte/a2-$version.dvi");
    #
    mkdir ("$version/DVI.tmp", 0755);
    system ("cp [0-9].ps $version/DVI.tmp/");
    system ("cp [0-9][0-9].ps $version/DVI.tmp/");
    system ("cp [0-9][0-9][0-9].ps $version/DVI.tmp/");
    system ("cp [0-9][0-9][0-9][0-9].ps $version/DVI.tmp/");
    # suddivisioni
    &raccolte_dvi ("a2.pageloc", "tmp_raccolte/a2-$version.dvi");
    system ("rm -f tmp_raccolte/a2-$version.dvi");
    # directory di destinazione
    mkdir ("$version/DVI", 0755);
    mkdir ("$version/DVI/raccolte", 0755);
    # a4
    mkdir ("$version/DVI/raccolte/a4", 0755);
    opendir (RACCOLTE, "tmp_raccolte");
    while ($file = readdir (RACCOLTE))
      {
	if ($file =~ m/\.dvi$/)
	  {
	    system ("cp tmp_raccolte/$file $version/DVI.tmp/"
		    . &root_name ($file, ".dvi")
		    . ".a4.dvi");
	    system ("cd $version/DVI.tmp ; tar czvf ../DVI/raccolte/a4/"
	    	    . &root_name ($file, ".dvi")
		    . ".a4.dvi.tar.gz"
		    . " . ; cd ../..");
	    system ("rm -f $version/DVI.tmp/*.dvi");
	  }
      }    
    closedir (RACCOLTE);
  }
elsif ($action eq "pkg-pdf-raccolte-a4")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    local ($file) = "";

    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    system ("rm -fr tmp_raccolte");
    system ("mkdir tmp_raccolte");
    system ("cp a2-$version.a4.dvi tmp_raccolte/a2-$version.dvi");
    # suddivisioni
    &raccolte_pdf ("a2.pageloc", "tmp_raccolte/a2-$version.dvi");
    system ("rm -f tmp_raccolte/a2-$version.dvi");
    # directory di destinazione
    mkdir ("$version/PDF", 0755);
    mkdir ("$version/PDF/raccolte", 0755);
    # a4
    mkdir ("$version/PDF/raccolte/a4", 0755);
    opendir (RACCOLTE, "tmp_raccolte");
    while ($file = readdir (RACCOLTE))
      {
	if ($file =~ m/\.pdf$/)
	  {
	    system ("cp tmp_raccolte/$file $version/PDF/raccolte/a4/"
		    . &root_name ($file, ".pdf")
		    . ".a4.pdf");
	  }
      }    
    closedir (RACCOLTE);
  }
elsif ($action eq "pkg-ps-raccolte-a7x4")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    local ($file) = "";

    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    system ("rm -fr tmp_raccolte");
    system ("mkdir tmp_raccolte");
    system ("cp a2-$version.a7x4.ps tmp_raccolte/a2-$version.ps");
    # suddivisioni
    &raccolte ("a2.pageloc", "tmp_raccolte/a2-$version.ps");
    system ("rm -f tmp_raccolte/a2-$version.ps");
    # directory di destinazione
    mkdir ("$version/PS", 0755);
    mkdir ("$version/PS/raccolte", 0755);
    # a7x4
    mkdir ("$version/PS/raccolte/a7x4", 0755);
    opendir (RACCOLTE, "tmp_raccolte");
    while ($file = readdir (RACCOLTE))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("cp tmp_raccolte/$file $version/PS/raccolte/a7x4/"
		    . &root_name ($file, ".ps")
		    . ".a7x4.ps");
	    system ("cd $version/PS/raccolte/a7x4 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (RACCOLTE);
    # a7x4-2-a4-1v-1
    mkdir ("$version/PS/raccolte/a7x4-2-a4-1v-1", 0755);
    opendir (RACCOLTE, "tmp_raccolte");
    while ($file = readdir (RACCOLTE))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a7x4-to-a7x4-2-a4-1v-1 tmp_raccolte/$file");
	    system ("mv tmp_raccolte/*.a7x4-2-a4-1v-1.ps $version/PS/raccolte/a7x4-2-a4-1v-1");
	    system ("cd $version/PS/raccolte/a7x4-2-a4-1v-1 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (RACCOLTE);
    # a7x4-2-a4-1v-10
    mkdir ("$version/PS/raccolte/a7x4-2-a4-1v-10", 0755);
    opendir (RACCOLTE, "tmp_raccolte");
    while ($file = readdir (RACCOLTE))
      {
	if ($file =~ m/\.ps$/)
	  {
	    system ("alml-extra --a7x4-to-a7x4-2-a4-1v-10 tmp_raccolte/$file");
	    system ("mv tmp_raccolte/*.a7x4-2-a4-1v-10.ps $version/PS/raccolte/a7x4-2-a4-1v-10");
	    system ("cd $version/PS/raccolte/a7x4-2-a4-1v-10 ; gzip -f -9 *.ps");
	  }
      }    
    closedir (RACCOLTE);
  }
elsif ($action eq "pkg-esempi")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    system ("tar czvf $version/$version/a2-$version.esempi.tar.gz esempi");
  }
elsif ($action eq "pkg-alml")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    system ("cp -f EDIZIONE Alml/VERSION");
    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/$version", 0755);
    system ("cd $version ; rm corrente ; ln -s $version corrente ; cd ..");
    system ("cp COPYING $version/$version");
    system ("rm -rf $version/alml-$version");
    system ("cp -dpR Alml $version/alml-$version");
    system ("cd $version/alml-$version ; make Almlclean ; cd ..");
    system ("cd $version ; tar czvf $version/alml-$version.tar.gz alml-$version");
  }
elsif ($action eq "pkg-alml-deb")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    system ("$0 --pkg-alml");
    system ("cp -dpRv $version/alml-$version $version/00-alml-$version");
    system ("cd $version/00-alml-$version ; chmod a+x debian/rules ; cd ..");
    system ("cd $version/00-alml-$version ; su -c \"debian/rules binary ; cd .. ; rm -rf 00-alml-$version ; chown a2. alml_*.deb \" ; cd ..");
  }
elsif ($action eq "pkg-alml-deb-inst")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    system ("$0 --pkg-alml");
    system ("cp -dpRv $version/alml-$version $version/00-alml-$version");
    system ("cd $version/00-alml-$version ; chmod a+x debian/rules ; cd ..");
    system ("cd $version/00-alml-$version ; su -c \"debian/rules binary ; cd .. ; rm -rf 00-alml-$version ; chown a2. alml_*.deb ; dpkg -i alml_*.deb\" ; cd ..");
  }
elsif ($action eq "pkg-sgmltexi")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    system ("cp -f EDIZIONE Sgmltexi/EDITION");
    system ("cp -f EDIZIONE Sgmltexi/doc/EDITION");
    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/software", 0755);
    system ("rm -rf $version/sgmltexi-$version");
    system ("cp -dpR Sgmltexi $version/sgmltexi-$version");
    system ("cd $version/sgmltexi-$version ; make Sgmltexiclean ; cd ..");
    system ("cd $version ; tar czvf software/sgmltexi-$version.tar.gz sgmltexi-$version");
  }
elsif ($action eq "pkg-textchk")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    system ("cp -f EDIZIONE Textchk/EDITION");
    system ("cp -f EDIZIONE Textchk/doc/EDITION");
    mkdir ("$version", 0755);
    system ("chmod ug-s $version");
    mkdir ("$version/software", 0755);
    system ("rm -rf $version/textchk-$version");
    system ("cp -dpR Textchk $version/textchk-$version");
    system ("cd $version/textchk-$version ; make Textchkclean ; cd ..");
    system ("cd $version ; tar czvf software/textchk-$version.tar.gz textchk-$version");
  }
elsif ($action eq "sgml-extract"
	&& $argument ne "")
  {
    local ($line) = "";
    local ($include) = 0;

    system ("rm -f $file_to_be_extracted");
    open (NEW_SGML, "> $file_to_be_extracted");
    open (ORIG_SGML, "< $argument");

    # Scan and subst.
    while ($line = <ORIG_SGML>)
      {
        if ($line =~ m/<!--\s+COPY\s+TO\s+"([^"]+)"\s+START\s+-->/i
	    && $1 eq $file_to_be_extracted)
          {
            # The following lines must be included.
            $include = 1;
          }
        elsif ($line =~ m/<!--\s+COPY\s+TO\s+"([^"]+)"\s+STOP\s+-->/i
	    && $1 eq $file_to_be_extracted)
          {
            # The following lines must not be included.
            $include = 0;
          }
        else
          {
            # It is a normal line. We have to decide what to do.
            if ($include)
              {
		print NEW_SGML ($line);
              }
            else
              {
		# Nothing to do.
		;
              }
          }
      }
    close (NEW_SGML);
    close (ORIG_SGML);
  }
elsif ($action eq "pkg-readme-small")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    mkdir ("$version", 0755);
    mkdir ("$version/$version", 0755);
    mkdir ("$version/PS", 0755);
    mkdir ("$version/PDF", 0755);
    open (README, "> $version/README");
    print README ("\
$version/	source and other files for current edition\
HTML/		HTML for on line reading\
PDF/		PDF typesetting\
PS/		PostScript typesetting\
corrente/	same as $version/\
");
    close (README);
    open (README, "> $version/$version/README");
    print README ("\
COPYING                        GNU General Public License version 2\
a2-$version.a4.dvi.tar.gz    DVI typesetting\
a2-$version.sgml.tar.gz      source files\
a2-$version.txt.gz           simple txt typesetting\
a2-$version.html.tar.gz      HTML typesetting\
a2-$version.esempi.tar.gz    programming examples\
alml-$version.tar.gz         Alml typesetting system\
");
    close (README);
    open (README, "> $version/PDF/README");
    print README ("\
a2-$version.a4.pdf		complete PDF file\
parti/				parts sectioning\
tomi/				tomes sectioning\
");
    close (README);
    open (README, "> $version/PS/README");
    print README ("\
a2-$version.a4.ps.gz         complete PostScript file A4\
a2-$version.a7x4-2-a4.ps.gz  complete PostScript file A7x4, 2 times on a single A4\
a2-$version.a7x4.ps.gz       complete PostScript file A7x4 (1 time on a single A4)\
parti/				parts sectioning\
tomi/				tomes sectioning\
");
    close (README);
    system ("cd $version ; alml-extra --html-index-basic=\".\" > index.html");
    chdir ("$version");
    &index_html_recursive ("PS");
    &index_html_recursive ("PDF");
    &index_html_recursive ("$version");
    chdir ("..");
  }
elsif ($action eq "pkg-readme")
  {
    local ($version) = `cat EDIZIONE`;
    chomp ($version);
    mkdir ("$version", 0755);
    mkdir ("$version/$version", 0755);
    mkdir ("$version/PS", 0755);
    mkdir ("$version/DVI", 0755);
    mkdir ("$version/PDF", 0755);
    open (README, "> $version/README");
    print README ("\
$version/	source and other files for current edition\n\
HTML/		HTML for on line reading\n\
DVI/		DVI typesetting\n\
PDF/		PDF typesetting\n\
PS/		PostScript typesetting\n\
corrente/	same as $version/\n\
");
    close (README);
    open (README, "> $version/$version/README");
    print README ("\
a2-$version.sgml.tar.gz	source files\n\
a2-$version.txt.gz		simple txt typesetting\n\
a2-$version.html.tar.gz	html typesetting\n\
a2-$version.esempi.tar.gz	programming examples\n\
alml-$version.tar.gz		Alml typesetting system\n\
");
    close (README);
    open (README, "> $version/DVI/README");
    print README ("\
a2-$version.a4.dvi.tar.gz	complete DVI file, with pictures enclosed\n\
parti/				parts sectioning\n\
tomi/				tomes sectioning\n\
raccolte/			some bigger sectioning\n\
");
    close (README);
    open (README, "> $version/PDF/README");
    print README ("\
a2-$version.a4.pdf		complete PDF file\n\
a2-$version-plain.a4.pdf	complete PDF file with plain page numbering\n\
parti/				parts sectioning\n\
tomi/				tomes sectioning\n\
raccolte/			some bigger sectioning\n\
");
    close (README);
    open (README, "> $version/PS/README");
    print README ("\
a2-$version.a4.ps.gz		complete PostScript file A4\n\
a2-$version.a7x3-3-a4.ps.gz	complete PostScript file A7x3, 3 times on a single A4\n\
a2-$version.a7x4-2-a4.ps.gz	complete PostScript file A7x4, 2 times on a single A4\n\
a2-$version.a7x4.ps.gz	complete PostScript file A7x4 (1 time on a single A4)\n\
a2-$version.a8x4-4-a4.ps.gz	complete PostScript file A8x4, 4 times on a single A4\n\
a2-$version.a8x6-3-a4.ps.gz	complete PostScript file A8x6, 3 times on a single A4\n\
parti/				parts sectioning\n\
tomi/				tomes sectioning\n\
raccolte/			some bigger sectioning\n\
");
    close (README);
    system ("cd $version ; alml-extra --html-index-basic=\".\" > index.html");
    chdir ("$version");
    &index_html_recursive ("PS");
    &index_html_recursive ("PDF");
    &index_html_recursive ("DVI");
    &index_html_recursive ("$version");
    chdir ("..");
  }


