diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/lug |
Initial commit
Diffstat (limited to 'support/lug')
57 files changed, 2510 insertions, 0 deletions
diff --git a/support/lug/README b/support/lug/README new file mode 100644 index 0000000000..704454f5a6 --- /dev/null +++ b/support/lug/README @@ -0,0 +1,12 @@ + script: lug - create and edit TeX Local User Group web pages + type: bash + author: Wybo Dekker + email: wybo@dekkerdocumenten.nl +version: 2.02 +license: Released under the GNU General Public License +-------------------------------------------------------------------------------- +lug can be used to to (re-)create the web pages of the LUG database. +This script must be executed in its own directory. After the script has +been executed, this directory will contain the web site for the Electronic +LUG Database, currently: U{www.ntg.nl/lug}{www.ntg.nl/lug}. + diff --git a/support/lug/images/bg.png b/support/lug/images/bg.png Binary files differnew file mode 100644 index 0000000000..2cf4b55118 --- /dev/null +++ b/support/lug/images/bg.png diff --git a/support/lug/images/br.png b/support/lug/images/br.png Binary files differnew file mode 100644 index 0000000000..d6b9d62dd2 --- /dev/null +++ b/support/lug/images/br.png diff --git a/support/lug/images/cn.png b/support/lug/images/cn.png Binary files differnew file mode 100644 index 0000000000..c47a2dc100 --- /dev/null +++ b/support/lug/images/cn.png diff --git a/support/lug/images/cz.png b/support/lug/images/cz.png Binary files differnew file mode 100644 index 0000000000..0b9083da67 --- /dev/null +++ b/support/lug/images/cz.png diff --git a/support/lug/images/de.png b/support/lug/images/de.png Binary files differnew file mode 100644 index 0000000000..8671ca659f --- /dev/null +++ b/support/lug/images/de.png diff --git a/support/lug/images/dk.png b/support/lug/images/dk.png Binary files differnew file mode 100644 index 0000000000..8a4e1295e7 --- /dev/null +++ b/support/lug/images/dk.png diff --git a/support/lug/images/ee.png b/support/lug/images/ee.png Binary files differnew file mode 100644 index 0000000000..e566845f54 --- /dev/null +++ b/support/lug/images/ee.png diff --git a/support/lug/images/es.png b/support/lug/images/es.png Binary files differnew file mode 100644 index 0000000000..7301563cd9 --- /dev/null +++ b/support/lug/images/es.png diff --git a/support/lug/images/esc.png b/support/lug/images/esc.png Binary files differnew file mode 100644 index 0000000000..ad9639a19c --- /dev/null +++ b/support/lug/images/esc.png diff --git a/support/lug/images/fr.png b/support/lug/images/fr.png Binary files differnew file mode 100644 index 0000000000..cb7597c9e9 --- /dev/null +++ b/support/lug/images/fr.png diff --git a/support/lug/images/gb.png b/support/lug/images/gb.png Binary files differnew file mode 100644 index 0000000000..7e6569780d --- /dev/null +++ b/support/lug/images/gb.png diff --git a/support/lug/images/hu.png b/support/lug/images/hu.png Binary files differnew file mode 100644 index 0000000000..29ff7f06f8 --- /dev/null +++ b/support/lug/images/hu.png diff --git a/support/lug/images/ie.png b/support/lug/images/ie.png Binary files differnew file mode 100644 index 0000000000..66fcecc2e5 --- /dev/null +++ b/support/lug/images/ie.png diff --git a/support/lug/images/in.png b/support/lug/images/in.png Binary files differnew file mode 100644 index 0000000000..f1b1dffffb --- /dev/null +++ b/support/lug/images/in.png diff --git a/support/lug/images/is.png b/support/lug/images/is.png Binary files differnew file mode 100644 index 0000000000..624c4363bb --- /dev/null +++ b/support/lug/images/is.png diff --git a/support/lug/images/it.png b/support/lug/images/it.png Binary files differnew file mode 100644 index 0000000000..f1d46d2ffb --- /dev/null +++ b/support/lug/images/it.png diff --git a/support/lug/images/kr.png b/support/lug/images/kr.png Binary files differnew file mode 100644 index 0000000000..398dcfd7b8 --- /dev/null +++ b/support/lug/images/kr.png diff --git a/support/lug/images/lt.png b/support/lug/images/lt.png Binary files differnew file mode 100644 index 0000000000..7cd1c3074c --- /dev/null +++ b/support/lug/images/lt.png diff --git a/support/lug/images/mx.png b/support/lug/images/mx.png Binary files differnew file mode 100644 index 0000000000..2dda6bd6a8 --- /dev/null +++ b/support/lug/images/mx.png diff --git a/support/lug/images/nl.png b/support/lug/images/nl.png Binary files differnew file mode 100644 index 0000000000..859d07fc6d --- /dev/null +++ b/support/lug/images/nl.png diff --git a/support/lug/images/no.png b/support/lug/images/no.png Binary files differnew file mode 100644 index 0000000000..4b2b9b5cd3 --- /dev/null +++ b/support/lug/images/no.png diff --git a/support/lug/images/pl.png b/support/lug/images/pl.png Binary files differnew file mode 100644 index 0000000000..f041b30050 --- /dev/null +++ b/support/lug/images/pl.png diff --git a/support/lug/images/pt.png b/support/lug/images/pt.png Binary files differnew file mode 100644 index 0000000000..4f9f05036f --- /dev/null +++ b/support/lug/images/pt.png diff --git a/support/lug/images/ru.png b/support/lug/images/ru.png Binary files differnew file mode 100644 index 0000000000..fd85c27c37 --- /dev/null +++ b/support/lug/images/ru.png diff --git a/support/lug/images/si.png b/support/lug/images/si.png Binary files differnew file mode 100644 index 0000000000..2fe404ff41 --- /dev/null +++ b/support/lug/images/si.png diff --git a/support/lug/images/us.png b/support/lug/images/us.png Binary files differnew file mode 100644 index 0000000000..8c5cbe575e --- /dev/null +++ b/support/lug/images/us.png diff --git a/support/lug/images/vn.png b/support/lug/images/vn.png Binary files differnew file mode 100644 index 0000000000..14e4fa054c --- /dev/null +++ b/support/lug/images/vn.png diff --git a/support/lug/images/za.png b/support/lug/images/za.png Binary files differnew file mode 100644 index 0000000000..f314d6088e --- /dev/null +++ b/support/lug/images/za.png diff --git a/support/lug/lug b/support/lug/lug new file mode 100755 index 0000000000..bd1e2c4950 --- /dev/null +++ b/support/lug/lug @@ -0,0 +1,1213 @@ +#!/bin/bash + +version=2.02 +myname=$(basename $0) + +<<'DOC' += lug - create and edit TeX Local User Group web pages + += Synopsis +lug [options] [lug-code] + +lug can be used to maintain the TeX Local User Group web pages, currently +located at www.ntg.nl/lug. +Without options, reads key=value pairs, possibly embedded in the body of a +mail as sent by a web form like U{www.ntg.nl/lug/nl.html}{here}. +You can feed the complete email (after saving it) to lug, or you can paste +its content to standard input. + +For testing, you may want to make a copy and run it from there: + + $ cp -a /var/www/html/lug /var/www/html/lugtest + $ cd /var/www/html/lugtest + $ ./lug --help + $ (more lug calls) + +Finally look at the results in http://www.ntg.nl/lugtest + +Options: +-h,--help Print this help and exit +-H,--Help Print full documentation via less and exit +-V,--version Print version and exit +-f,--full Re-create all files +-e,--extras=STR Re-create STR, where STR can be: + labels.pdf + lugs.pdf + lugs.html + index.html + links.inc +-s,--sync[=STR] Synchronize the lug page at |www.ntg.nl/STR| with the current directory + The default for |STR| is |lug| +-c,--clean Remove all files that can be re-created + += Description +lug can be used to to (re-)create the web pages of the LUG database. +This script must be executed in its own directory. After the script has +been executed, this directory will contain the web site for the Electronic +LUG Database, currently: U{www.ntg.nl/lug}{www.ntg.nl/lug}. + +Before execution, the directory must contain at least" +- the script (as said) +- a subdirectory containing one text file for each LUG +The HTML files depend 4 files in the parent directory: +|ntg.css|, |1blok1e.inc|, |1blok2e.inc|, and |1blok4e.inc|. + +The |lugs.rb| script must be moved to the |cgi-bin| directory. + +When people send new data by using the forms of the site, they do so by +submitting the form, which causes an email with raw data to be sent to +the administrator(s). + +An administrator should verify the password reported in the email and then +cd to this directory, or to a copy of it on his own computer, and he should +then run: + + $ ./lug + +lug waits for data, which it can be given by cut (from the email) and paste +(to standard input). By ending the input with |^D|, lug corrects the data in +the directory `lugs' + +It is of course also possible to save the contents of the email into a file +and then run: + + $ ./lug <file + +The administrator can make small correction to one country by giving the +necessary input on the command line. For example, to change the email address +of the treasurer of The Netherlands he can run: + + $ ./lug + code=nl + femail=wybo@dekkerdocumenten.nl + ^D + +Synchronize the website (|www.ntg.nl/lug|) with the current directory: + + ./lug --sync + +Or, for testing purposes, synchronize |www.ntg.nl/lugtest|: + + ./lug --sync=lugtest + +or, shorter: + + ./lug -slugtest + +Remove everything that can be regenerated: + + lug --clean + +Regenerate everything: + + lug --full + += Author and copyright +Author Wybo Dekker +Email U{wybo@dekkerdocumenten.nl}{wybo@dekkerdocumenten.nl} +License Released under the U{www.gnu.org/copyleft/gpl.html}{GNU General Public License} +DOC + + die() { echo -e "$myname: $Err$@$Nor" 1>&2; exit 1; } + Warn() { echo -e "$myname: $War$@$Nor" 1>&2; } + warn() { $verbose && Warn $@; } + help() { sed -n '/^= Synopsis/,/^= /p' $0|sed '1s/.*/Usage:/;/^= /d'; exit; } +helpall() { sed -n '/^<<.DOC.$/,/^DOC$/p' $0|sed -n '1d;$d;p'|less; exit; } +version() { echo $version; exit; } +install() { which instscript>&/dev/null && instscript -zp $myname + cd .. + zip -Drqq lug/lug-$version.zip lug/{images,lugs,lugs.rb} + exit + } + +Nor='\e[0m' # reset color ] +Err='\e[31;1m' # light red ] +War='\e[35;1m' # light magenta ] + + +<<'DOC' #------ function setkeys ----------------------------------------------- += setkeys +parameters: 1: country code +description: Set the |keys| hash to the values taken from the file |lugs/$1|. +globals set: keys +globals used: - +returns: 0 +DOC +#------------------------------------------------------------------------------- +setkeys() { # code semicolonreplacement ampersandreplacement + local k v + while IFS=$'\t' read -r k v; do + [[ $k = '' || $k =~ ^# ]] && continue + [[ $k =~ addr$ ]] && v=${v//;/$2} + keys["$k"]="${v//&/$3}" + done <lugs/$1 +} + +<<'DOC' #------ function clean ------------------------------------------------- += clean +parameters: - +description: Remove files created but not needed for the web site or for + lug functioning. +globals set: - +globals used: - +returns: 0 +DOC +#------------------------------------------------------------------------------- +clean() { + rm -f utf82html.c Makefile +} + +<<'DOC' #------ function Clean ------------------------------------------------- += Clean +parameters: - +description: Remove all files that can be re-created. +globals set: - +globals used: - +returns: 0 +DOC +#------------------------------------------------------------------------------- +Clean() { + clean + rm -f *.html labels.* lugs.{html,pdf,tex} \ + links.inc utf82html +} + +<<'DOC' #------ function makeMakefile ------------------------------------------ += makeMakefile +parameters: - +description: Create the file |Makefile| +globals set: - +globals used: db +returns: 0 +DOC +#------------------------------------------------------------------------------- +makeMakefile() { + local i + cat<<EOF |sed 's/\t//' > Makefile + BASEFILES = $(for i in ${db[@]}; do echo -n lugs/$i' '; done) + + .SUFFIXES: .tex .pdf + + .tex.pdf: + PDFLATEX='xelatex -recorder -interaction=batchmode' texi2dvi -p -q \$< 2>/tmp/\$\$ || cat /tmp/\$\$ + PDFLATEX='xelatex -interaction=batchmode' texi2dvi -p -q --mostly-clean \$< 2>/tmp/\$\$ || cat /tmp/\$\$ + all: $(echo -n ${db[@]} |sed 's/ /.html /g').html \ + utf82html index.html lugs.html \ + links.inc \ + lugs.pdf labels.pdf + $(for i in ${db[@]}; do echo "$i.html: lugs/$i utf82html; ./lug $i"; done) + labels.pdf: \$(BASEFILES) + ./lug --extras=labels.pdf + + lugs.pdf: \$(BASEFILES) + ./lug --extras=lugs.pdf + + lugs.html: \$(BASEFILES) + ./lug --extras=lugs.html + + index.html: \$(BASEFILES) + ./lug --extras=index.html + + links.inc: \$(BASEFILES) + ./lug --extras=links.inc + + clean: + rm -rf *.html labels.* lugs.* links.inc utf82html Makefile + + utf82html: utf82html.c + cc -o utf82html utf82html.c + +EOF +} + +<<'DOC' #------ function makeutf82html.c -------------------------------------- += makeutf82html.c +parameters: - +description: Create the file |utf82html.c|; + it will be compiled /via/ |Makefile| +globals set: - +globals used: - +returns: 0 +DOC +#------------------------------------------------------------------------------- +makeutf82html.c() { + cat <<-'EOF' >utf82html.c + // utf82html.c: convert UTF-8 byte sequences to numeric html entities + // Written in 2004 by Peter Samuelson <peter@p12n.org> + // Copyright abandoned by the author + + #include <stdio.h> + #include <string.h> + #include <ctype.h> + + void from_utf8 (FILE *in, FILE *out) + { + char buf[4096 + 17]; + size_t len = 0; + + while (!feof(in)) { + size_t usable, i; + + len += fread(buf+len, 1, 4096, in); + buf[len] = 0; + if (feof(in) || len < 16) + usable = len; + else + usable = len - 16; + + for (i=0; i<usable; i++) { + int t; + unsigned ch, len; + + /* properties of UTF-8 chars */ + static struct { unsigned minval; int len; char b0, b0mask; } + uprop[] = { + { 1<<7, 2, 0xc0, 0xe0 }, + { 1<<11, 3, 0xe0, 0xf0 }, + { 1<<16, 4, 0xf0, 0xf8 }, + { 1<<21, 5, 0xf8, 0xfc }, + { 1<<26, 6, 0xfc, 0xfe }, + { 0, } + }; + + if (!(buf[i] & 0x80)) { + putc(buf[i], out); + continue; + } + for (t = 0; uprop[t].minval; t++) + if ((buf[i] & uprop[t].b0mask) == uprop[t].b0) + break; + if (!uprop[t].minval) + goto invalid; + + ch = buf[i] & ~uprop[t].b0mask; + for (len = uprop[t].len - 1; len; len--,i++) { + if ((buf[i+1] & 0xc0) != 0x80) + goto invalid; + + ch = (ch << 6) | (buf[i+1] & 0x3f); + } + if (ch < uprop[t].minval) + goto invalid; + + fprintf(out, (ch > 255) ? "&#x%04x;" : "&#x%02x;", ch); + continue; + + invalid: + fprintf(stderr, "illegal UTF-8 sequence\n"); + fprintf(out, "�"); /* "REPLACEMENT CHARACTER" */ + } + if (i < len) + memcpy(buf, buf+i, len-i); + len -= i; + } + } + + int main (int argc, char *argv[]) + { + if (argc == 1) { + from_utf8(stdin, stdout); + return 0; + } + while (argc > 1) { + FILE *fp = fopen(argv[1], "r"); + if (fp) + from_utf8(fp, stdout); + else + perror("fopen"); + + fclose(fp); + argc--; argv++; + } + return 0; + } + EOF +} + +<<'DOC' #------ function makelinks.inc ----------------------------------------- += makelinks.inc +parameters: - +description: Create the file |links.inc| +globals set: - +globals used: - +returns: 0 +DOC +#------------------------------------------------------------------------------- +makelinks.inc() { + local i + for i in lugs/*; do + i=${i#lugs/} + echo "<a href=\"$i.html\">$i</a>" + done + echo '<a href="index.html">home</a>' +} >links.inc + +<<'DOC' #------ function makexx.html ------------------------------------------- += makexx.html +parameters: 1: country code +description: Create the file |lugs/$1| +globals set: (/via/ setkeys): |keys| +globals used: db keys adminemail +returns: +DOC +#------------------------------------------------------------------------------- +makexx.html() { + [[ -n ${db[$1]} ]] || die "Unknown country code $1" + setkeys $1 "\n" '&' + local www + [[ -n ${keys[www]} ]] && www='<a href="http://'${keys[www]}'">(Here is this lug'"'"'s website)</a>' + cat <<-EOF |./utf82html >$1.html + <!--#include virtual="../1blok1e.inc" --> + <title>${keys[full]}</title> + <!--#include virtual="../1blok2e.inc" --> + <h1>TeX user groups around the world</h1> + <h2>${keys[full]}</h2> + <ul> + <li>Changes won't be instant, but are mailed to the maintainer</li> + <li>Use either TeX notation or accented characters for accents.</li> + <li>Enter phone numbers starting with +, then the country code et cetera,<br> + no whitespace, hyphens or other punctuation.</li> + </ul> + <form id="lugform" name="reaction" method="post" action="/cgi-bin/lugs.rb"> + <input size="23" type="hidden" value="${keys[code]}" name="code"> + Links to other User Group correction forms:<p> + <!--#include virtual="links.inc" --><p> + <table id="luginfo" border="0" cellspacing="3" summary="form"> + <tr class="mainhead"> + <th colspan="4" align="center">${keys[code]} - ${keys[country]} $www</th> + </tr> + <tr> + <td align="right">full name</td> + <td> + <textarea cols="21" rows="2" name="full"> + ${keys[full]} + </textarea></td> + <td align="right">periodical</td> + <td> + <textarea cols="21" rows="2" name="publ"> + ${keys[publ]} + </textarea></td> + </tr> + <tr> + <td align="right">short name</td> + <td><input size="23" value="${keys[short]}" name="short"></td> + <td align="right">editor</td> + <td><input size="23" value="${keys[editor]}" name="editor"></td> + </tr> + <tr> + <td align="right"><a href="http://www.lingoes.net/en/translator/langcode.htm">language(s)</a></td> + <td><input size="23" value="${keys[lang]}" name="lang"></td> + <td align="right">editor email</td> + <td><input size="23" value="${keys[eemail]}" name="eemail"></td> + </tr> + <tr> + <td align="right">members</td> + <td><input size="23" value="${keys[members]}" name="members"></td> + </tr> + <tr> + <td align="right">email</td> + <td><input size="23" value="${keys[email]}" name="email"></td> + <td align="right">bank</td> + <td><input size="23" value="${keys[bank]}" name="bank"></td> + </tr> + <tr> + <td align="right">web site</td> + <td><input size="23" value="${keys[www]}" name="www"></td> + <td align="right">bank account</td> + <td><input size="23" value="${keys[bacc]}" name="bacc"></td> + </tr> + <tr> + <td align="right">mailing list</td> + <td><input size="23" value="${keys[list]}" name="list"></td> + <td align="right">swift code</td> + <td><input size="23" value="${keys[bcode]}" name="bcode"></td> + </tr> + <tr> + <td align="right">subscribe at</td> + <td><input size="23" value="${keys[subscr]}" name="subscr"></td> + <td align="right">routing no/BIC</td> + <td><input size="23" value="${keys[brout]}" name="brout"></td> + </tr> + <tr> + <td align="right">address</td> + <td> + <textarea cols="21" rows="6" name="addr"> + $(echo -e ${keys[addr]}) + </textarea></td> + <td align="right">bank address</td> + <td> + <textarea cols="21" rows="6" name="baddr"> + $(echo -e ${keys[baddr]}) + </textarea></td> + </tr> + <tr class="mainhead"> + <th colspan="4" align="center">contact addresses</th> + </tr> + <tr> + <td> </td> + <th>policy matters</th> + <th>general matters</th> + <th>finance / member admin</th> + </tr> + <tr> + <td align="right">position</td> + <td><input size="23" value="${keys[ppos]}" name="ppos"></td> + <td><input size="23" value="${keys[gpos]}" name="gpos"></td> + <td><input size="23" value="${keys[fpos]}" name="fpos"></td> + </tr> + <tr> + <td align="right">name</td> + <td><input size="23" value="${keys[pname]}" name="pname"></td> + <td><input size="23" value="${keys[gname]}" name="gname"></td> + <td><input size="23" value="${keys[fname]}" name="fname"></td> + </tr> + <tr> + <td align="right">address</td> + <td> + <textarea cols="21" rows="6" name="paddr"> + $(echo -e ${keys[paddr]}) + </textarea></td> + <td> + <textarea cols="21" rows="6" name="gaddr"> + $(echo -e ${keys[gaddr]}) + </textarea></td> + <td> + <textarea cols="21" rows="6" name="faddr"> + $(echo -e ${keys[faddr]}) + </textarea></td> + </tr> + <tr> + <td align="right">email</td> + <td><input size="23" value="${keys[pemail]}" name="pemail"></td> + <td><input size="23" value="${keys[gemail]}" name="gemail"></td> + <td><input size="23" value="${keys[femail]}" name="femail"></td> + </tr> + <tr> + <td align="right">phone</td> + <td><input size="23" value="${keys[pphone]}" name="pphone"></td> + <td><input size="23" value="${keys[gphone]}" name="gphone"></td> + <td><input size="23" value="${keys[fphone]}" name="fphone"></td> + </tr> + <tr> + <td align="right">fax</td> + <td><input size="23" value="${keys[pfax]}" name="pfax"></td> + <td><input size="23" value="${keys[gfax]}" name="gfax"></td> + <td><input size="23" value="${keys[ffax]}" name="ffax"></td> + </tr> + <tr> + <td></td> + <th align="left"><a href="lugs/${keys[code]}">download data</a></th> + </tr> + <tr class="mainhead"> + <th colspan="4" align="center">submission of corrected data; enter your email address and password first!</th> + </tr> + <!-- + <tr><td></td><td align="center" colspan="2" ><font color="red"><b>Currently no changes can be submitted</font></b></td><td></td></tr> + <tr><td></td><td align="center" colspan="2" ><font color="red"><b>due to technical problems</font></b></td><td></td></tr> + <tr><td></td><td align="center" colspan="2" ><font color="red"><b>Please try again later.</font></b></td><td></td></tr> + --> + <tr> + <td></td> + <td align="right">password</td> + <td><input size="23" name="password"></td> + <td><font size="1">obtain from wybo@dekkerdocumenten.nl</font></td> + </tr> + <tr> + <td></td> + <td align="right">your email address</td> + <td><input size="23" name="submitemail"></td> + <td><font size="1">needed in case we have questions</font></td> + </tr> + <tr> + <td></td> + <td></td> + <td align="left"><input type="submit" value="submit corrected data"></td> + </tr> + </table><p> + Links to other User Group correction forms:<p> + <!--#include virtual="links.inc" --> + </form> + <!--#include virtual="../1blok4e.inc" --> + <!--#config timefmt="%Y-%m-%d %H:%M" --> + <!--#echo var="LAST_MODIFIED" --> + by <a href="mailto:$adminemail">$adminemail</a> + </p> </div> </body> </html> + EOF +} + +<<'DOC' #------ function makeindex.html ---------------------------------------- += makeindex.html +parameters: - +description: Create the file |index.html| +globals set: - +globals used: db fullname adminemail +returns: 0 +DOC +#------------------------------------------------------------------------------- +makeindex.html() { + local content=$(for i in ${db[@]}; do echo "<tr><td>$i</td><td><a href=\"$i.html\">${fullname[$i]}</a></td></tr>"; done) + cat <<-EOF |./utf82html >index.html + <!--#include virtual="../1blok1e.inc" --> + <title>Nederlandstalige TeX Gebruikersgroep</title> + <!--#include virtual="../1blok2e.inc" --> + <h1>TeX user groups around the world</h1> + <table border="0" cellspacing="0" cellpadding="10"> + <tr valign="top"><td width="67%"> + This page presents electronic information about TeX User Groups around + the world, with an automated mechanism for updating this information and + a download facility with which the primary database can be extracted. + <p> + The data for each user group is generated in a separate table. To access it, + simply click on the name of the country. + <p> + A user group representative (the secretary, usually) can send a corrected version of his + group data by editing the data on-line and then hitting the Send + button. This will mail the changed data to the maintainer of this page. + <p><b>New</b> user groups can request an entry by sending an + email to wybodekker@dekkerdocumenten.nl + <ul> + <li>Please enter ASCII characters (decimal 32-126) only + <li>use TeX for accents + <li>Enter phone numbers starting with +, then the country code + et cetera, no whitespace, hyphens or other punctuation. + </ul> + Anybody can obtain user group information by downloading the data from + the green cell in a table. + This will generate a key=value line for each cell in the table, starting with + a key for that cell, followed by the contents of the cell. + <p> + <table border="1" cellspacing="0" cellpadding="10"> + <tr class="mainhead"><th colspan="3"> + How to obtain information about all lugs at once: + </th> + </tr> + <tr><td>Obtain a LaTeX file presenting all lug information + for publication in two-column format: + </td> + <td><a href="lugs.tex">LaTeX source</a> + </td> + <td><table> + <tr><td><a href="lugs.pdf">PDF</a></td></tr> + <tr><td><a href="lugs.html">HTML</a></td></tr> + </table> + </td> + </tr> + <tr><td>Obtain a LaTeX file containing labels with addresses + of all lugs, where you can send your publication: + </td> + <td><a href="labels.tex">LaTeX source</a> + </td> + <td><a href="labels.pdf">PDF</a> + </td> + </tr> + </table> + </td> + <td><table> + $content + </table></td></tr></table> + <!--#include virtual="../1blok4e.inc" --> + <!--#config timefmt="%Y-%m-%d %H:%M" --> + <!--#echo var="LAST_MODIFIED" --> + by <a href="mailto:$adminemail">$adminemail</a> + </p></div></body></html> + EOF +} + +<<'DOC' #------ function makelugs.html ----------------------------------------- += makelugs.html +parameters: - +description: Create the file |lugs.html| +globals set: (/via/ setkeys) |keys| +globals used: db keys fullname +returns: 0 +DOC +#------------------------------------------------------------------------------- +makelugs.html() { + local linkline=$(for l in ${db[@]}; do echo "<a href=\"#$l\">$l</a>"; done) + local i l lug www + { cat <<-EOF + <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + <html> + <head> + <script language="Javascript" type="text/javascript"> + <!-- + if (top.location != location) top.location.href = location.href; + --> + </script> + <title>All TeX User Groups</title> + <style type="text/css"> + <!-- + body { + margin-top: 8pt; + margin-left: 8pt; + color: #777; + background: white; + font-family: Cambria, sans-serif; + font-size:110%; + } + H1, H2, H3, H4 { color: navy; } + a:link { color: navy; } + a:visited { color: green; } + a:active { color: red; } + td.label { + text-align: right; + } + td.addr { + text-align: right; + vertical-align:top; + } + .nounderline A {text-decoration:none; font-weight:bold} + th.kop { + background-color:#aaa; + color:black; + vertical-align:middle; + text-align:left; + font-size:150%; + line-height:200%; + } + th.sub { + color:navy; + text-align:left; + font-size:120%; + } + --> + </style> + </head> + <body> + <h1>TeX user groups around the world</h1> + The TeX Users Group (contact info below) serves as the local user + group (LUG) of TeX users in North America and any other area or + language not appearing in the following list. TUG is always + interested in fostering the formation of local TeX users groups; + please contact the TUG board (board at tug.org) for assistance, + such as forwarding information about others who might be + interested, publicity, arranging joint memberships and so on. + <p> + See also: + <ul> + <li>The TeX calendar ( + <a href="http://texcalendar.dante.de/month.php">month view</a>, + <a href="http://texcalendar.dante.de/year.php">year view</a> + ) for user group activities. + <li>The <a href="http://www.tug.org/calendar.html">TUG Calendar</a> for general TeX and other typographic activities. + <li>The list of <a href="http://www.tug.org/pubs.html">user group publications and journals</a>. + <li>This same information in <a href="lugs.pdf">PDF</a> and in <a href="lugs.tex">LaTeX</a>. + </ul> + <p> + This information comes from the + <a href="http://www.ntg.nl/lug/index.html">Electronic LUG Database</a>: + you can correct or add information there.<br>The following links + bring you straight to the individual user group correction forms:<p> + <strong> + EOF + for i in ${db[@]}; do + echo " <a href=\"http://www.ntg.nl/lug/$i.html\">$i</a>" + done + cat <<-EOF + </strong> + <p> + Below, a similar line of links just above + every LUG header can be used to wander between the LUG info records in this document.<hr> + <table summary="lugs"> + EOF + for lug in ${db[@]}; do + setkeys $lug '<br>' '&' + www=${keys[www]} + [[ -n $www ]] && www="<a href=\"http://$www\">$www</a>" + cat <<-EOF + <tr><td colspan="2"><br>$linkline</td></tr> + + <tr><th class="kop" colspan="2"> <img src="./images/$lug.png"/> <a name="$lug">$lug - ${fullname[$lug]}</a></th></tr> + <tr><td class="label">short name: </td><td>${keys[short]}</td></tr> + <tr><td class="label">full name: </td><td>${keys[full]}</td></tr> + <tr><td class="label">language: </td><td>${keys[lang]}</td></tr> + <tr><td class="label">members: </td><td>${keys[members]}</td></tr> + <tr><td class="label">email: </td><td>${keys[email]}</td></tr> + <tr><td class="label">web site: </td><td>$www</td></tr> + <tr><td class="label">discussion list:</td><td>${keys[list]}</td></tr> + <tr><td class="label">subscribe at: </td><td>${keys[subscr]}</td></tr> + <tr><td class="addr" >address:</td><td>${keys[addr]}</td></tr> + + <tr><th class="sub" colspan="2">Periodical</th></tr> + <tr><td class="label">title: </td><td>${keys[publ]}</td></tr> + <tr><td class="label">editor: </td><td>${keys[editor]}</td></tr> + <tr><td class="label">editor email: </td><td>${keys[eemail]}</td></tr> + + <tr><th class="sub" colspan="2">Banking</th></tr> + <tr><td class="label">name: </td><td>${keys[bank]}</td></tr> + <tr><td class="label">account: </td><td>${keys[bacc]}</td></tr> + <tr><td class="label">(swift) code: </td><td>${keys[bcode]}</td></tr> + <tr><td class="label">routing no.: </td><td>${keys[brout]}</td></tr> + <tr><td class="addr" >address:</td><td>${keys[baddr]}</td></tr> + + <tr><th class="sub" colspan="2">${keys[ppos]:-President}</th></tr> + <tr><td class="label">name: </td><td>${keys[pname]}</td></tr> + <tr><td class="addr" >address:</td><td>${keys[paddr]}</td></tr> + <tr><td class="label">email: </td><td>${keys[pemail]}</td></tr> + <tr><td class="label">phone: </td><td>${keys[pphone]}</td></tr> + <tr><td class="label">fax: </td><td>${keys[pfax]}</td></tr> + + <tr><th class="sub" colspan="2">${keys[gpos]:-Secretary}</th></tr> + <tr><td class="label">name: </td><td>${keys[gname]}</td></tr> + <tr><td class="addr" >address:</td><td>${keys[gaddr]}</td></tr> + <tr><td class="label">email: </td><td>${keys[gemail]}</td></tr> + <tr><td class="label">phone: </td><td>${keys[gphone]}</td></tr> + <tr><td class="label">fax: </td><td>${keys[gfax]}</td></tr> + + <tr><th class="sub" colspan="2">${keys[fpos]:-Treasurer}</th></tr> + <tr><td class="label">name: </td><td>${keys[fname]}</td></tr> + <tr><td class="addr" >address:</td><td>${keys[faddr]}</td></tr> + <tr><td class="label">email: </td><td>${keys[femail]}</td></tr> + <tr><td class="label">phone: </td><td>${keys[fphone]}</td></tr> + <tr><td class="label">fax: </td><td>${keys[ffax]}</td></tr> + EOF + done + echo "</table></body></html>" + } | sed '/^$/d;/<\/td><td><\/td><\/tr>$/d' | + tac | # reverse and go looking for <h3> headers with no content + while read -r l; do + if [[ $l =~ :\ *\</td\> ]]; then # content line? + keep=true # yes, keep <h3> header + elif [[ $l =~ class=\"sub\" ]]; then # sub header? + $keep || continue # keep it if keep was set true, skip otherwise + keep=false # not a content line, so set keep false + else + keep=false # not a content line, so set keep false + fi + echo "$l" + done | + tac | + utf82html >lugs.html +} + +<<'DOC' #------ function makelugs.pdf ------------------------------------------ += makelugs.pdf +parameters: - +description: Create the files |lug.tex| and |lugs.pdf| +globals set: (/via/ setkeys) |keys| +globals used: keys db fullname +returns: 0 +DOC +#------------------------------------------------------------------------------- +makelugs.pdf() { + local l lug + { cat <<-'EOF' + %!xelatex + \documentclass[10pt]{article} + \usepackage[a4paper,margin=25mm]{geometry} + \usepackage{textcomp} + \usepackage{fontspec} + \usepackage{url} + \usepackage[usestackEOL]{stackengine} + \setcounter{secnumdepth}{0} + \renewcommand{\-}{\discretionary{}{}{}} + \newenvironment{mylist}{% + \begin{list}{}{% + \itemsep.5ex\parsep0pt\leftmargin25mm\labelwidth25mm + \renewcommand{\makelabel}[1]{\hfill\emph{##1:}} + }}{\end{list} + } + \def\head#1#2{\vfill\item[\bfseries\large\upshape #1] {\Large\bfseries\upshape + #2}\nopagebreak} + \def\subhead#1{\\{\bfseries\upshape #1:}} + \begin{document}\fontspec{FreeSans} + EOF + for lug in ${db[@]}; do + setkeys $lug '\\' '\&' + cat <<-EOF + \begin{mylist} + \head{$lug}{${fullname[$lug]}} + \item[short name] ${keys[short]} + \item[full name] ${keys[full]} + \item[language] ${keys[lang]} + \item[members] ${keys[members]} + \item[email] ${keys[email]:+$(echo "\\url{${keys[email]}}")} + \item[web site] ${keys[www]:+$(echo "\\url{${keys[www]}}")} + \item[discussion list]${keys[list]} + \item[subscribe at] ${keys[subscr]} + \item[address] ${keys[addr]:+$(echo "\\Longunderstack[l]{${keys[addr]//;/\\\\}\\strut}")} + + \subhead{Periodical} + \item[title] ${keys[publ]} + \item[editor] ${keys[editor]} + \item[editor email] ${keys[eemail]:+$(echo "\\url{${keys[eemail]}}")} + + \subhead{Banking} + \item[name] ${keys[bank]} + \item[account] ${keys[bacc]} + \item[(swift) code] ${keys[bcode]} + \item[routing no.] ${keys[brout]} + \item[address] ${keys[baddr]:+$(echo "\\Longunderstack[l]{${keys[baddr]//;/\\\\}\\strut}")} + + \subhead{${keys[ppos]:-President}} + \item[name] ${keys[pname]} + \item[address] ${keys[paddr]:+$(echo "\\Longunderstack[l]{${keys[paddr]//;/\\\\}\\strut}")} + \item[email] ${keys[pemail]:+$(echo "\\url{${keys[pemail]}}")} + \item[phone] ${keys[pphone]} + \item[fax] ${keys[pfax]} + + \subhead{${keys[gpos]:-Secretary}} + \item[name] ${keys[gname]} + \item[address] ${keys[gaddr]:+$(echo "\\Longunderstack[l]{${keys[gaddr]//;/\\\\}\\strut}")} + \item[email] ${keys[gemail]:+$(echo "\\url{${keys[gemail]}}")} + \item[phone] ${keys[gphone]} + \item[fax] ${keys[gfax]} + + \subhead{${keys[fpos]:-Treasurer}} + \item[name] ${keys[fname]} + \item[address] ${keys[faddr]:+$(echo "\\Longunderstack[l]{${keys[faddr]//;/\\\\}\\strut}")} + \item[email] ${keys[femail]:+$(echo "\\url{${keys[femail]}}")} + \item[phone] ${keys[fphone]} + \item[fax] ${keys[ffax]} + + \end{mylist} + EOF + done + echo '\end{document}' + } | + sed '/^\\item\[.*\] *$/d;/^$/d' | + tac | # reverse and go looking for \subhead headers with no content + while read -r l; do + if [[ $l =~ ^\\item ]]; then # content line? + keep=true # yes, keep <h3> header + elif [[ $l =~ ^\\subhead ]]; then # \subhead header? + $keep || continue # keep it if keep was set true, skip otherwise + keep=false # not a content line, so set keep false + else + keep=false # not a content line, so set keep false + fi + echo "$l" + done | + tac >lugs.tex + mk --noprint --noview lugs.tex && + mk -c lugs.tex || + die "Problems compiling lugs.tex" +} + +<<'DOC' #------ function makelabels.pdf ---------------------------------------- += makelabels.pdf +parameters: - +description: Create the file |labels.tex| and |labels.pdf| +globals set: (/via/ setkeys) |keys| +globals used: keys db +returns: 0 +DOC +#------------------------------------------------------------------------------- +makelabels.pdf() { + local a i lug + { cat <<-'EOF' + %!xelatex + \documentclass{article} + \usepackage{labels,fontspec} + \LabelRows=8\LabelCols=3 + \TopBorder=0mm\BottomBorder=0mm + \LeftBorder=7mm\RightBorder=7mm + \begin{document}\fontspec{FreeSans}\begin{labels} + EOF + for lug in ${db[@]}; do + setkeys $lug "\n" '\&' + a= + for i in addr gaddr paddr faddr; do + if [[ -n ${keys[$i]} ]]; then + a=${keys[$i]} + break + fi + done + [[ -n $a ]] || continue + echo -e "${keys[short]:-${keys[full]}}\n$a\n" + done + echo '\end{labels}\end{document}' + } >labels.tex + mk --noprint --noview labels.tex && + mk -c labels.tex || + die "Problems compiling labels.tex" +} + +<<'DOC' #----------- fullname ----------------------------- += fullname (hash) +Links the country codes to the full name of countries. +Also used to test the validity of country codes. +DOC +#---------------------------------------------------------- +declare -A fullname=( + [ad]='Andorra' [ky]='Cayman Islands' + [ae]='United Arab Emirates' [kz]='Kazakhstan' + [af]='Afghanistan' [la]='Laos' + [ag]='Antigua and Barbuda' [lb]='Lebanon' + [ai]='Anguilla' [li]='Liechtenstein' + [al]='Albania' [lk]='Sri Lanka' + [am]='Armenia' [lr]='Liberia' + [an]='Netherlands Antilles' [ls]='Lesotho' + [ao]='Angola' [lt]='Lithuania' + [ar]='Argentina' [lu]='Luxembourg' + [as]='American Samoa' [lv]='Latvia' + [at]='Austria' [ly]='Libya' + [au]='Australia' [ma]='Morocco' + [aw]='Aruba' [mc]='Monaco' + [az]='Azerbaijan' [md]='Moldova' + [ba]='Bosnia and Herzegovina' [mg]='Madagascar' + [bb]='Barbados' [mh]='Marshall Islands' + [bd]='Bangladesh' [mk]='Macedonia' + [be]='Belgium' [ml]='Mali' + [bf]='Burkina Faso' [mm]='Myanmar' + [bg]='Bulgaria' [mn]='Mongolia' + [bh]='Bahrain' [mo]='Macau' + [bi]='Burundi' [mp]='Northern Marianas Islands' + [bj]='Benin' [mq]='Martinique' + [bm]='Bermuda' [mr]='Mauritania' + [bn]='Brunei' [ms]='Montserrat' + [bo]='Bolivia' [mt]='Malta' + [br]='Brazil' [mu]='Mauritius' + [bs]='Bahamas' [mv]='Maldives' + [bt]='Bhutan' [mw]='Malawi' + [bw]='Botswana' [mx]='Mexico' + [by]='Belarus' [my]='Malaysia' + [bz]='Belize' [mz]='Mozambique' + [ca]='Canada' [na]='Namibia' + [cf]='Central African Republic' [nc]='New Caledonia' + [cg]='Congo' [ne]='Niger' + [ch]='Switzerland' [nf]='Norfolk Island' + [ci]='Ivory Coast' [ng]='Nigeria' + [ck]='Cook Islands' [ni]='Nicaragua' + [cl]='Chile' [nl]='Netherlands' + [cm]='Cameroon' [no]='Norway' + [cn]='China' [nr]='Nauru' + [co]='Colombia' [nu]='Niue' + [cr]='Costa Rica' [nz]='New Zealand' + [cu]='Cuba' [om]='Oman' + [cv]='Cape Verde Islands' [pa]='Panama' + [cy]='Cyprus' [pe]='Peru' + [cz]='Czech Republic' [pf]='French Polynesia' + [de]='Germany' [pg]='Papua New Guinea' + [dj]='Djibouti' [ph]='Philippines' + [dk]='Denmark' [pk]='Pakistan' + [dm]='Dominica' [pl]='Poland' + [do]='Dominican Republic' [pm]='St Pierre and Miquelon' + [dz]='Algeria' [pr]='Puerto Rico' + [ec]='Ecuador' [pt]='Portugal' + [ee]='Estonia' [pw]='Palau' + [eg]='Egypt' [py]='Paraguay' + [eh]='Western Samoa' [qa]='Qatar' + [er]='Eritrea' [re]='Reunion' + [es]='Spain' [ro]='Romania' + [esc]='Spain (Catalan)' [ru]='Russia' + [et]='Ethiopia' [rw]='Rwanda' + [fi]='Finland' [sa]='Saudi Arabia' + [fj]='Fiji Islands' [sb]='Solomon Islands' + [fk]='Falkland Islands' [sc]='Seychelles Islands' + [fm]='Micronesia' [sd]='Sudan' + [fo]='Faroe Islands' [se]='Sweden' + [fr]='France' [sg]='Singapore' + [ga]='Gabon' [si]='Slovenia' + [gb]='United Kingdom' [sk]='Slovak Republic' + [gd]='Grenada' [sl]='Sierra Leone' + [ge]='Georgia' [sm]='San Marino' + [gf]='French Guiana' [sn]='Senegal' + [gh]='Ghana' [so]='Somalia' + [gi]='Gibraltar' [sr]='Suriname' + [gl]='Greenland' [sv]='El Salvador' + [gm]='Gambia' [sy]='Syria' + [gn]='Guinea' [sz]='Swaziland' + [gp]='Guadeloupe' [tc]='Turks and Caicos Islands' + [gq]='Equatorial Guinea' [td]='Chad' + [gr]='Greece' [tg]='Togo' + [gt]='Guatemala' [th]='Thailand' + [gu]='Guam' [tj]='Tajikistan' + [gw]='Guinea-Bissau' [tk]='Tokelau' + [gy]='Guyana' [tm]='Turkmenistan' + [hk]='Hong Kong' [tn]='Tunisia' + [hn]='Honduras' [to]='Tonga Islands' + [hr]='Croatia' [tp]='East Timor' + [ht]='Haiti' [tr]='Turkey' + [hu]='Hungary' [tt]='Trinidad and Tobago' + [id]='Indonesia' [tv]='Tuvalu' + [ie]='Ireland' [tw]='Taiwan' + [il]='Israel' [tz]='Tanzania' + [in]='India' [ua]='Ukraine' + [iq]='Iraq' [ug]='Uganda' + [ir]='Iran' [us]='TeX User Group (International)' + [is]='Iceland' [uy]='Uruguay' + [it]='Italy' [uz]='Uzbekistan' + [jm]='Jamaica' [ve]='Venezuela' + [jo]='Jordan' [vg]='Virgin Islands (GB)' + [jp]='Japan' [vi]='Virgin Islands (US)' + [ke]='Kenya' [vn]='Vietnam' + [kg]='Kyrgyzstan' [vu]='Vanuatu' + [kh]='Cambodia' [wf]='Wallis and Futuna Islands' + [ki]='Kiribati' [ye]='Yemen' + [km]='Comoros' [yt]='Mayotte Island' + [kn]='St Kitts and Nevis' [yu]='Yugoslavia' + [kp]='Korea (North)' [za]='South Africa' + [kr]='Korea (South)' [zm]='Zambia' + [kw]='Kuwait' [zw]='Zimbabwe' +) + +<<'DOC' #----------- keys, inp ---------------------------- += keys, inp (hashes) +Depending on which lug is handled, |keys| will contain the +key and values defined in the files in |lugs/|. +In an edit operation, |inp| will be filled with similar +keys and values that will replace those in keys. +DOC +#---------------------------------------------------------- +declare -A keys inp + +<<'DOC' #------------- db --------------------------------- += db (string) +Contains the space-separated country codes for which data +are available in the |lugs/| directory. +DOC +#---------------------------------------------------------- +db=$(test -d lugs && cd lugs && ls | tr "\n" " ") + +<<'DOC' #------------- admin ------------------------------ += admin (string) +Contains the user name of the lug administrator at www.ntg.nl +DOC +#---------------------------------------------------------- +admin=wybo + +<<'DOC' #------------- adminemail ------------------------- += adminemail (string) +Contains the email address that should receive corrections +from the web site. +DOC +#---------------------------------------------------------- +adminemail=wybo@dekkerdocumenten.nl + +# =============== Program starts here ============= +source=$(readlink $0 || echo ./lug) +cd ${source%/lug} +test -d lugs -a -e lug || + die "The lug script is part of a directory containing all LUG data;\n" \ + " You must run (an exact copy of) it in that directory,\n" \ + " or you must make a link to the lug script in your PATH" +diff ./lug $0 >/dev/null || die "You are running a copy of the lug script that differs from its source" + +if ! options=$(getopt \ + -n $myname \ + -o hHVIcfe:s:: \ + -l help,Help,version,clean,full,extras:,sync:: \ + -- "$@" +); then exit 1; fi +eval set -- "$options" +while [ $# -gt 0 ]; do + case $1 in + (-h|--help) help;; + (-H|--Help) helpall;; + (-V|--version) version;; + (-I) install;; + (-c|--clean) Clean + exit;; + (-f|--full) Clean + makeutf82html.c + makeMakefile + make --quiet + clean + exit;; + (-e|--extras) eval "make$2" + exit;; + (-s|--sync) i=${2:-lug} + n=$(ls -R|wc -l) + test $n -lt 70 && die "Only $n files here, can't sync" + echo syncing with www.ntg.nl/$i + rsync -ia --delete --exclude='.hg*' ./ $admin@www.ntg.nl:html/$i/ + exit;; + (--) shift; break;; + (*) break;; + esac +done + +if [ -n "$1" ]; then + for i in "$@"; do + makexx.html $i + done + exit +fi + +in=false +echo waiting for input... +while IFS='' read line; do + [[ -z $line ]] && continue # skip empty lines + if [[ $line =~ ^code= ]]; then # we get here only with manual input + in=true # of a few lines; those must start with code= + inp[code]=${line#*=} + fi + [[ $line == 'password=kjwb' ]] && { in=true; continue; } + $in || continue # look only after "password=kjwb" + [[ $line =~ =$ ]] && continue + if [[ $line =~ = ]]; then + IFS='=' read k v <<<$line + inp[$k]="$v" + else + inp[$k]+=";$line" + fi +done +code=${inp[code]} +[[ -n $code ]] || die "No code was specified" +[[ $(echo ${db[@]}) =~ $code ]] || die "Unrecognized code: $code" + +setkeys $code ';' '&' # make copy of old data in keys +for i in ${!inp[@]}; do keys[$i]=${inp[$i]}; done # overwrite with new data + +cat <<-EOF >new + # General: + code ${keys[code]} + short ${keys[short]} + full ${keys[full]} + lang ${keys[lang]} + members ${keys[members]} + email ${keys[email]} + www ${keys[www]} + list ${keys[list]} + subscr ${keys[subscr]} + addr ${keys[addr]} + + # Periodical: + publ ${keys[publ]} + editor ${keys[editor]} + eemail ${keys[eemail]} + + # Banking: + bank ${keys[bank]} + bacc ${keys[bacc]} + bcode ${keys[bcode]} + brout ${keys[brout]} + baddr ${keys[baddr]} + + # Policy matters: + ppos ${keys[ppos]} + pname ${keys[pname]} + paddr ${keys[paddr]} + pemail ${keys[pemail]} + pphone ${keys[pphone]} + pfax ${keys[pfax]} + + # General matters: + gpos ${keys[gpos]} + gname ${keys[gname]} + gaddr ${keys[gaddr]} + gemail ${keys[gemail]} + gphone ${keys[gphone]} + gfax ${keys[gfax]} + + # Finance matters: + fpos ${keys[fpos]} + fname ${keys[fname]} + faddr ${keys[faddr]} + femail ${keys[femail]} + fphone ${keys[fphone]} + ffax ${keys[ffax]} + EOF +diff -y --left-column --report-identical-files lugs/$code new && die "No changes" +while true; do + echo -n "Save [Yn]? " + read r + case $r in + ([yY]|'') mv -f new lugs/$code && Warn Saved || die "Could not save" + exit + ;; + (n|N) die "Not saved, result left in file new" + ;; + esac +done diff --git a/support/lug/lug.pdf b/support/lug/lug.pdf Binary files differnew file mode 100644 index 0000000000..b97bb5d257 --- /dev/null +++ b/support/lug/lug.pdf diff --git a/support/lug/lugs.rb b/support/lug/lugs.rb new file mode 100755 index 0000000000..06b4370097 --- /dev/null +++ b/support/lug/lugs.rb @@ -0,0 +1,110 @@ +#!/usr/bin/env ruby +# encoding: UTF-8 +require 'cgi' +require 'erb' +require 'open-uri' +require 'date' +require 'resolv' + + +# admins to be informed, one per line: +ADMINS = %w{ + wybo@dekkerdocumenten.nl +} + +RESPONSE = <<EOF +Content-type: text/html + +<%= open(CALLERDIR+"../1blok1e.inc") { |f| f.read } %> +<%= open(CALLERDIR+"../1blok2e.inc") { |f| f.read } %> +<h1>TeX user groups around the world</h1> +<% if errmess.empty? %> + <h2>Thank you for your support of the LUG database</h2> + Your corrections will be sent to <%= ADMINS[0] %> for handling. +<% else %> + <h3>Sorry, you did not correctly enter the required fields:</h3><br> + <font color="red"> + <%= errmess.join("<br>") %> + </font><p> + <form>Please try again by going + <input type="button" value="Back" onClick="history.go(-1);return true;"> + </form> +<% end %> +<hr noshade> +</td></tr></table></td></tr></table> +<%= open(CALLERDIR+"../1blok4e.inc") { |f| f.read } %> <%= DateTime.now %> +</p></div></body></html> +EOF + +MESS = <<EOF +password=<%= q['password'] %> +submitemail=<%= q['submitemail'] %> +addr=<%= q['addr'] %> +bacc=<%= q['bacc'] %> +baddr=<%= q['baddr'] %> +bank=<%= q['bank'] %> +bcode=<%= q['bcode'] %> +brout=<%= q['brout'] %> +code=<%= q['code'] %> +editor=<%= q['editor'] %> +eemail=<%= q['eemail'] %> +email=<%= q['email'] %> +faddr=<%= q['faddr'] %> +femail=<%= q['femail'] %> +ffax=<%= q['ffax'] %> +fname=<%= q['fname'] %> +fphone=<%= q['fphone'] %> +fpos=<%= q['fpos'] %> +full=<%= q['full'] %> +gaddr=<%= q['gaddr'] %> +gemail=<%= q['gemail'] %> +gfax=<%= q['gfax'] %> +gname=<%= q['gname'] %> +gphone=<%= q['gphone'] %> +gpos=<%= q['gpos'] %> +lang=<%= q['lang'] %> +list=<%= q['list'] %> +members=<%= q['members'] %> +paddr=<%= q['paddr'] %> +pemail=<%= q['pemail'] %> +pfax=<%= q['pfax'] %> +pname=<%= q['pname'] %> +pphone=<%= q['pphone'] %> +ppos=<%= q['ppos'] %> +publ=<%= q['publ'] %> +short=<%= q['short'] %> +subscr=<%= q['subscr'] %> +www=<%= q['www'] %> +country=<%= q['country'] %> +EOF + +def validate_email_domain(email) + return false unless email =~ /\@(.*)/ + Resolv::DNS.open do |dns| + @mx = dns.getresources($1, Resolv::DNS::Resource::IN::MX) + end + @mx.size > 0 ? true : false +end + +def mail(message,to,code) + m = open("|/usr/bin/mail -s '===LUG correction for #{code}===' #{to}",'w') + m.puts message + m.close +end + +q = CGI.new + +CALLERDIR=ENV['HTTP_REFERER'].sub(/[^\/]*$/,'') + +errmess = [] +q['password'] == 'kjwb' || + errmess.push("You typed the wrong (or no) password") +validate_email_domain(q['submitemail']) || + errmess.push("You must enter a valid email addres") + +message = ERB.new(RESPONSE).result +print message + +exit unless errmess.empty? +message = ERB.new(MESS).result.gsub(/\r\n/,"\n ").strip +ADMINS.each { |m| mail(message,m,q['code']) } diff --git a/support/lug/lugs/bg b/support/lug/lugs/bg new file mode 100644 index 0000000000..e419fadca3 --- /dev/null +++ b/support/lug/lugs/bg @@ -0,0 +1,47 @@ +# General: +code bg +short bgTeX +full Bulgarian LaTeX Users Group +lang bg +members 234 +email bulgarian-latex-users-group@googlegroups.com +www groups.google.com/forum/?hl=bg&fromgroups#!forum/bulgarian-latex-users-group +list +subscr +addr Dept. of Applied Mathematics and Statistics;University of Ruse;8 Studentska str.;Ruse,7017;Bulgaria + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos +pname +paddr +pemail +pphone +pfax + +# General matters: +gpos Coordinator +gname Stefka R. Karakoleva +gaddr Dept. of Applied Mathematics and Statistics;University of Ruse;8 Studentska str.;Ruse,7017;Bulgaria +gemail skarakoleva@uni-ruse.bg +gphone +35982888606 +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax diff --git a/support/lug/lugs/br b/support/lug/lugs/br new file mode 100644 index 0000000000..80f1d73770 --- /dev/null +++ b/support/lug/lugs/br @@ -0,0 +1,47 @@ +# General: +code br +short latex-br +full Grupo de Usuários latex-br +lang pt +members 386 +email +www groups.google.com/group/latex-br +list latex-br@googlegroups.com +subscr latex-br+subscribe@googlegroups.com +addr + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos Manager +pname Lauro Cesar +paddr +pemail laurocesar@gmail.com +pphone +pfax + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax diff --git a/support/lug/lugs/cn b/support/lug/lugs/cn new file mode 100644 index 0000000000..e24fb37891 --- /dev/null +++ b/support/lug/lugs/cn @@ -0,0 +1,47 @@ +# General: +code cn +short CTeX +full Chinese TeX Society +lang zh +members 20000 +email info@ctex.org +www www.ctex.org +list +subscr +addr No. 55, Zhongguancun East Road;Haidian;Beijing 100080;China + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos President +pname Lingyun Wu +paddr No. 55, Zhongguancun East Road;Haidian;Beijing 100080;China +pemail lywu@amt.ac.cn +pphone +861062651362 +pfax + +# General matters: +gpos Vice President +gname Helin Gai +gaddr Few HH025, Duke University;Box 96332;Durham, NC 27708;USA +gemail hg9@duke.edu +gphone +19199436302 +gfax + +# Finance matters: +fpos Vice President +fname Zhichu Chen +faddr Shanghai Institute of Applied Physics;Chinese Academy;No. 2019, Jialuo Road;Jiading;Shanghai, 200000;China +femail zhichu.chen@gmail.com +fphone +862159553405 +ffax diff --git a/support/lug/lugs/cz b/support/lug/lugs/cz new file mode 100644 index 0000000000..d7f1257a4e --- /dev/null +++ b/support/lug/lugs/cz @@ -0,0 +1,47 @@ +# General: +code cz +short CSTUG +full Československé sdružení uživatelů TeXu +lang cs +members 300 +email cstug@cstug.cz +www www.cstug.cz +list cstex@cs.felk.cvut.cz +subscr +addr CSTUG c/o FEL ČVUT;Technická 2;166 27 Praha;Czech Republic + +# Periodical: +publ Zpravodaj CSTUGu +editor Zdeněk Wagner +eemail bulletin@cstug.cz + +# Banking: +bank Fio banka, a.s. +bacc 2700058974 / 2010 +bcode FIOBCZPPXXX +brout CZ5620100000002700058974 +baddr V Celnici 1028/10;114 07 Praha 1;Czech Republic + +# Policy matters: +ppos President +pname Petr Sojka +paddr Masaryk University;Faculty of Informatics;Botanicka 68a;602 00 Brno;Czech Republic +pemail president@cstug.cz +pphone +420 549 496 966 +pfax +420 549 491 820 + +# General matters: +gpos Secretary +gname Dana Čurdová +gaddr K Babě 19;621 00 Brno;Czech Republic +gemail secretary@cstug.cz +gphone +420 775 165 299 +gfax + +# Finance matters: +fpos Treasurer +fname Dana Čurdová +faddr K Babě 19;621 00 Brno;Czech Republic +femail treasurer@cstug.cz +fphone +420 775 165 299 +ffax diff --git a/support/lug/lugs/de b/support/lug/lugs/de new file mode 100644 index 0000000000..631d6eb743 --- /dev/null +++ b/support/lug/lugs/de @@ -0,0 +1,47 @@ +# General: +code de +short DANTE e.V. +full Deutschsprachige Anwendervereinigung TeX e.V. +lang de +members 2150 +email dante@dante.de +www www.dante.de +list dante-ev@dante.de +subscr https://lists.dante.de/mailman/listinfo/dante-ev +addr Bergheimer Straße 110a;69115 Heidelberg + +# Periodical: +publ Die TeXnische Komödie +editor Herbert Voß +eemail dtk-redaktion@dante.de + +# Banking: +bank VR Bank Rhein-Neckar e.G +bacc 23 100 07 +bcode GENODE61MA2 +brout +baddr + +# Policy matters: +ppos President +pname Martin Sievers +paddr Postfach 101840;D-69008 Heidelberg;Germany +pemail vorstand@dante.de +pphone +49622129766 +pfax +496221167906 + +# General matters: +gpos Secretary +gname Manfred Lotz +gaddr +gemail secretary@dante.de +gphone +gfax + +# Finance matters: +fpos Treasurer +fname Klaus Höppner +faddr +femail treasurer@dante.de +fphone +ffax diff --git a/support/lug/lugs/dk b/support/lug/lugs/dk new file mode 100644 index 0000000000..9f38c897e0 --- /dev/null +++ b/support/lug/lugs/dk @@ -0,0 +1,47 @@ +# General: +code dk +short DK-TUG +full Danish TeX Users Group +lang da +members 96 +email board@tug.dk +www www.tug.dk +list dk-tug@tug.dk +subscr dk-tug-subscribe@tug.dk +addr + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos President +pname Lars Madsen +paddr Department of Mathematical Sciences;Ny Munkegade 118, Bdg. 1530;DK-8000 Aarhus C;Denmark +pemail president@tug.dk +pphone +45893170 +pfax + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos Treasurer +fname Rasmus Villemoes +faddr Department of Mathematical Sciences;Ny Munkegade 118, Bdg. 1530;DK-8000 Aarhus C;Denmark +femail treasurer@tug.dk +fphone +ffax diff --git a/support/lug/lugs/ee b/support/lug/lugs/ee new file mode 100644 index 0000000000..20b11e4cfc --- /dev/null +++ b/support/lug/lugs/ee @@ -0,0 +1,47 @@ +# General: +code ee +short +full Estonian User Group +lang et +members +email +www +list +subscr +addr + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos President +pname +paddr Astrophysical Observatory, Toravere;Enn Saar, Tartu;EE 2444 Estonia +pemail saar@aai.ee +pphone +pfax + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax diff --git a/support/lug/lugs/es b/support/lug/lugs/es new file mode 100644 index 0000000000..8f80f9dfc9 --- /dev/null +++ b/support/lug/lugs/es @@ -0,0 +1,47 @@ +# General: +code es +short CervanTeX +full Grupo de Usuarios de TeX Hispanohablantes +lang es +members 45 +email secretario@cervantex.es +www www.cervantex.es +list es-tex@listserv.rediris.es +subscr www.cervantex.es/listas.php +addr + +# Periodical: +publ TeXemplares +editor Enrique Meléndez +eemail texemplares@cervantex.es + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos Presidente +pname Juan L. Varona +paddr University of La Rioja;26004 Logroño;Spain +pemail presidente@cervantex.es +pphone +pfax + +# General matters: +gpos Secretario +gname Luis Seidel +gaddr +gemail secretario@cervantex.es +gphone +gfax + +# Finance matters: +fpos Tesorero +fname Enrique Meléndez +faddr +femail tesorero@cervantex.es +fphone +ffax diff --git a/support/lug/lugs/esc b/support/lug/lugs/esc new file mode 100644 index 0000000000..9ab205e302 --- /dev/null +++ b/support/lug/lugs/esc @@ -0,0 +1,47 @@ +# General: +code esc +short Tirant lo TeX +full Catalan TeX Users Group +lang ca +members +email +www www.lsi.upc.edu/~valiente/tug-catalan.html +list catala-tex@ldist.upc.edu +subscr +addr + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos President +pname Gabriel Valiente +paddr Technical University of Catalonia;Jordi Girona, 1-3;E-08034 Barcelona;Spain +pemail valiente@lsi.upc.edu +pphone +pfax + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax diff --git a/support/lug/lugs/fr b/support/lug/lugs/fr new file mode 100644 index 0000000000..81945a7965 --- /dev/null +++ b/support/lug/lugs/fr @@ -0,0 +1,47 @@ +# General: +code fr +short GUTenberg +full Groupe francophone des utilisateurs de TeX +lang fr +members 400 +email secretariat@gutenberg.eu.org +www www.gutenberg.eu.org +list gut@ens.fr +subscr gut-request@ens.fr +addr Association GUTenberg;Cellule MathDoc;BP 74;F-38402 Saint-Martin-d’Hères;FRANCE + +# Periodical: +publ Cahiers GUTenberg, Lettre GUTenberg +editor Thierry Bouche +eemail secretariat@gutenberg.eu.org + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos President +pname Jérémy Just +paddr +pemail president@gutenberg.eu.org +pphone +pfax + +# General matters: +gpos Secretary +gname Philippe Michel +gaddr Association GUTenberg;Cellule MathDoc;BP 74;F-38402 Saint-Martin-d’Hères;FRANCE +gemail secretariat@gutenberg.eu.org +gphone +gfax + +# Finance matters: +fpos Treasurer +fname Maxime Chupin +faddr +femail tresorier@gutenberg.eu.org +fphone +ffax diff --git a/support/lug/lugs/gb b/support/lug/lugs/gb new file mode 100644 index 0000000000..ae0eb87b60 --- /dev/null +++ b/support/lug/lugs/gb @@ -0,0 +1,47 @@ +# General: +code gb +short UK-TUG +full UK TeX Users Group +lang en-GB +members 100 +email committee@uk.tug.org +www uk.tug.org +list uktug-announce@tug.org +subscr uk.tug.org/membership/ +addr 2 Dowthorpe End;Earls Barton;Northampton;NN6 0NH + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos Chairman +pname Kaveh Barzagan +paddr +pemail chairman@uk.tug.org +pphone +pfax + +# General matters: +gpos Secretary +gname Joseph Wright +gaddr UK-TUG Secretary;2 Dowthorpe End;Earls Barton;Northampton;NN6 0NH +gemail secretary@uk.tug.org +gphone +gfax + +# Finance matters: +fpos Treasurer +fname John Peters +faddr +femail treasurer@uk.tug.org +fphone +ffax diff --git a/support/lug/lugs/hu b/support/lug/lugs/hu new file mode 100644 index 0000000000..199fdb6360 --- /dev/null +++ b/support/lug/lugs/hu @@ -0,0 +1,47 @@ +# General: +code hu +short MaTeX +full Magyar TeX Egyesület +lang hu +members 15 +email matex@math.klte.hu +www www.matexhu.org +list tex-l@tigris.klte.hu +subscr www.math.klte.hu/~matex/LevLista.html +addr Inst of Mathematics and Informatics;University of Debrecen;H-4010 Debrecen;P.O. Box 12;Hungary + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos President +pname Ferenc Wettl +paddr Department of Algebra;Institute of Mathematics;Budapest University of Technology and Economics;Budapest, Műegyetem rakpart 1--3, H. ép. V. 5.;Hungary +pemail wettl@math.bme.hu +pphone +pfax + +# General matters: +gpos Secretary +gname Gyöngyi Bujdosó +gaddr Faculty of Computer Science;University of Debrecen;H-4010 Debrecen;P.O. Box 12;Hungary +gemail bujdoso@inf.unideb.hu +gphone +36304280403 +gfax +3652416857 + +# Finance matters: +fpos Board member +fname Tamás Mihálydeák +faddr Faculty of Computer Science;University of Debrecen;H-4010 Debrecen;P.O. Box 12;Hungary +femail mihalydeak@inf.unideb.hu +fphone +ffax diff --git a/support/lug/lugs/ie b/support/lug/lugs/ie new file mode 100644 index 0000000000..b044436212 --- /dev/null +++ b/support/lug/lugs/ie @@ -0,0 +1,47 @@ +# General: +code ie +short ITALIC +full Irish TeX and LaTeX In-print Community +lang en-GB en-IE +members +email italic-l-request@listserv.heanet.ie +www +list ITALIC-L@listserv.heanet.ie +subscr listserv.heanet.ie/italic-l.html +addr + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos +pname +paddr +pemail +pphone +pfax + +# General matters: +gpos +gname Peter Flynn +gaddr Computer Centre;University College;Cork;Ireland +gemail peter@silmaril.ie +gphone +353 21 490 2609 +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax diff --git a/support/lug/lugs/is b/support/lug/lugs/is new file mode 100644 index 0000000000..ede9b8e7e8 --- /dev/null +++ b/support/lug/lugs/is @@ -0,0 +1,47 @@ +# General: +code is +short ÍsTeX +full Vefur íslenskra TeX notenda +lang is +members 90 +email +www istex.hafro.is +list +subscr +addr + +# Periodical: +publ SamanTeXt +editor Árni Magnússon +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos +pname Árni Magnússon +paddr Öldugötu 28;101 Reykjavík;Iceland +pemail arnima@hafro.is +pphone +pfax + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax diff --git a/support/lug/lugs/it b/support/lug/lugs/it new file mode 100644 index 0000000000..817673a8dc --- /dev/null +++ b/support/lug/lugs/it @@ -0,0 +1,47 @@ +# General: +code it +short GuIT +full Gruppo Utilizzatori Italiani di TeX +lang it +members 111 +email guit@sssup.it +www www.guit.sssup.it +list +subscr +addr c/o Ufficio Statistica;Sant'Anna School of Advanced Studies;Piazza Martiri della Libertà, 33;56127 Pisa;Italy + +# Periodical: +publ Ars TeXnica +editor Gianluca Pignalberi +eemail arstexnica@sssup.it + +# Banking: +bank Banco Posta +bacc 74922279 +bcode +brout +baddr + +# Policy matters: +ppos President +pname Massimiliano Dominici +paddr +pemail mlgdominici@interfree.it +pphone +39 050 44538 +pfax + +# General matters: +gpos Vice-president +gname Lapo Filippo Mori +gaddr +gemail lapo.mori@gmail.com +gphone +gfax + +# Finance matters: +fpos +fname Maurizio Himmelmann +faddr +femail guit@sssup.it +fphone +ffax diff --git a/support/lug/lugs/kr b/support/lug/lugs/kr new file mode 100644 index 0000000000..770674ad59 --- /dev/null +++ b/support/lug/lugs/kr @@ -0,0 +1,47 @@ +# General: +code kr +short KTS or KTUG +full Korean TeX Society +lang ko +members 200 +email info@mail.ktug.or.kr +www www.ktug.org/xe +list +subscr +addr Department of Law;Dongguk University;26, 3-ga, Pil-dong;Chung-gu;Seoul 100-715;Republic of Korea + +# Periodical: +publ The Asian Journal of TeX +editor Jin-Hwan Cho +eemail chofchof@ktug.or.kr + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos president +pname In-Sung Cho +paddr Dept. of Economics;Kongju National University;182 Shinkwan Dong;Gongju 314-701;Korea +pemail ischo@ktug.or.kr +pphone +82-41-850-8439 +pfax +82-41-850-8440 + +# General matters: +gpos vice-president +gname Kangsoo Kim +gaddr +gemail karnes@ktug.or.kr +gphone +gfax + +# Finance matters: +fpos treasurer +fname Dohyun Kim +faddr Department of Law;Dongguk University;26, 3-ga, Pil-dong;Chung-gu;Seoul 100-715;Republic of Korea +femail nomos@ktug.or.kr +fphone +82-2-2260-3257 +ffax diff --git a/support/lug/lugs/lt b/support/lug/lugs/lt new file mode 100644 index 0000000000..7898a45ce8 --- /dev/null +++ b/support/lug/lugs/lt @@ -0,0 +1,47 @@ + General: +code lt +short +full Lietuvos TeX'o Vartotojų Grupė +lang lt +members 8 +email +www www.vtex.lt/tex/ +list +subscr +addr + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos President +pname Vytas Statulevičius +paddr Akademijos 4;LT-2600 Vilnius;Lithuania +pemail vytass@ktl.mii.lt +pphone +3702359609 +pfax +3702359804 + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax diff --git a/support/lug/lugs/mx b/support/lug/lugs/mx new file mode 100644 index 0000000000..9f888e8b89 --- /dev/null +++ b/support/lug/lugs/mx @@ -0,0 +1,47 @@ +# General: +code mx +short +full TeX México +lang es +members +email tex@linuxopensource.mx +www +list +subscr +addr + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos Coordinator +pname Cuauhtémoc Pacheco Díaz +paddr Privada Junta de Zitacuaro No. 20;Col. Isaac Arriaga;58210 Morelia, Michoacan;Mexico +pemail temo@ibiblio.org +pphone +524431323263 +pfax +52143173945 + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax diff --git a/support/lug/lugs/nl b/support/lug/lugs/nl new file mode 100644 index 0000000000..21f5fe7407 --- /dev/null +++ b/support/lug/lugs/nl @@ -0,0 +1,47 @@ +# General: +code nl +short NTG +full Nederlandstalige TeX Gebruikersgroep +lang nl +members 195 +email info@ntg.nl +www www.ntg.nl +list tex-nl@ntg.nl +subscr www.ntg.nl/mailman/listinfo/tex-nl +addr + +# Periodical: +publ MAPS +editor Michael Guravage +eemail maps@ntg.nl + +# Banking: +bank ING +bacc 1306238 +bcode INGBNL2A +brout NL53INGB0001306238 +baddr + +# Policy matters: +ppos President +pname Hans Hagen +paddr Pragma;Ridderstraat 27;8061 GH Hasselt;The Netherlands +pemail ntg-president@ntg.nl +pphone +31384775369 +pfax + +# General matters: +gpos Secretary +gname Sietse Brouwer +gaddr Korte Langestraat 2;2312 SK Leiden;The Netherlands +gemail ntg-secretary@ntg.nl +gphone +31613456848 +gfax + +# Finance matters: +fpos Treasurer +fname Ferdy Hanssen +faddr Helmondstraat 212;6843 SL Arnhem;The Netherlands +femail treasurer@ntg.nl +fphone +31263890579 +ffax diff --git a/support/lug/lugs/no b/support/lug/lugs/no new file mode 100644 index 0000000000..3691ff9c0b --- /dev/null +++ b/support/lug/lugs/no @@ -0,0 +1,47 @@ +# General: +code no +short +full Nordic TeX Users Group +lang da et fi fo is nb nn sv +members 78 +email +www heim.ifi.uio.no/~dag/ntug/ +list nordictex@ifi.uio.no +subscr +addr + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos President +pname Dag Langmyhr +paddr University of Oslo;PO Box 1080 Blindern;N-0316 Oslo;Norway +pemail dag@ifi.uio.no +pphone +4722852450 +pfax +4722852401 + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax diff --git a/support/lug/lugs/pl b/support/lug/lugs/pl new file mode 100644 index 0000000000..fb21763b04 --- /dev/null +++ b/support/lug/lugs/pl @@ -0,0 +1,47 @@ +# General: +code pl +short GUST +full Polska Grupa Użytkowników Systemu TeX +lang pl +members 276 +email sekretariat@gust.org.pl +www www.GUST.org.pl +list gust-l@man.torun.pl +subscr +addr Pl. Rapackiego 1;PL-87-100 Toruń;Poland + +# Periodical: +publ Biuletyn GUST +editor Tomasz Przechlewski +eemail ekotp@univ.gda.pl + +# Banking: +bank BIG Bank Gdański SA, Oddział Millenium, Toruń +bacc 80 11602202 0000 0000 5530 4981 +bcode +brout +baddr + +# Policy matters: +ppos President +pname Jerzy Ludwichowski +paddr Information & Communication Technology Centre;Nicolaus Copernicus University;Pl. Rapackiego 1;PL-87-100 Toruń;Poland +pemail prezes@gust.org.pl +pphone +48 56 6112742 +pfax +48 56 6221850 + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos Treasurer +fname Jolanta Szelatyńska +faddr Information & Communication Technology Centre;Nicolaus Copernicus University;Pl. Rapackiego 1;PL-87-100 Toruń;Poland +femail secretary@gust.org.pl +fphone +48 56 6112741 +ffax +48 56 6221850 diff --git a/support/lug/lugs/pt b/support/lug/lugs/pt new file mode 100644 index 0000000000..e47f40dfcc --- /dev/null +++ b/support/lug/lugs/pt @@ -0,0 +1,47 @@ +# General: +code pt +short GUTpt +full Grupo de Utilizadores de TeX +lang pt +members +email +www gentzen.mat.uc.pt/~gutpt/ +list gutpt@gentzen.mat.uc.pt +subscr +addr + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos President +pname Pedro Quaresma de Almeida +paddr Coimbra Univ., Dep. Matemática;Largo D. Dinis;Apartado 3008;3001-454 COIMBRA;Portugal +pemail pedro@mat.uc.pt +pphone +351239791181 +pfax + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax diff --git a/support/lug/lugs/us b/support/lug/lugs/us new file mode 100644 index 0000000000..52c3a50ed4 --- /dev/null +++ b/support/lug/lugs/us @@ -0,0 +1,47 @@ +# General: +code us +short TUG +full TeX Users Group +lang +members 1400 +email office@tug.org +www www.tug.org +list texhax@tug.org +subscr +addr + +# Periodical: +publ TUGboat +editor Barbara Beeton +eemail TUGboat@tug.org + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos President +pname Kaveh Bazargan +paddr P.O. Box 2311;Portland, OR 97208;USA +pemail president@tug.org +pphone +15032239994 +pfax +18153013568 + +# General matters: +gpos Secretary +gname Sue DeMeritt +gaddr +gemail secretary@tug.org +gphone +gfax + +# Finance matters: +fpos Treasurer +fname Klaus Hoeppner +faddr +femail treasurer@tug.org +fphone +ffax diff --git a/support/lug/lugs/vn b/support/lug/lugs/vn new file mode 100644 index 0000000000..fdede23266 --- /dev/null +++ b/support/lug/lugs/vn @@ -0,0 +1,47 @@ +# General: +code vn +short VietTUG +full Vietnamese TeX Users Group +lang vi +members 450 +email viettug@gmail.com +www viettug.org +list +subscr +addr 102 Hùng Vương Street;Tam Kỳ City;Quảng Nam Province;Việt Nam + +# Periodical: +publ +editor +eemail + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos manager +pname Huỳnh Kỳ Anh +paddr Dept of Maths and Informatics;University of Quảng Nam;102 Hùng Vương Street;Tam Kỳ City;Quảng Nam Province;Việt Nam +pemail xkyanh@gmail.com +pphone 840979460150 +pfax + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax diff --git a/support/lug/lugs/za b/support/lug/lugs/za new file mode 100644 index 0000000000..d7dfe1bb0a --- /dev/null +++ b/support/lug/lugs/za @@ -0,0 +1,47 @@ +# General: +code za +short LUGSA +full LaTeX User Group - South Africa +lang en +members +email +www +list latex@mailman.compudoc.co.za +subscr mailman.compudoc.co.za/mailman/listinfo/latex +addr + +# Periodical: +publ LaTeX2e presentation +editor Stefan Scriba +eemail scribas@gmail.com + +# Banking: +bank +bacc +bcode +brout +baddr + +# Policy matters: +ppos President +pname Stefan Scriba +paddr 257 Loveday St;Muckleneuk;Pretoria 0002;South Africa +pemail scribas@gmail.com +pphone +27727061494 +pfax + +# General matters: +gpos +gname +gaddr +gemail +gphone +gfax + +# Finance matters: +fpos +fname +faddr +femail +fphone +ffax |