DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T c

⟦20194ef0e⟧ TextFile

    Length: 21342 (0x535e)
    Types: TextFile
    Names: »chap4.tex«

Derivation

└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
    └─⟦c319c2751⟧ »unix3.0/TeX3.0.tar.Z« 
        └─⟦036c765ac⟧ 
            └─⟦this⟧ »TeX3.0/TeXcontrib/chemtex/chap4.tex« 
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
    └─⟦63303ae94⟧ »unix3.14/TeX3.14.tar.Z« 
        └─⟦c58930e5c⟧ 
            └─⟦this⟧ »TeX3.14/TeXcontrib/chemtex/chap4.tex« 

TextFile


  \documentstyle[12pt]{report}
  \nofiles                          
  \def\LATEX{\LaTeX}
  \let\TEX = \TeX               
  \setcounter{totalnumber}{4}   
  \setcounter{topnumber}{2}     
  \setcounter{bottomnumber}{2}
  \renewcommand{\topfraction}{.5}
  \renewcommand{\bottomfraction}{.5}
  \setlength{\oddsidemargin}{3.9cm}     %real measurement 1.5in
  \setlength{\textwidth}{5.7in}         %right margin is now 1in
  \setlength{\topmargin}{1cm}
  \setlength{\headheight}{.6cm}
  \setlength{\textheight}{8.5in}
  \setlength{\parindent}{1cm}
  \renewcommand{\baselinestretch}{1.5}
  \raggedbottom
  \input{init.tex}
  \input{six.tex}
  \input{cright.tex}
  \input{purine.tex}
  \begin {document}    
  \setcounter{page}{24}
  \setcounter{chapter}{4}
  \textfont1=\tenrm
  \initial
 
 \centerline{CHAPTER IV}
 \vspace{0.4cm}
 \centerline{MACROS FOR TYPESETTING CHEMICAL STRUCTURE FRAGMENTS}
 \vspace{0.4cm}
 \centerline{1. GENERAL ORGANIZATION OF A STRUCTURE MACRO}
 \vspace{0.4cm}
 The macro facility in TeX/LaTeX was used to define mnemonics for
 typesetting frequently occurring structure fragments such as 
 common ring structures and branching patterns. 
 Chapter VI describes the complete system of
 macros designed for this thesis. All of the macros
 are defined with the LaTeX declaration \verb+\+newcommand which
 has the format \\
 \centerline{$\backslash $newcommand\{$\backslash $commandname\}
 [n]\{replacement text\} .  }
 (TeX calls these definitions macros, whereas LaTeX just uses the
 more general word ``command.'')\ In the definition, n is an integer     
 from 1 to 9 and gives the number of arguments if any are used.
 The arguments are represented in the replacement text by
 parameters of the form \#1, \#2 etc. 
 
 A macroname, like the name of any control sequence in TeX, 
 can contain letters only, not numerals.  Where it was considered
 important in this thesis to indicate a numbering scheme in
 a macroname, either the full word for the number or Roman
 numerals in lower case letters were used. Thus \verb+\+hetisix
 is a mnemonic for a hetero sixring with one hetero atom, and
 \verb+\+fuseiv indicates a fusing fragment with four atoms. ---
 In some macronames the mnemonic as such is preceded by ``c''
 or ``chem,'' for ``chemistry.'' This was mainly done where the 
 mnemonic was already used for a control sequence in TeX
 or LaTeX. Thus, chemical structure fragments that point
 ``right'' or ``left'' are drawn by the macros \verb+\+cright
 and \verb+\+cleft since TeX employs control sequences
 \verb+\+right and \verb+\+left with different meanings.
 
 All the structure-drawing macro definitions in this thesis
 follow the same pattern in their organization. The actual
 structure-drawing LaTeX code is preceded by a ``box''
 declaration.    
 The diagrams are produced in a box because it is sometimes
 desirable to move the diagram as a whole.
 In all but one of the macros, the box is the LaTeX
 ``picture''; in the macro \verb+\+tbranch,
 which uses the tabbing environment, the box is
 the LaTeX minipage. Box dimensions in the
 macros are made flexible through the use of global variables.
 --- The structure-drawing code itself consists of unconditional    
 and of conditional statements.  The macro arguments are used to
 vary parts of the structure diagram, such as substituents
 and multiple bonds. --- Those features of a structure macro
 that have not been discussed before are described in more
 detail in the following sections.

 \vspace{0.4cm}
 \noindent A. \underline{Box Constructions with Global Variables}
  
 Integer variables such as the ones used here for box dimensions
 have to be stored in one of TeX's 256 numerical registers and can
 be given symbolic names with TeX's \verb+\+newcount declaration
 (Knuth 84, pp. 118-121). The variables used in the macros of
 this thesis are defined and initialized in the macro          
 \verb+\+initial which should be part of the preamble of an input
 file for chemistry typesetting using this system (see chapter VI
 for a summary of the preamble). A user can then change the 
 variables by simple assignment, e. g. \verb+\+xi=400.
 When several variables have been changed, it is convenient to
 reset all of them, including the unitlength, to their initial
 values with the macro \verb+\+reinit.

 The role of the LaTeX picture for line-drawing was discussed
 in chapter III, but the picture is also a box.
 As such it is processed in horizontal mode, as part of a line.
 Within a horizontal box, line breaks can never occur. --- 
 The macros use variables for all numerical 
 parameters in the picture declaration.
 Thus, the picture declaration in the macros has the form \\
 \centerline{$\backslash $begin\{picture\}($\backslash $pw,
 $\backslash $pht)($\backslash -$xi, $\backslash -$yi)  }
 The picture width and height, \verb+\+pw and \verb+\+pht,
 specify the nominal size used by TeX to determine how much
 room to leave for the box. The diagram in the box can extend
 beyond these dimensions, but an adjoining box is typeset next
 to the preceding one according to the specified width.
 The user needs control over the picture width in cases where
 several such boxes are put on one line, especially for the
 horizontal connection of structure fragments (see chapter V).
 --- Control over the picture height is important because
 some chemical structures take up more vertical space than
 others. The picture width and height are initialized to 400
 and 900 respectively, which is about 1.4$\times $3.2 cm with
 the unitlength of 0.1 points.
 
 Variables are used for the coordinates of the 
 lower left corner, \verb+\+xi and \verb+\+yi, so that the
 user can change the placement of the diagram within the
 picture window. This is not often necessary for individual
 structures since they can be conveniently centered by
 the display mechanisms discussed later in this chapter;
 and also the whole picture can be shifted horizontally by
 adding horizontal space in front of it with the 
 \verb+\+hspace command.  But shifting the diagram within
 the picture is employed for one of the methods of
 the horizontal and vertical
 connection of structure fragments discussed in chapter V.
 It was considered to be most convenient to put the minus
 signs in front of \verb+\+xi and \verb+\+yi in the declaration,
 since one thinks of the lower left corner of a coordinate
 system as having negative coordinates. With this declaration,
 an increase in the absolute \verb+\+xi and \verb+\+yi values
 shifts the diagram to the right and up. The coordinates
 \verb+\+xi and \verb+\+yi are initialized to 0 and 300
 respectively, which places the coordinate origin about 1~cm
 above the bottom of the picture window with the unitlength
 of 0.1 points.

 The minipage, the box used in the macro \verb+\+tbranch,
 is a paragraph box, which allows line breaks. Only the width
 is specified for a paragraph box since the height is
 controlled by the number of lines that will be produced by
 a given amount of text. The variable used in this system
 for the width of paragraph boxes is \verb+\+xbox. The number
 value assigned to \verb+\+xbox is interpreted as printer
 points.

 \pagebreak
 \vspace{0.4cm}
 \noindent B. \underline{Use of TeX's Conditional Facility}
 
 TeX's conditional facility is very similar to those of other
 high-level languages; it has the form: \\
 \centerline{$\backslash $if(condition)(true text)
  $\backslash $else(false text) $\backslash $fi  }
 (Knuth 84, p. 207 ff.).  Nesting is possible.
 The TeX \verb+\+if primitive has over ten different forms
 for testing numbers, processing modes, or tokens.
 The form used in the chemical structure macros is          
 \verb+\+ifx${\rm \langle token_{1}\rangle \langle
 token_{2}\rangle}$, which tests for the equality of the
 (character code, category code) pair of two tokens.
 
 In the structure macros, the \verb+\+ifx tests the
 arguments. When the arguments are single characters,
 such as ``S'', ``D'', or ``C'' for single bond, double
 bond, and circle, respectively, the application is    
 straightforward.  The character ``Q'' is used as argument
 where ``no action'' --- no substituent, no additional bond
 --- is a desired option at a particular place in a structure
 diagram. Thus, the coding for ring positions where substituents
 are an option is:

 \begin{tabbing}
  move in some\= $\backslash $ifx\#nQ\= print the substituent \#n
                                        $\backslash $fi\+ \kill
                 $\backslash $ifx\#nQ\>                      \\
                 $\backslash $else   \> draw a bond line \+  \\
                 print the substituent \#n $\backslash $fi
  \end{tabbing}

 The parameter n represents the substituent formula. --- 
 The explicit no-action symbol makes it possible to distinguish
 three different cases at a particular ring position: no action,
 just a bond line extending from the ring, and a bond line with 
 a substituent at the position. As an example, the purine macro
 was used with an argument of Q for the 9-position in the 
 left-hand diagram and with an empty set argument in the
 right-hand diagram:
 \[ \purine{Q}{D}{Q}{D}{Q}{$NH_{2}$}{Q}{D}{Q}
    \hspace{3cm}\purine{Q}{D}{Q}{D}{Q}{$NH_{2}$}{Q}{D}{}  \]
 One would use the bond-line-only option in cases where another
 structure fragment in a picture is to be attached to the bond.
 --- The character Q was chosen because it is not part of any
 element symbol and is not commonly used as a structural symbol
 otherwise.
 
 When the parameter after the \verb+\+ifx is substituted by a
 text string representing a multi-character substituent, TeX
 actually compares the first character of the string with its
 second character, since these are the first two tokens 
 encountered. Thus, a substituent that begins with two identical
 characters always makes the condition true. In such cases,
 one has to ensure that the string as a whole is compared by
 enclosing it in a box, e. g. \verb+\+mbox\{${\rm NNHC_{6}H_{5}}$\}.
  
 TeX's conditional facility can also be used to impart some
 chemical intelligence to a macro by causing screen messages
 to be generated when the user supplies a combination of
 arguments that is chemically not possible. Such a combination
 would be a ring double bond (argument 7=``D'') and a 
 circle denoting aromaticity (argument 9=``C'') for the
 carbon sixring. A section of code  
 
 \begin{tabbing}
  move in \= $\backslash $ifx\#7D  $\backslash $ifx\#9C
          \= $\backslash $message\{Error: $\ldots $\}\+ \kill
          $\backslash $ifx\#7D  $\backslash $ifx\#9C \> \+ \\
          $\backslash $message\{Error: $\ldots $\} \- \\
          $\backslash $fi  $\backslash $fi
  \end{tabbing}
 
 will produce the message on the screen while the input
 file is processed by TeX to give the DVI file. The user
 can then correct the mistake and reprocess the input file
 before sending the DVI file to the output device. --- 
 Error messages were not placed into all macros, just into
 the \verb+\+sixring macro to demonstrate this feature.
 
 In addition to the simple \verb+\+if statements TeX has
 an \verb+\+ifcase construction of the form \\
 \indent \verb+\+ifcase(number)(text for case 0) \verb+\+or
         (text for case 1) \verb+\+or $\ldots $ \\
 \indent \ \ \ \verb+\+or (text for case n) \verb+\+else
         (text for all other cases)  \verb+\+fi  \\
 (Knuth 84, p~210). When the \verb+\+ifcase statement
 is used in a macro and the case number is passed as an
 argument, many different actions can be requested 
 through one argument. For a larger number of cases, the
 TeX code with \verb+\+ifcase is somewhat more elegant
 than a series of individual \verb+\+if statements.
 --- A suitable application for the chemical structure  
 macros is the placement of double bonds in various
 positions of a structure, where the position number,
 or a numeric code for a combination of positions,
 is passed as the case number.  One version of the
 sixring macro, \verb+\+sixringb, contains an
 \verb+\+ifcase construct.
  

 \vspace{0.4cm}
 \centerline{2. USE OF STRUCTURE MACROS}
 \vspace{0.4cm}
 \noindent A. \underline{Invoking the Structure Macros}

 In order to typeset a chemical structure through invoking one
 of the macros in this system, the user must know how the structure
 will be oriented on  the page, besides knowing, of course,
 the function of each argument. The structures in this system can
 not be rotated; they are oriented according to common practices
 in chemistry, but occasionally the user will have to adapt
 a model structure to the given orientation. Chapter VI shows
 for each macro a typical structure produced by it, to illustrate
 the orientation and the position numbers. In this section it
 will be demonstrated with two representative macros how this
 information is to be used.

 The macro \verb+\+cright typesets structures or structure 
 fragments of the general form
 \pht=600
 \[ \cright{$R^{1}$}{S}{$Z$}{S}{$R^{5}$}{S}{$R^{7}$} \hspace{1cm}
    \mbox{.} \]
 The arguments 1, 3, 5, and 7 are the substituents or groups
 $R^{1}$, $Z$, $R^{5}$, and $R^{7}$. Arguments 2, 4, and 6 trigger
 the drawing of bonds between $R^{1}$ and $Z$, between $Z$ and $R^{5}$,
 and between $Z$ and $R^{7}$, respectively. The bonds can be single
 or double bonds, from arguments ``S'' and ``D'' respectively, 
 and the bond between $R^{1}$ and $Z$ does not have to be present.
 A typical structure is shown in figure 4.1, where the caption
 is the invoking code. Since the second argument for figure 4.1
 is ``Q,'' no bond is drawn between ${\rm R^{1}}$ and Z; and
 ${\rm R^{1}}$, which is in a \verb+\+makebox (see chapter III.3),
 is moved next to Z. Figure 4.2 shows two additional structures
 drawn with the \verb+\+cright macro.
 
 \begin{figure}[h]\centering
  \cright{$CH_{3}$}{Q}{$CH$}{S}{$COOCH_{3}$}{S}{$COOCH_{3}$}
  \caption{$\backslash $cright\{\$CH\_3\$\}\{Q\}\{\$CH\$\}
     \{S\}\{\$COOCH\_3\$\}\{S\}\{\$COOCH\_3\$\}   }
  \end{figure}
 
 
 \begin{figure}[h]                % figure 3.2
  \hspace{3cm}
  \cright{$CH_{3}CH$}{D}{$C$}{S}{$CH_{3}$}{S}{$CH_{3}$}
  \hspace{3cm}
  \cright{$R$}{S}{$C$}{S}{$O^{-}$}{D}{${NH_{2}}^{+}$}
  \caption{Structures drawn with the $\backslash $cright macro}
 \end{figure}

 The macro \verb+\+sixring typesets the very common carbon sixring.
 For this structure and all the ring structures, the user has to
 know how the system of macros assigns position numbers to the
 ring atoms. The assignment follows chemical nomenclature rules
 where applicable. However in the case of single-ring structures
 where all ring atoms are carbons,
 the assignment of position
 number 1 is arbitrary. In this system of macros, the sixring is 
 numbered as follows: \\
 \pht=900
 \[ \sixring{$R^{1}$}{$R^{2}$}{$R^{3}$}{$R^{4}$}{$R^{5}$}{$R^{6}$}
    {S}{S}{S} \hspace{2cm}  \mbox{.}  \]



 The first six arguments are the formulas for the optional 
 substituents in the respective positions. The user has to
 refer to the position assignment to supply the text strings
 in the correct form, e. g. a sulfonic acid group for positions
 4 and 5 would be typed in as $HO_{3}S$, whereas it would be
 $SO_{3}H$ for all other positions. --- The remaining three
 arguments can produce alternating ring double bonds, but each
 of them has a second function. Argument 7 can produce a second
 substituent at position 1, argument 8 an outside double bond
 with substituent in position 3, and argument 9 a circle inside
 the ring denoting aromaticity. Where arguments have two 
 functions in this way, the different structural features
 generated are of course mutually exclusive chemically.
 Figure 4.3 shows a sixring structure with the corresponding
 LaTeX code as caption. The substituent in position 3 is passed
 as argument 8 since it is not the regular single-bonded
 substituent represented by argument 3.

 \begin{figure}[h]\centering   
  \sixring{$OH$}{Q}{Q}{Q}{$NC$}{Q}{$CH_{3}$}{$NH$}{D}
  \caption{$\backslash $sixring\{\$OH\$\}\{Q\}\{Q\}\{Q\}
     \{\$NC\$\}\{Q\}\{\$CH\_3\$\}\{\$NH\$\}\{D\}   }
 \end{figure}
  
 \vspace{0.4cm}
 \noindent B. \underline{Displaying Macro-Generated Diagrams
    within a Document}

 Since the macro-generated diagrams constitute TeX boxes, the          
 code for a diagram can be included anywhere in the input file
 and TeX will try to find a place for the diagram as a whole
 in the line and on the page. The diagrams, however, take up
 more space horizontally and vertically than a box of text;
 therefore TeX's line- and page breaking mechanisms would be
 strained, sometimes to such a degree that text squeezing or
 spreading would be apparent on the printed page.

 A convenient way to display one or several structures on one
 line by themselves and centered, is the math display environment,
 enclosed by LaTeX with brackets in the form \verb+\+[
 $\ldots $\verb+\+].  A modification of this environment puts
 consecutive equation numbers at the right edge of the line.
 When using math display one has to remember that the only
 spacing in math mode is around math operators, space inserted
 by the user is ignored. Also, a new    
 paragraph can not be started in math display. ---
 The diagrams in math display are printed at the place in
 the document where they are coded in the input file.
 Thus the display can still cause problems with pagebreaking,
 especially since the diagrams usually take up more vertical
 space than a math equation for which the environment is
 designed.

 The LaTeX figure environment was specially designed for larger
 displays, such as the structure diagrams (Lamport 86, pp.~59, 60,
 176, 177). A figure will usually not appear at the place in the
 document where the user has coded it; instead LaTeX finds space
 for it on the current page or the next one in such a way that
 an overfull page is never produced. The user has some control
 over the placement of figures with optional parameters such as
 top or bottom of a page, but LaTeX still makes the final
 decision, often producing surprising results.
 Since a figure is moved to a convenient place by
 LaTeX, the figure is called a ``float.''  In addition to the
 automatic space-finding, the figure environment has the
 advantage that it makes captions possible. Furthermore,
 several displayed objects, each with a caption, can be included
 in one figure environment; figures 4.4 and 4.5 present an 
 example, produced by the LaTeX code in figure 4.6. The code
 shows that each picture with its caption is enclosed in
 a \verb+\+parbox.
 
 \begin{figure}
 \parbox{.4\textwidth}{\centering
 \begin{picture}(\pw,\pht)(-\xi,-\yi)
   \put(90,0)    {\circle{180}}
   \put(90,90)   {\line(0,1)   {70}}         % behind and up
   \put(60,170)  {$COOH$}
   \thicklines
   \put(30,10)   {\line(-5,2)  {140}}        % in front
   \put(-415,30) {\makebox(300,87)[r]{$HO$}} %  and left
   \put(150,10)  {\line(5,2)   {140}}        % in front 
   \put(300,30)  {$H$}                       %  and right
   \thinlines
   \put(90,-90)  {\line(0,-1) {90}}          % behind and
   \put(60,-260) {$CH_{3}$}                  %  down
 \end{picture}     
 \caption{${\rm (S)-}$lactic acid}   }
 \hfill
 \parbox{.4\textwidth}{\centering
 \begin{picture}(\pw,\pht)(-\xi,-\yi)
   \put(90,0)    {\circle{180}}
   \put(90,90)   {\line(0,1)   {70}}         % behind and up
   \put(60,170)  {$COOH$}
   \thicklines
   \put(30,10)   {\line(-5,2)  {140}}        % in front
   \put(-415,30) {\makebox(300,87)[r]{$H$}}  %  and left
   \put(150,10)  {\line(5,2)   {140}}        % in front 
   \put(300,30)  {$OH$}                      %  and right
   \thinlines
   \put(90,-90)  {\line(0,-1) {90}}          % behind and
   \put(60,-260) {$CH_{3}$}                  %  down
 \end{picture}     
 \caption{${\rm (R)-}$lactic acid}  }
 \end{figure}

 \begin{figure}\centering
 \begin{verbatim}
    \begin{figure}                            
      \parbox{.4\textwidth}{\centering        
        \ccirc{$COOH$}{$HO$}{$H$}{$CH_{3}$}     
        %ccirc is a macro                     
      \caption{${\rm (S)-lactic acid}$}}  
      \hfill                                  
      \parbox{.4\textwidth}{\centering        
        \ccirc{$COOH$}{$H$}{$OH$}{$CH_{3}$}   
      \caption{${\rm (R)-lactic acid}$}}  
    \end{figure}                                                            
 \end{verbatim}
 \caption{LaTeX code for two captions in one figure}
 \end{figure}
 
 It should also be mentioned that all the display mechanisms
 discussed above can be used in a two-column document style
 which is the format of most scientific chemistry journals.   

 If the same structure is to be printed many times in a
 document, processing time can be saved by storing it in a
 LaTeX \verb+\+savebox. The structure-drawing code then has to 
 be processed once only. Applied to the chemistry macros,
 a statement \\
 \centerline{$\backslash $savebox1\{$\backslash $macroname
      \{${\rm arg_{1}}$\}\{${\rm arg_{2}}$\}$\ldots $ \}  }
 will process the code and save the typeset structure.
 A \verb+\+usebox1 statement, enclosed in a math display or
 figure environment, is then placed into the input file
 whereever the structure is to be printed. A \verb+\+savebox
 can also be given a symbolic name (Lamport 86, p. 101).

 \end{document}