home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!dtix!darwin.sura.net!zaphod.mps.ohio-state.edu!cs.utexas.edu!sun-barr!ames!agate!doc.ic.ac.uk!uknet!keele!nott-cs!usenet
- From: UKTeX-Request@tex.ac.uk
- Newsgroups: comp.text.tex
- Subject: UKTeX Digest V92 #43
- Message-ID: <17804.722278334@mips.nott.ac.uk>
- Date: 20 Nov 92 16:52:14 GMT
- Sender: cczdao@mips.ccc.nottingham.ac.uk
- Reply-To: UKTeX@tex.ac.uk
- Lines: 476
-
- UKTeX Digest Friday, 20 Nov 1992 Volume 92 : Issue 43
-
- ``The UKTeX Digest is brought to you as a free, unfunded and voluntary
- service of the UK TeX Users Group and the UK TeX Archive.''
-
- Today's Topics:
- {Q&A}:
- Bringing back hanging
- re: Bring back hanging
- RE: Bring back hanging
- Re: Bring Back hanging
- TeX variable scope rules (was: another gem)
- Double-sided printing and page-imposition in LaTeX
-
- Administrivia:
- Moderators: Peter Abbott (Aston University) and
- David Osborne (University of Nottingham)
- Contributions: UKTeX@uk.ac.tex
- Administration, subscription and unsubscription requests:
- UKTeX-request@uk.ac.tex
-
- ------------------------------------------------------------
-
- Date: Sun, 15 Nov 92 10:56:38 -0500
- From: Jerry Leichter <leichter%com.lrw@uk.ac.aston>
- Subject: Bringing back hanging
-
- In a recent UKTeX, R.A. Reese has two questions.
-
- First, he attempts to make every paragraph a hanging paragraph by executing
-
- \everypar{\hang}
-
- This works fine until he starts a paragraph with a font shift:
-
- This paragraph has hanging indentation.
-
- {\bf This} paragraph should be similar to the first, but it is not;
- it does not have hanging indentation.
-
- What is going on is quite simple. Let's look at the first paragraph. TeX is
- in vertical mode when it reaches the "T". Since a <letter> is "incompatible
- with vertical mode" (ref. the TeXbook, page 283). TeX responds by effectively
- performing an \indent command before returning to deal with the "T". The
- \indent command (a) inserts \parskip glue (in most cases, see page 282 for
- details); (b) enters unrestricted horizontal mode; (c) adds an empty hbox of
- width \parindent to the new horizonal list; (d) inserts the \everypar tokens
- into the input stream, where they will be seen before the still-waiting "T";
- (e) exercises the page builder. When the page builder is finished, the tokens
- from \everypar are read, in this case setting \hangindent. Eventually, we
- reach the end of the paragraph. It is set indented (since \hangindent is set)
- and \hangindent is reset to 0pt.
-
- Now consider the second paragraph. We start out in vertical mode again. The
- first thing we see is "{". TeX starts a new group, and remains in vertical
- mode. Next, we see \bf. TeX expands this, changing the current font; it is
- still in vertical mode, since nothing in the expansion of \bf should cause
- it to change. Finally, it sees the "T", and goes through the same five steps
- as previously. \hangindent is set as before, and "This" is typeset in bold-
- face. Now we reach "}". This ends the group. As part of ending the group,
- the previous value of \hangindent (0pt) is restored. When we eventually
- reach the end of the paragraph, the value of \hangindent set by the \everypar
- is long gone, and it is the value THEN that determines how the paragraph
- should be typeset.
-
- This kind of thing is a recurring problem with the \everypar mechanism: It's
- always essential to remember that the \everypar tokens may be interpreted
- within a group - in fact, within arbitrarily many groups, since the input
- could have been:
-
- {{{\bf This}}} is strange by legal.
-
- One way to get around this is to use \global\hang. (This works because \hang
- is just \hangindent\parindent, so the \global applies to the stuff "inside"
- with no problem. Admittedly, as a general practice such reliance on what a
- macro translates to is a bad idea - much better to use:
-
- \everypar{\global\hangindent\parindent}
-
- which works as well but is independent of the innards of \hang.)
-
- The only other fix requires an explicit \indent or \noindent at the beginning
- of paragraphs that start with "{".
-
- In a second question (which, as we've seen, is actually closely related to the
- first), Mr. Reese comments that:
-
- ...Scoping is fine but TeX's rules are not the same as proper scoping
- in an algorithmic language. If you "declare a variable" it stays in
- scope for all inferior blocks unless the name has been reused. TeX is
- following the Fortran tradition here where variables are implicitly
- local unless made global...
-
- Well, no. There have been two general kinds of scoping rules used in program-
- ming languages, static (lexical) scoping and dynamic scoping. ALGOL 60 and
- languages derived from it use lexical scoping. LISP, APL, and SNOBOL are
- examples of languages that use dynamic scoping. Lexical scoping has tradi-
- tionally been associated with compilers. Dynamic scoping has traditionally
- been associated with interpreters. (This distinction has broken down to a
- degree with lexically-scoped LISP's, such as SCHEME.)
-
- Macro languages are almost always dynamically scoped. In addition, they often
- do not require variables to be declared before they are used. To accomodate
- this, many use a variation on dynamic scoping in which a new scope for a
- variable is begun when it is re-defined within a group. This allows both
- for nesting of definitions and for the import of definitions from surrounding
- groups.
-
- TeX follows this approach. See any good programming language text for a
- discussion of the tradeoffs between static and dynamic scoping; the choice is
- by no means black and white. For a language like C, where the definitions of
- functions cannot be nested in other functions, a simple stack is sufficient to
- implement static scoping. For PASCAL, one has to be a bit more clever. For
- SCHEME, where functions can be defined on the fly, static scoping requires
- the use of closures, a complex matter. Stacks alone won't do. In TeX, where
- macros can define other macros, the same would apply. Further, pure static
- scoping, even after buying in to closures, would have made some other things
- we are used to doing in TeX quite difficult.
-
- Knuth's choice of context style was not arbitrary, nor was it "wrong". It
- simply made a different set of tradeoffs than others might want to make. On
- the other hand, knowing the level of Knuth's work, it made the tradeoffs
- knowingly.
- -- Jerry
-
- ------------------------------
-
- Date: 16 Nov 92 13:58:00 +0000
- From: M.Piff@uk.ac.sheffield
- Subject: re: Bring back hanging
-
- R A Reese asks:
-
- % Question - what causes the following command to not operate?
- % From a quick reading of the TeXbook, I'd call it a bug - there's no
- % reason for the begin-group to affect the change to horizontal mode.
-
- \everypar{\hang}
-
- This paragraph is a hanging paragraph. Each line after the first is
- set in by the parindent. Since I didn't change the default, so is the
- first line. In other words it's a rectangle.
-
- {\bf This} paragraph should be similar to the first, but it is not.
- For some reason I don't understand, starting the paragraph with a
- brace has stopped the everypar working. So this comes out as a
- standard paragraph, first line indented, rest flush with left margin.
- If I just put the font-change command at the start, not in a group,
- the paragraph hangs again.
-
- This {\bf paragraph} does come out hanging, similar to the first. So
- it is the group character at the point of switching to
- horizontal mode that causes the problem. Can anyone explain?
-
- \bye
-
-
- Consider the following:
-
-
- \everypar{\hang}\tracingrestores=10
- {a}
- \bye
-
- \TeX\ only enters horizontal mode when it reads the ``a'', within the group.
- Thus "\hang" is only executed within that group, and its effect is
- forgotten by the time \TeX\ breaks the paragraph up into lines.
-
- Look at the LOG file:
-
- This is emTeX, Version 3.14 [3c-beta5] (preloaded format=plain 92.3.30) 16 NOV
- 1992 13:49
- **reese
- (reese.tex{restoring \hangindent=0.0pt} %%%<--------------------
- {restoring \dimen0=0.0pt}
- {restoring \boxmaxdepth=16383.99998pt}
- {restoring current font=\tenrm}
- {restoring \baselineskip=12.0pt}
- [1] )
- Output written on reese.dvi (1 page, 208 bytes).
-
- I expect some would say this is a silly design decision in \TeX.
-
- Mike Piff
- Dr M J Piff JANET:
- Department of Pure Mathematics pm1mjp%hicks1.shef@sunc.shef.ac.uk
- University of Sheffield M.Piff@pa.shef.ac.uk
- Hicks Building
- Hounsfield Road
- SHEFFIELD S3 7RH Telephone: SHEFFIELD (0742) 768555
- England Ext. 4431
-
- ------------------------------
-
- Date: Mon, 16 Nov 92 14:35:40 +0000
- From: Philip Taylor (RHBNC) <P.Taylor@uk.ac.rhbnc.vax>
- Subject: RE: Bring back hanging
-
- >% Question - what causes the following command to not operate?
- >% From a quick reading of the TeXbook, I'd call it a bug - there's no
- >% reason for the begin-group to affect the change to horizontal mode.
- >
- >\everypar{\hang}
-
- <etc>
-
- >{\bf This} paragraph should be similar to the first, but it is not.
- >For some reason I don't understand, starting the paragraph with a
- >brace has stopped the everypar working. So this comes out as a
- >standard paragraph, first line indented, rest flush with left margin.
- >If I just put the font-change command at the start, not in a group,
- >the paragraph hangs again.
-
- On the contrary, \everypar is working perfectly. It is setting
- the values associated with \hang, and it is setting them within the
- group started by the open brace of {\bf ...}. On leaving the group,
- the values are restored to those of the status ante bellum.
- When the paragraph finally ends, and is set according to its current
- parameters, TeX has no recollection whatsoever that, for a short period,
- those values had changed.
-
- Philip Taylor, RHBNC.
-
- ------------------------------
-
- Date: Mon, 16 Nov 92 14:00:48 +0000
- From: Jeremy Henty <jch@upper.ist.co.uk>
- Subject: Re: Bring Back hanging
-
-
- R.A.Reese writes:
-
- |% Question - what causes the following command to not operate?
- |% From a quick reading of the TeXbook, I'd call it a bug - there's no
- |% reason for the begin-group to affect the change to horizontal mode.
- |
- |\everypar{\hang}
- |
- |This paragraph is a hanging paragraph. Each line after the first is
- |set in by the parindent. Since I didn't change the default, so is the
- |first line. In other words it's a rectangle.
- |
- |{\bf This} paragraph should be similar to the first, but it is not.
- |For some reason I don't understand, starting the paragraph with a
- |brace has stopped the everypar working. So this comes out as a
- |standard paragraph, first line indented, rest flush with left margin.
- |If I just put the font-change command at the start, not in a group,
- |the paragraph hangs again.
- |
- |This {\bf paragraph} does come out hanging, similar to the first. So
- |it is the group character at the point of switching to
- |horizontal mode that causes the problem. Can anyone explain?
- |
- |\bye
- |
- |(R.) Allan Reese
-
- This is not a bug, what is happening is this:
-
- When processing ordinary text, TeX does not enter horizontal mode
- until it encounters a letter. In your troublesome paragraph,
- the first letter is inside a group, so the \everypar instruction
- is executed *inside* this group. When the group ends, all local
- assignments are undone, and the \everypar instruction is forgotten.
-
- The solution is to type
-
- \indent {\bf This} paragraph ...
-
- because \indent forces TeX into horizontal mode (and gets the \everypar
- instruction executed) *outside* the group.
-
- Jeremy C. Henty
-
- ------------------------------
-
- Date: Mon, 16 Nov 92 16:54:40 +0000
- From: SYSMGR@uk.ac.kcl.ph.ipg
- Subject: TeX variable scope rules (was: another gem)
-
- Allan Reese wrote to point out that when
-
- > you "declare a variable" it stays in scope for all inferior blocks unless
- > the name has been reused.
-
- TeX's variable scope rules are shared by several other interpreted languages,
- such as DCL (the command language on the VAX I'm using). This possibility arise
- s
- naturally whenever one has a language in which declarations are executable
- statements that can be conditionally executed or not at various levels of
- recursion. It can't happen in a compiled language like C, because a program
- can't choose to conditionally execute a declaration.
-
- Is it worth discussing? Well, it can't be changed, because if it was the
- result wouldn't be TeX any more. If its a common gotcha, then doubtless
- raising it will help someone.
-
- Yours,
- Nigel Arnot
-
- NRA%ipg.ph.kcl.ac.uk@nsfnet-relay.ac.uk (internet)
- NRA%uk.ac.kcl.ph.ipg@ukacrl.bitnet (bitnet)
-
- ------------------------------
-
- Date: Thu, 19 Nov 92 11:33:05 +0000
- From: vdm@le.ac.uk
- Subject: Double-sided printing and page-imposition in LaTeX
-
- A query for (La)TeX experts:
-
- Does anyone have modifications to the standard LateX twoside.sty macros for
- printing documents on a laser printer that does double sided printing. The
- problem is as follows: the document is large and is printed using
- \includeonly{...}. With twosided.sty LaTeX generates the extra pages needed
- to finish off the previous chapter correctly so that the next chapter
- starts correctly on an odd page (which is what I want). However the extra
- page goes on the front surface when printing out the chapter and the odd
- page goes on the back WHICH IS NOT WHAT I WANT. For those supplying solutions
-
- 1. I don't wish to fiddle with DVIDVI DVIPS etc - I feel LaTeX should do
- the work.
-
- 2. The document cannot be printed at one go (each chapter uses a different
- set of incompatible macros).
-
- A solution which solves (2) would also be interesting/ welcome!.
-
- A futher little challenge: I wish to print out a double sided A5 booklet
- using the above laser printer - the idea is to print 4 A5 pages per
- A4 sheet and just fold the result in half. There are two problems:
-
- 1. How can dvidvi be made to produce the right re-arrangement.
-
- 2. The laser printer prints the back two pages on an A4 sheet upside down!
-
- Please note that the printer is remote and belongs to the Computer Center
- so cannot be fiddled with!
-
- Many thanks in advance to suppliers of solutions.
-
-
- From: Derek Andrews
- Email: JANET : derek@mcs.le.ac.uk
- Smail: Department of Mathematics and Computer Science
- University of Leicester
- University Road
- Leicester
- LE1 7RH
- UK
- Tel: (+44) 533 523401
- Fax: (+44) 533 523604
-
- ------------------------------
-
- UK TeX ARCHIVE at ASTON UNIVERSITY
- >>> UK.AC.TEX <<<
-
- *** Interactive and file transfer access ***
- JANET: Host: uk.ac.tex, Username: public, Password: public
- (DTE 000020120091)
- Internet: host tex.ac.uk [134.151.40.18]
- For telnet access, login: public, password: public
- For anonymous ftp, login: anonymous, password: <your-e-mail-address>
-
- *** Mail server ***
- Send mail to TeXserver@uk.ac.tex (JANET)
- or TeXserver@tex.ac.uk (rest of the world)
- with message body containing the word HELP
-
- \section FILES OF INTEREST
-
- [tex-archive]00readme.txt
- [tex-archive]00directory.list [tex-archive]00directory.size
- [tex-archive]00directory_dates.list [tex-archive]00last30days.files
- [tex-archive.doc]TeX-FAQ.txt (Frequently Asked Questions list)
- [tex-archive.doc]FAQ-Supplement-*.txt (FAQ supplement)
-
- \section DIGESTS
-
- This year's UKTeX back issues are stored in the archive in directory
- [tex-archive.digests.uktex.92]
- This year's TeXhax back issues are stored in the archive in directory
- [tex-archive.digests.texhax.92]
- Latest TeXhax: V92 #20
- TeXMaG back issues are stored in the archive in directory
- [tex-archive.digests.tex-mag]
- Latest TeXMaG: V5N3
-
- \section MEDIA DISTRIBUTIONS
- Postal addresses are given below.
-
- \subsection Washington Unix TeX distribution tape
- Latest copy of May/June 1991 contains:
- TeX 3.14, LaTeX 2.09, Metafont 2.7, plus many utilities
- suitable for Unix 4.2/4.3BSD & System V
- tar format, 1600bpi, blockfactor 20, 1 file (36Mb)
-
- Copies available on:
- One 2400ft 0.5" tape sent to Aston with return labels AND return postage
- OR
- One Quarter-Inch Cartridge, QIC-120 or QIC-150 format (DC600A or DC6150)
- sent with envelope AND stamps for return postage to Nottingham
- (Due to currency exchange, this service is offered only within the UK)
-
- \subsection VMS tapes
- VMS backup of the archive requires three 2400ft tapes at 6250bpi.
- VMS backup of TeX 2.991 plus PSprint requires one 2400ft tape.
-
- \subsection Exabyte 8mm tapes
- Same contents available as 0.5" tapes.
- Following tape types available: SONY Video 8 cassette P5 90MP,
- MAXELL Video 8 cassette P5-90, TDK Video 8 cassette P5-90MPB
-
- \section TeX IMPLEMENTATIONS FOR SMALL COMPUTERS
-
- \subsection OzTeX V1.4 (for Macintosh)
- Send 7 UNFORMATTED 800K disks to Aston with return postage.
-
- \subsection emTeX (for OS/2, PC-DOS and MS-DOS)
- The complete package (3.5" High density disk format ONLY)
- is available from Aston at a cost of 15 pounds sterling,
- including documentation, disks, post and packing (DO NOT SEND DISKS):
- specify Set A.
- Additional utilities including DVIPS, 5 pounds sterling: specify Set B.
- FLI files for FX, 5 pounds sterling: specify Set C.
- FLI files for P6M, 5 pounds sterling: specify Set D.
-
- For general enquiries, and a free catalogue detailing other disk
- formats, precompiled fonts and lots of other goodies, contact:
- Eigen PD Software, P.O. Box 722, Swindon SN2 6YB (tel: 0793-611270)
- (JANET e-mail address: kellett@uk.ac.cran.rmcs)
-
- \subsection TeX for the Atari ST
- All enquiries for disks etc. should be directed to:
- The South West Software Library, P.O. Box 562, Wimborne, Dorset BH21 2YD
- (JANET e-mail address: mdryden@uk.co.compulink.cix)
-
- \section POSTAGE RATES
- All prices in Pounds Sterling.
- For Aston orders, make cheques payable to Aston University.
-
- 0.5" tapes: UK: 2.50 (one tape), 5.00 (two tapes).
- Europe: 5.00 (one tape), 9.00 (two tapes).
- Outside Europe please enquire.
- 8mm tapes:
- UK: 1.00, Europe: 2.00.
- Quarter-inch cartridges:
- UK: 1.00, Europe: 2.00.
- Diskettes:
- Quantity/Size Europe World UK 1st UK 2nd
- 18/3.5" 3.10 5.10 1.40 1.10
- 11/3.5" 1.80 2.90 0.80 0.65
- 18/5.25" 1.20 2.00 0.60 0.50
- 11/5.25" 0.80 1.30 0.50 0.35
-
- \section POSTAL ADDRESSES
- Please include SELF-ADDRESSED ADHESIVE LABELS for return postage.
-
- Peter Abbott
- Information Systems, Aston University, Aston Triangle, Birmingham B4 7ET
-
- David Osborne
- Cripps Computing Centre, University of Nottingham, Nottingham NG7 2RD
- (for Quarter-inch cartridges ONLY -- must include stamps for return postage)
-
- \section UK TeX USERS GROUP
-
- For details, contact:
- David Penfold, Edgerton Publishing Services,
- 30 Edgerton Road, Edgerton, Huddersfield HD3 3AD (tel: 0484 519462)
- or E McNeil-Sinclair, fax: 0272 236169
- \bye
-
- End of UKTeX Digest [Volume 92 Issue 43]
- ****************************************
-