# $Id: devnagri.perl,v 1.5 2001/06/11 00:59:03 RRM Exp $
# DEVNAGRI.PERL by Ross Moore 10-1-98
# Mathematics Department, Macquarie University, Sydney, Australia.
#
# Style for LaTeX2HTML v2K.1 to construct images of Devanagari script
# using:
#
# `devnag' pre-processor and dvng fonts
# by Frans J. Velthuis'
#
# and the dev.sty LaTeX-2e interface
# by Dominik Wujastyk
#
# retaining support for the old dev2e.sty LaTeX-2e interface
# by Dominik Wujastyk
#
# Furthermore it can be used with the transcription scheme
# devised by Jeroen Hellingman, for his `patc' preprocessor
# requiring macro files: dnmacs.tex and dntrmacs.tex
#
#
# These resources are *not* included with this package.
# Obtain them from CTAN: http//ctan.tug.org/ctan
#
# ===================================================================
# This package requires the corresponding LaTeX package: devnagri.sty .
#
# With LaTeX2HTML the options on the \usepackage line specify which
# preprocessor and transcription mode to use.
#
# Usage:
#
# \usepackage[devnag]{devnagri} %| Velthuis' pre-processor only
# \usepackage[hindi]{devnagri} %|
# \usepackage[marathi]{devnagri} %|
# \usepackage[nepali]{devnagri} %|
# \usepackage[sanskrit]{devnagri} %|
#
# \usepackage{devnagri} %| source already pre-processed
# \usepackage[preprocess]{devnagri} %| same as \usepackage[patc]{devnagri}
#
# \usepackage[dev209]{devnagri} %| old LaTeX-209 version
# \usepackage[olddevnag]{devnagri} %| old LaTeX-209 version
# \usepackage[old,...]{devnagri} %| uses LaTeX-209 version with others
#
# \usepackage[patc]{devnagri} %| also uses Jeroen Hellingman's
# \usepackage[patc,hindi]{devnagri} %| patc -p
to split paragraphs
# \newline causes assuming that an outer environment supplies
# the correct paragraph-level tagging.
# -- environments {verse}, {quote}, and {center} are recognised as being
# at paragraph-level. Currently no special HTML tags are used for these.
# That should be addressed with further development.
#
# Revision 1.4 2001/05/22 13:31:32 RRM
# -- leave $DN2 undefined by default. It's only needed for german
# extensions by Klaus-J. Wolf
#
# Revision 1.3 2001/05/21 10:23:53 RRM
# -- update to support the version 2.0 revision of devnag and dn2
#
# Revision 1.2 1998/02/03 05:35:03 RRM
# -- dev2e.sty was written by Wujastyk, not Fairbairns
#
#
package devnagri;
# Put devnagri equivalents here for headings/dates/ etc when
# latex2html starts supporting them ...
sub main'devnagri_translation {
@_[0];
}
package main;
### configuration variables ###
# these may be set in .latex2html-init files
# command-name for the devnag and dn2 pre-processors
$DEVNAG = 'devnag' unless ($DEVNAG);
#$DN2 = 'dn2' unless ($DN2); # uncomment this for the dn2 german extension
# command-name for the patc pre-processor
$PATC = 'patc' unless ($PATC);
#### IMPORTANT: move/rename system command
#### (un-)comment the following lines to get this right:
$RENAME = 'mv'; # Unix
#$RENAME = 'rename'; # DOS
#### IMPORTANT: this variable *must* be set correctly ####
# directory for the .pat filter tables
$PRE_FILTERS = '.' unless ($PRE_FILTERS);
# max characters in an inline string
# patc:
$dn_inline = 150 unless ($dn_inline);
# devnag:
$devnag_inline = 150 unless ($devnag_inline);
# pre-processor: devnag
sub do_devnagri_devnag { &pre_process_devnag('') }
sub do_devnagri_old { $DVNG_OLD=1; }
sub do_devnagri_dev209 { &do_devnagri_old; &pre_process_devnag('') }
sub do_devnagri_olddevnag { &do_devnagri_209(); }
# preprocessor: patc
sub do_devnagri_preprocess { &pre_process_devnagri('') }
sub do_devnagri_patc { &pre_process_devnagri('') }
sub do_devnagri_hindi { &pre_process_devnagri('hindi') }
sub do_devnagri_marathi { &pre_process_devnagri('marathi') }
sub do_devnagri_nepali { &pre_process_devnagri('nepali') }
sub do_devnagri_sanskrit { &pre_process_devnagri('sanskrit') }
# pre-processor directives: pass these to images.pre
#
%other_environments = ( %other_environments
, '@hindi:', 'nowrap'
, '@sanskrit:', 'nowrap'
, '@dollars:', 'nowrap'
, '@nodollars:', 'nowrap'
, '@dolmode0:', 'nowrap'
, '@dolmode1:', 'nowrap'
, '@dolmode2:', 'nowrap'
, '@dolmode3:', 'nowrap'
, '@hyphen:', 'nowrap'
, '@nohyphen:', 'nowrap'
, '@lig:', 'nowrap'
, '@nolig:', 'nowrap'
, '@tabs:', 'nowrap'
, '@notabs:', 'nowrap'
, '@vconjuncts:', 'nowrap'
);
sub pre_process_devnagri {
local($pattern) = @_; $pattern = 'dng'; # unless ($pattern);
if ($DVNG_OLD) {
$preprocessor_cmds .=
"$PATC -p $PRE_FILTERS$dd$pattern.pat ${PREFIX}images.pre ${PREFIX}images.tex\n";
$preprocessor_cmds .=
"$DEVNAG ${PREFIX}images.pre ${PREFIX}images.tex\n"
unless ($pattern =~ /devnagri/);
} else {
$preprocessor_cmds .=
"$RENAME ${PREFIX}images.pre ${PREFIX}images.dn; ";
if ($DN2) {
$preprocessor_cmds .=
"$DEVNAG ${PREFIX}images.dn ${PREFIX}imagesdn2; "
. "$DN2 ${PREFIX}imagesdn2.tex ${PREFIX}images.tex\n";
} else {
$preprocessor_cmds .=
"$DEVNAG ${PREFIX}images.dn ${PREFIX}images.tex\n";
}
}
%other_environments = ( %other_environments
, "\$\$:\$\$", 'tr_devnagri'
, "\$:\$", 'devnagri'
) if ($prelatex =~ /^\@dollars/m );
# ) unless ($prelatex =~ /\@dollar/ );
%other_environments = ( %other_environments
, ':', 'devnagri'
, ':', 'devnagri'
, ':', 'devnagri'
, ':', 'devnagri'
, ':', 'tr_devnagri'
, ':', 'tr_devnagri'
, ':', 'tr_devnagri'
, ':', 'tr_devnagri'
);
$PREPROCESS_IMAGES = 1;
}
sub pre_process_devnag {
$PREPROCESS_IMAGES = 1;
if ($DVNG_OLD) {
$preprocessor_cmds .=
"$DEVNAG ${PREFIX}images.pre ${PREFIX}images.tex\n"
unless ($preprocessor_cmds =~ /devnag/);
} elsif(!($preprocessor_cmds =~ /devnag/)) {
$preprocessor_cmds .=
"$RENAME ${PREFIX}images.pre ${PREFIX}images.dn; ";
if ($DN2) {
$preprocessor_cmds .=
"$DEVNAG ${PREFIX}images.dn ${PREFIX}imagesdn2; "
. "$DN2 ${PREFIX}imagesdn2.tex ${PREFIX}images.tex\n";
} else {
$preprocessor_cmds .=
"$DEVNAG ${PREFIX}images.dn ${PREFIX}images.tex\n";
}
}
%other_environments = ( %other_environments
, "\$\$:\$\$", 'tr_devnag'
, "\$:\$", 'devnag'
) if ($prelatex =~ /\@dollar/ );
}
$verse_rx = "\\\\(?:begin|end)\\s*\\{\\s*(?:verse|quote|center)\\s*\\}\\s*";
sub do_env_pre_devnagri {
local($_) = @_;
$_ = &revert_to_raw_tex($_);
#if (/\\par\b/m) {
if ($devn =~ /\\par\b|$verse_rx/s) {
local(@paragraphs, @dn_processed, $this_par);
local($par_start, $par_end) = ('