TeXhax@cs.washington.edu (TeXhax Digest) (01/04/89)
TeXhax Digest Saturday, December 31, 1988 Volume 88 : Issue 111
Moderators: Tiina Modisett and Pierre MacKay
%%% The TeXhax digest is brought to you as a service of the TeX Users Group %%%
%%% in cooperation with the UnixTeX distribution service at the %%%
%%% University of Washington %%%
Today's Topics:
Tabs in LaTeX
refer(troff)-to-BibTeX filter wanted
Answer to Changebar query(TeXhax 88 #108)
Assorted questions about problems with LaTeX
Looking for a good book on typography
------------------------------------------------------------------------------
Date: Tue, 20 Dec 88 09:40:11 EST
From: lang@PRC.Unisys.COM
Subject: Tabs in LaTeX
Keywords: LaTeX tabular
When I want to include in a LaTeX document a fragment of code
that I've already written, I almost always just stick it inside
a verbatim environment, e.g.,
\begin{verbatim}
This is the code that I want to set.
\end{verbatim}
However, I invariably run into a problem because when I write code,
I use the tab key (control-i) to do indentation, and LaTeX treats
the tab character just like a blank space, I think.
Is there a non-hideous way to modify the definition of verbatim
or to do something else that will allow the tab character to generate,
say, 8 spaces in a LaTeX document?
Many thanks.
Francois-Michel Lang
Paoli Research Center, Unisys Corporation lang@prc.unisys.com (215) 648-7256
Dept of Comp & Info Science, U of PA lang@cis.upenn.edu (215) 898-9511
-----------------------------------------------------------------------
Date: Mon, 19 Dec 88 23:48:22 EST
From: elster@svax.cs.cornell.edu (Anne C. Elster)
Subject: refer(troff)-to-BibTeX filter wanted
Keywords: BibTeX
I have a rather large "refer" (troff) database that
I would like to convert to BibTeX as effortlessly as possible.
Anyone know of any filters written?
Anne C. Elster anne@CRNLEE.BITNET,
School of Electrical Engineering elster@cs.cornell.edu, or
Cornell University na.elster@na-net.stanford.edu
-----------------------------------------------------------------------
Date: 18 Dec 88 16:15
From: klerk%ijsapl.DEC@decwrl.dec.com (Theo de Klerk DTN 7838-2737 @UTO or KLERK@IJSAPL.DEC.COM)
Subject: Answer to Changebar query(TeXhax 88 #108)
In TeXHaX 88-108 Mark Eichin asked for a LaTeX environment allowing
to use changebars. Underneath is a STY file that has been used
successfully at our site for a long time. Usage described in comment
header.
Theo de Klerk
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% CHANGEBAR STYLE
%
% Written by:
% Michael Fine
% Distributed Systems Architecture.
% October, 1986.
%
% Revisions:
% Support for twosided.sty added. January, 1987.
%
% Warning message added to indicate that another pass is
% required. May, 1987.
%
%
% USAGE:
%
% \cbstart[dimension]
% \cbend
% All material between the two macros is barred. Nested
% changebars are allowed. The optional parameter specifies the
% width of the bar. If no width is specified, the current value
% of the parameter \changebarwidth is used. Note that \cbstart
% and \cbend can be used anywhere but must be correctly nested
% with floats and footnotes. That is, you cannot have one end of
% the bar inside a floating insertion and the other outside, but
% that would be a meaningless thing to do anyhow.
%
% \setlength{\changebarwidth}{dimension}
% Sets the default width of the bar.
%
% \setlength{\changebarsep}{dimension}
% Sets the separation between the bar and the left margin of the
% text.
%
% IMPORTANT NOTE: Just as with cross references and labels, you
% usually need to process the document twice (and sometimes three
% times) to ensure that the changebars come out correctly. However, a
% warning will be given if another pass is required.
%
%
% PARAMETERS:
%
% \changebarwidth
% A LaTeX length parameter that gives the bar width. It can be
% changed with the \setlength command. Changing its value affects
% all subsequent changebars subject to the scoping rules of
% \setlength.
%
% \changebarsep
% A LaTeX length parameter that gives the separation of the bar
% from the left margin of the text. It can be set with the
% \setlength command.
%
%
%
% FEATURES:
%
% Changebars may be nested within each other. Each level of
% nesting can be given a different thickness bar.
%
% Changebars may be nested in other environments including floats
% and footnotes.
%
% Changebars are applied to all the material within the ``barred''
% environment, including floating bodies regardless of where the
% floats float to. An exeception to this is margin floats.
%
% Changebars may cross page boundaries.
%
%
% DEFICIENCIES AND BUGS:
%
% The macros blindly use specials points \cb@minpoint through
% \cb@maxpoint. If this conflicts with another set of macros, the
% results will be unpredictable. (What is really needed is a
% \newspecialpoint, analogous to \newcount etc.)
%
% There is a limit of (\cb@maxpoint-\cb@minpoint+1)/4 bars per
% page (four special points per bar). Using more than this number
% yeilds unpredictable results (but that could be called a feature
% for a page with so many bars). This limitation could be
% increased if desired
%
% Internal macro names are all of the form \@cbxxxx. No checking
% for conflicts with other macros is done.
%
% This implementation has not been designed for two column
% printing.
%
% The algorithms may fail if a floating insertion is split over
% multiple pages. In LaTeX floats are not split but footnotes may
% be. The simplest fix to this is to prevent footnotes from being
% split but this may make TeX very unhappy.
%
% The \cbend normally gets "attached" to the token after it rather
% than the one before it. This may lead to a longer bar than
% intended. For example, consider the sequence `word1 \cbend
% word2'. If there is a line break between `word1' and `word2'
% the bar will incorrectly be extended an extra line. This
% particular case can be fixed with the incantation `word1\cbend{}
% word2'.
%
%
% BASIC ALGORITHM
%
% The changebars are implemented using the \specials of the DVI to
% LN3 translator. In essence, the start of changebar defines a
% \special point in the margin at the current vertical position on
% the page. The end of a changebar defines another point and then
% joins the two using the "connect" \special.
%
% This works fine as long as the two points being connected lie on
% the same page. However, if they don't, the bar must be
% artificially terminated at the page break and restarted at the
% top of the next page. The only way to do this (that I can think
% of) is to modify the output routine so that it checks if any bar
% is in progress when it ships out a page and, if so, adds the
% necessary artificial end and begin.
%
% The obvious way to indicate to the output routine that a bar is
% in progress is to set a flag when the bar is begun and to unset
% this flag when the bar is ended. This works most of the time
% but, because of the asynchronous behavior of the output routine,
% errors occur if the bar begins or ends near a page break. To
% illustrate, consider the following scenerio.
%
% blah blah blah % page n
% blah blah blah
% \cbstart % this does its thing and set the flag
% more blah
% <-------------- pagebreak occurs here
% more blah
% \cbend % does its thing and unsets flag
% blah blah
%
% Since TeX process ahead of the page break before invoking the
% output routine, it is possible that the \cbend is
% processed, and the flag unset, before the output routine is
% called. If this happens, the necessary artificial end and begin
% will not be added to page n and n+1, respectively. Thus, it is
% not possible to use a flag to signal the output routine that a
% bar crosses a page break, and some other mechanism is required.
%
% The method used with these macros is to create a list of the
% beginning and end points of each bar in the document together
% with the page number corresponding to each point. Then, as a
% page is completed, a modified output routine checks the list to
% determine if any bars begun on or before the current page are
% terminated on subsequent pages, and handles those bars
% appropriately. To build the list, information about each
% changebar is written to the .AUX file as bars are processed.
% This information is re-read when the document is next processed.
% Thus, to ensure that changebars are correct, the document must
% be processed twice, but this is required for LaTeX anyway.
%
% This apprach is sufficiently general to allow nested bars, bars
% in floating insertions, and bars around floating insertions.
% Bars inside floats and footnotes are handled in the same way as
% bars in regular text. Bars that encompass floats or footnotes
% are handled by creating an additional bar that floats with the
% floating material. Modifications to the appropriate LaTeX
% macros check for this condition and add the extra bar.
%
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% User Level Commands And Parameters
%
%
%
% \cbstart \cbend
%
% Start and end a changebar and save state on \cb@currentlist. Width of
% new bar is determined by adding \changebarwidth to width of current
% bar. Does not invoke a LaTeX environment.
%
\def\cbstart{\@ifnextchar [{\cb@xstart}{\cb@start\changebarwidth}}
\def\cb@xstart[#1]{\cb@start{#1}}
\def\cbend{\if e\cb@currentlist
\message{Badly nested changebars. Expect erroneous results.}\else
\cb@end\fi}
%
% \begin{changebar} \end{changebar}
%
% Identical to \cbstart and \cbend but invokes a LaTeX environment to
% enforce correct nesting. Cannot be used in tabular and tabbing
% environments.
%
%\newenvironment{changebar}{\@bsphack\cbstart\@esphack}{\@bsphack
% \cbend\@esphack}
%
% \changebarwidth
%
% A LaTeX length parameter that gives the bar width. Width of bar is
% given by \changebarwidth multiplied by nesting level.
%
\newlength{\changebarwidth}
\setlength{\changebarwidth}{2pt}
%
% \changebarsep
%
% A LaTeX length parameter that gives the separation of the bar from the
% left margin of the text.
%
\newlength{\changebarsep}
\setlength{\changebarsep}{30pt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Declarations And Initializations
%
%
\let\cb@ig=\ignorespaces %useful abreviation
\def\cb@maxpoint{80} % max value of used special points
\def\cb@minpoint{1} % ditto for min;
% MUST BE ODD ****
\def\cb@nil{0} % a void value for points
\newcount\cb@nextpoint % next value of special point to use
\newcount\cb@currentpoint % current value in use
\cb@nextpoint=\cb@minpoint % intially = \cb@minpoint
\newcount\cb@page % count for page value from hist list
\newcount\cb@pagecount % our internal count of pages output
\cb@pagecount=0 % initially 0 due to timing of increment
\xdef\cb@history{e} % the history list; initially empty
\xdef\cb@spanlist{e} % list of bars spanning current page
\xdef\cb@currentlist{e} % used to implement nesting without using
% TeX grouping
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Macros for beginning and ending bars
%
%
%
% \cb@start#1 #1 is the dimension of the bar
%
% This macro is used to start a change bar. It assigns a new value to
% the current point and advances the counter for the next point to be
% assigned. It pushes this info onto \cb@currentlist and then sets the
% point by calling \cb@setBeginPoint with the point number. Finally, it
% writes the aux file.
%
\def\cb@start#1{\cb@currentpoint=\cb@nextpoint
\@tempdima=#1\cb@ig % for \cb@push
\cb@push\cb@currentlist
\ifvmode \cb@setBeginPoint\cb@currentpoint
\else \vbox to 0pt{\vskip -\ht\strutbox %jump up a line to
\cb@setBeginPoint\cb@currentpoint %set point
\vskip \ht\strutbox}\fi
\cb@writeAux\cb@advancePoint}
\def\cb@advancePoint{\global\advance\cb@nextpoint by 4\cb@ig
\ifnum\cb@nextpoint>\cb@maxpoint
\global\cb@nextpoint=\cb@minpoint\relax\fi}
%
% \cb@end
%
% This macro is used to end a changebar. It pops the current point and
% nesting level off \cb@currentlist and sets the end point by calling
% \cb@setEndPoint with the parameter corresponding to the BEGINNING
% point number. It writes the aux file and joins the points.
%
\def\cb@end{\cb@pop\cb@currentlist
\cb@setEndPoint\cb@currentpoint
\advance\cb@currentpoint by1\cb@writeAux}
%
% \cb@setBeginPoint#1
%
% Assigns position to points #1 and #1+2. First computes the position.
%
\def\cb@setBeginPoint#1{\@tempdimb=\hoffset
\advance\@tempdimb by\oddsidemargin
\advance\@tempdimb by -\changebarsep
\special{ln03:defpoint \the#1(\the\@tempdimb,)}\cb@ig
\@tempcnta#1\advance\@tempcnta by2\@tempdimb=\hoffset
\advance\@tempdimb by\evensidemargin
\advance\@tempdimb by\textwidth
\advance\@tempdimb by\changebarsep
\special{ln03:defpoint \the\@tempcnta(\the\@tempdimb,)}}
%
% \cb@setEndPoint#1
%
% Assigns position to point #1+1 and point #1+3. Then does a connect
% special to join #1 and #1+1 or to join #1+2 and #1+3. Assumes that
% width of bar is given in \@tempdima
%
\def\cb@setEndPoint#1{\@tempcnta=#1\advance\@tempcnta by1\cb@ig
\@tempdimb=\hoffset
\advance\@tempdimb by\oddsidemargin
\advance\@tempdimb by -\changebarsep
\special{ln03:defpoint \the\@tempcnta\space
\space(\the\@tempdimb,)}\if@twoside\@tempcntb=#1
\advance\@tempcntb by3\@tempdimb=\hoffset
\advance\@tempdimb by\evensidemargin
\advance\@tempdimb by\textwidth
\advance\@tempdimb by\changebarsep
\special{ln03:defpoint \the\@tempcntb\space
\space(\the\@tempdimb,)}\cb@ig
{\count9=#1\advance\count9 by2\cb@ig
\special{ln03:connect \the#1/\the\count9\space\space
\the\@tempcnta/\the\@tempcntb\space\space\the\@tempdima}}\else
\special{ln03:connect \the#1 \the\@tempcnta\space\space
\the\@tempdima}\fi}
%
% \cb@writeAux
%
% Writes the string
% \cb@barpoint{\cb@currentpoint}{\thepage}{\cb@tempdima} to the aux
% file. Assumes that width of bar is in \@tempdima.
%
\def\cb@writeAux{\begingroup \edef\point{\the\cb@currentpoint}\cb@ig
\edef\level{\the\@tempdima}\cb@ig
\let\the=0\edef\cb@temp{\write\@auxout
{\string\cb@barpoint{\point}{\the\cb@pagecount}{\level}}}\cb@ig
\cb@temp\endgroup}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Macros for Making It Work Across Page Breaks
%
%
% \@makecol
%
% Modifies the LaTex macros to end the changebars spanning the current
% page (if any) and restart them on the next page. Does the
% following: It resets special points for this page. Adds begin bars
% to top of box255. The bars to be begun are saved in \cb@beginSaves.
% Increments the changebar-internal page counter so that the value
% corresponds to the number of this page in strictly sequential order
% (the LaTeX page number can be reset). Then it builds the list
% \cb@spanlist, then calls \cb@processActive to process the elements
% on the list, then it executes the original \@makecol.
%
\let\cb@makecol=\@makecol
\def\@makecol{\setbox255=\vbox{\special{ln03:resetpoints \cb@minpoint
\space\cb@maxpoint}\cb@beginSaves\unvbox255}\cb@ig
\gdef\cb@beginSaves{}\global\advance
\cb@pagecount by 1\cb@buildActive
\cb@processActive\cb@makecol}
%
% \cb@processActive
%
% Processes each element on span list. Each element represents a bar
% that crosses the page break. There could be more than one if bars are
% nested. Works as folows:
%
% pop top element of span list
% if point null (i.e., list empty) then done
% else
% do an end bar on box255
% save start for new bar at top of next page in \cb@startSaves
% push active point back onto history list (need to reprocess
% on next page).
%
\def\cb@processActive{\cb@pop\cb@spanlist
\ifnum\cb@currentpoint=\cb@nil \else
\setbox255=\vbox{\unvbox255\cb@setEndPoint\cb@currentpoint}\cb@ig
\cb@saveBeginPoint\cb@currentpoint \cb@push\cb@history
\cb@processActive\fi}
%
% \cb@saveBeginPoint#1
%
% Saves a \special to begin a point in expanded macro \cb@beginSaves.
% This is then used to start all spanning bars at the top of the next
% page. It is almost the same as \cb@setBeginPoint
%
\def\cb@saveBeginPoint#1{\@tempdimb=\hoffset
\advance\@tempdimb by\oddsidemargin
\advance\@tempdimb by -\changebarsep
\xdef\cb@beginSaves{\special{ln03:defpoint \the#1(\the
\@tempdimb,)}\cb@beginSaves}
\@tempcnta#1\advance\@tempcnta by2\@tempdimb=\hoffset
\advance\@tempdimb by\evensidemargin
\advance\@tempdimb by\textwidth
\advance\@tempdimb by\changebarsep
\xdef\cb@beginSaves{\special{ln03:defpoint \the\@tempcnta(\the
\@tempdimb,)}\cb@beginSaves}}
\def\cb@beginSaves{} % initially empty
%
% \cb@buildActive
%
% Initializes the spanlist to null. Pops top of history list. If point
% is on future page, push back onto history list. If point on current
% or previous page and odd, add point to span list; if even, pop span
% list since this bar has terminated on current page.
%
\def\cb@buildActive{\xdef\cb@spanlist{e}\cb@pushNextActive}
\def\cb@pushNextActive{\cb@pop\cb@history
\ifnum\cb@currentpoint=\cb@nil \else
\ifnum\cb@page>\cb@pagecount \cb@push\cb@history \else
\ifodd\cb@currentpoint \cb@push\cb@spanlist
\else \cb@pop\cb@spanlist\fi
\cb@pushNextActive\fi\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Macros For Managing The Lists of Bar points
%
% The macros make use of three lists corresponding to \special
% defpoints. Each list takes the form
% <element> . . . <element>e
%
% Each element is of the form xxxnyyypzzzl where xxx is the number of
% the special point, yyy is the page on which this point is set, and zzz
% is the dimension used when connecting this point.
%
% The list \cb@history is built from the log information and initially
% lists all the points. As pages are processed, points are popped off
% the list and discarded.
%
% The list \cb@spanlist is a temporary list used by the output routine
% and contains the list of all bars crossing the current page (there may
% be more than one with nested bars). It is built by popping elements
% off the history list.
%
% The list \cb@currentlist contains all the current bars. A \cb@start
% pushes an element onto this list. A \cb@end pops the top element off
% the list and uses the info to terminate the bar.
%
%
% \cb@pop#1 #1 is name of list (e.g., \cb@history)
%
% This pops the top element off the named list and puts the point value
% into \cb@currentpoint, the page value into \cb@page and the bar width
% into \@tempdima. If the list is empty, returns a void value (\cb@nil)
% in \cb@currentpoint and sets \cb@page=0
%
\def\cb@pop#1{\if e#1\cb@currentpoint=\cb@nil\cb@page=0\else
\expandafter\cb@carcdr#1#1\fi}
\def\cb@carcdr#1n#2p#3l#4e#5{\cb@currentpoint=#1\cb@page=#2\@tempdima=#3\cb@ig
\xdef#5{#4e}}
%
% \cb@push#1
%
% Pushes \cb@currentpoint, \cb@page and \@tempdima onto the top of the
% named list
%
\def\cb@push#1{\xdef#1{\the\cb@currentpoint n\the\cb@page p\the\@tempdima l#1}}
%
% \cb@backpush#1#2#3
%
% Pushes #1 #2 and #3 onto the BACK of the history list. #1 is the
% point value, #2 the page, and #3 the bar width. This is used for
% initializing the history list from the data in tha .AUX file.
%
\def\cb@backpush#1#2#3{\expandafter\cb@append\cb@history#1n#2p#3l}
\def\cb@append#1e#2n#3p#4l{\xdef\cb@history{#1#2n#3p#4le}}
\let\cb@barpoint=\cb@backpush % all we do is push aux entries onto back
% of history list
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Macros For Checking That The .AUX File Is Stable
%
%
% \document
%
% This is a replacement for the LaTeX \document macro. The
% replacement makes a copy of the history list (which has just been
% built from the .AUX file) which is used to compare with the new .AUX
% file that will be created. It also \lets
% \cb@barpoint=\cb@checkHistory to prepare for checking the new .AUX
% file.
%
\let\cb@document=\document
\def\document{\cb@document\xdef\cb@prevHistory{\cb@history}\cb@ig
\let\cb@barpoint=\cb@checkHistory}
%
% \cb@checkHistory
%
% Pops the top of the original history list (\cb@prevHistory) and
% check to see if the point and page numbers are the same as the
% arguements #1 and #2 respectively. Prints a warning message if
% different.
%
\def\cb@checkHistory#1#2#3{\cb@pop\cb@prevHistory
\ifnum #1=\cb@currentpoint
\ifnum #2=\cb@page % do nothing
\else \cb@error % page numbers mismatched
\fi
\else \cb@error % point numbers mismatched
\fi}
\def\cb@error{\message{Changebar Warning: Changebar info has changed. %
Rerun to get right.}\gdef\cb@checkHistory##1##2##3{}\let\cb@barpoint=\cb@checkHistory}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Macros For Making It Work With Nested Floats/Footnotes
% Works for LaTeX 2.09
%
%
% \end@float
%
% This is a replacement for the Latex macro of the same name. All it
% does is check to see if changebars are active and, if so, it puts
% changebars around the box containing the float. Then it calls the
% original LaTeX \end@float
%
\let\cb@endfloat=\end@float
\def\end@float{\cb@pop\cb@currentlist\ifnum\cb@currentpoint=\cb@nil
\else \cb@push\cb@currentlist\global\@tempdima=\@tempdima \egroup \global\setbox
\@currbox=\vbox{\cb@start\@tempdima\unvbox\@currbox\cb@end}\bgroup\fi
\cb@endfloat}
\let\endfigure=\end@float % need to rebind these to new def
\let\endtable=\end@float
%
% \@footnotetext#1
%
% Replacement for the LaTeX macro of the same name. Simply checks to
% see if changebars are active and if so wraps the macro arguement
% (i.e., the footnote) in changebars.
%
\let\cb@footnote=\@footnotetext
\long\def\@footnotetext#1{\cb@pop\cb@currentlist\ifnum\cb@currentpoint=\cb@nil
\cb@footnote{#1}\else \cb@push\cb@currentlist
\edef\cb@temp{\the\@tempdima}\cb@ig
\cb@footnote{\cb@start{\cb@temp}#1\cb@end}\fi}
%
% \@mpfootnotetext#1
%
% Replacement for the LaTeX macro of the same name. Same thing as
% \@footnotetext.
%
\let\cb@mpfootnote=\@mpfootnotetext
\long\def\@mpfootnotetext#1{\cb@pop\cb@currentlist
\ifnum\cb@currentpoint=\cb@nil
\cb@mpfootnote{#1}\else \cb@push\cb@currentlist
\edef\cb@temp{\the\@tempdima}\cb@ig
\cb@mpfootnote{\cb@start{\cb@temp}#1\cb@end}\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
---------------------------------------------------------------------
Date: Tue, 20 Dec 88 11:05 EST
From: Jeffrey Mark Siskind <Qobi@ZERMATT.LCS.MIT.EDU>
Subject: Assorted questions about problems with LaTeX
Keywords: queries
Here are several assorted questions about problems I have had
with LaTeX. Any help on any of these would be appreciated.
1) When I include and underscore ``_'' in a verbatim environment
it prints out OK but when I try to print an underscore using
the \tt font it comes out funny. It is offset from where it should
be. I haven't tried it out using \verb but for various reasons,
I need to use \tt and can't get this to work. Why does this
happen and how do I fix this? In general, what are all the ways
that the output (not the input) differs between \tt, the verbatim
environment, and \verb?
2) When I try to print out ``<'' and ``>'' in the \it font, they
come out as a Spanish upsidedown exclamation mark and question
mark respectively. Is it supposed to happen this way? Why? How
can I get an italic ``<'' and ``>'' which is what I want. (Or
even better, the Eurepean style quotes << and >>.
3) In the tabbing environment several thing are not documented
in the LaTeX manual. First does \pushtabs and \poptabs save and
restore the value of left_margin_tab in additon to the tab stops
or does it just save and restore the tab stops. Second, how can
I clear the tab stop settings and reset the left_margin_tab?
What I am trying to do is to create an environment for Lisp code
fragments which allows the inclusion of math mode such that I can
set the indentation for successive groups of line. To do this I
need to be able to reset tab stops and the left_margin_tab.
4) Why is the width of em in \tt font twice the fixed width of any
character in that font. If I do something like:
{\tt foo\\\hspace*{1em}bar}
The bar gets indented two spaces rather than one. Now I can fix this
by defining a length \halfem which is what I do but this is annoying.
5) LaTeX \> will always tab to the next tab stop, even if that means
tabbing backwards. Sometimes this is not what I want. I want normal
behavior where it will tab to the next available tab stop. How can
I get this behavior?
Thanks ahead of time for answers to these questions,
Jeff
--------------------------------------------------------------------------
Date: Tue, 20 Dec 88 12:39:30 EST
From: borcherb@turing.cs.rpi.edu (Brian Borchers)
Subject: Looking for a good book on typography
Keywords: queries
Now that I'm back in graduate school, I find that quite a bit of my time
is spent producing documents. I'd like to find a good introductory book
on typography, text layout, and graphic design, in hopes of producing
better looking documents. Any recommendations?
-------------------------------------------------------------------------------
%%% The TeXhax digest is brought to you as a service of the TeX Users Group
%%% in cooperation with the UnixTeX distribution service at the
%%% University of Washington
%%%
%%% Concerning subscriptions, address changes, unsubscribing:
%%% BITNET: send a one-line mail message to LISTSERV@UWAVM.ACS.WASHINGTON.EDU
%%% SUBSCRIBE TEXHAX <your name> % to subscribe
%%% or UNSUBSCRIBE TEXHAX <your name>
%%%
%%% All others: send a similar one line mail message to
%%% TeXhax-request@cs.washington.edu
%%% Please be sure you send a valid internet address!!
%%% in the form name@domain or name%routing@domain
%%% and use the style of the Bitnet one-line message, so that
%%% we can find your subscription request easily.
%%%
%%% All submissions to: TeXhax@cs.washington.edu
%%%
%%% Back issues available for FTPing as:
%%% machine: directory: filename:
%%% JUNE.CS.WASHINGTON.EDU TeXhax/TeXhaxyy.nn
%%% yy = last two digits of current year
%%% nn = issue number
%%%
%%% For further information about TeX Users Group services and publications
%%% contact Karen at KLB@SEED.AMS.COM or write to TUG at
%%% TeX Users Group
%%% P.O. Box 9506
%%% Providence, R.I. 02940-9506
%%%
%%% Current versions of the software now in general distribution:
%%% TeX 2.93 metafont 1.5
%%% plain.tex 2.92 plain.mf 1.0
%%% LaTeX 2.09 (04/26/88) cmbase.mf see cm85.bug
%%% SliTeX 2.09 gftodvi 1.7
%%% tangle 2.8 gftopk 1.4
%%% weave 2.9 gftype 2.2
%%% dvitype 2.9 pktype 2.2
%%% pltotf 2.3 pktogf 1.0
%%% tftopl 2.5 mft 0.3
%%% BibTeX 0.99c
%%%\bye
%%%
End of TeXhax Digest
**************************
-------