changeset 41193:1377d461b09c

*** empty log message ***
author Eli Zaretskii <eliz@gnu.org>
date Sat, 17 Nov 2001 09:38:14 +0000
parents 1daffd332bcd
children e0f2d5ffc822
files ChangeLog lispref/ChangeLog lispref/spellfile lispref/two-volume-cross-refs.txt lispref/two.el
diffstat 5 files changed, 1130 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat Nov 17 09:36:58 2001 +0000
+++ b/ChangeLog	Sat Nov 17 09:38:14 2001 +0000
@@ -1,3 +1,8 @@
+2001-11-17  Eli Zaretskii  <eliz@is.elta.co.il>
+
+	* make-dist (lispref): Add *.txt, *.el, permute-index, and
+	tindex.pl to the list of those being put into the distribution.
+
 2001-11-16  Eli Zaretskii  <eliz@gnu.org>
 
 	* configure.in: Add coff.h to the list in AC_CHECK_HEADERS.
--- a/lispref/ChangeLog	Sat Nov 17 09:36:58 2001 +0000
+++ b/lispref/ChangeLog	Sat Nov 17 09:38:14 2001 +0000
@@ -1,3 +1,9 @@
+2001-11-17  Eli Zaretskii  <eliz@is.elta.co.il>
+
+	* two-volume-cross-refs.txt: New file.
+	* two.el: New file.
+	* spellfile: New file.
+
 2001-11-16  Eli Zaretskii  <eliz@is.elta.co.il>
 
 	* permute-index: New file.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lispref/spellfile	Sat Nov 17 09:38:14 2001 +0000
@@ -0,0 +1,738 @@
+ARPA
+Abbrev
+Acknowledgements
+Alan
+Arnold
+Autoloading
+BAppend
+Backquote
+Beeping
+Beverly
+Boyes
+Brian
+CL
+CSWKg
+Carl
+Carroll
+Chris
+Cleanups
+DEC
+DStandard
+Dan
+Dired's
+Disassembly
+Duff
+EMAC
+EMACSLOADPATH
+Eckelkamp
+Edward
+Eirik
+Emacses
+Eric
+Erlebacher
+Fcar
+Fcdr
+Fcons
+Fcoordinates
+Feval
+Frazzle
+Frederick
+Fri
+Gardiner
+Gentlemen
+HAL
+HATTED
+HS
+HU
+Hanchrow
+Hartzell
+Hess
+Hewlett
+IBM
+ISBN
+Impl
+Interning
+Ithought
+J's
+Jacobson
+Jak
+Joe
+Jones
+Jr
+Jul
+Keymaps
+Kimmo
+Kirman
+Knighten
+Korz
+Krawitz
+LTsHm
+LaLiberte
+LaTeX
+Lammens
+Local'
+MAC
+MONIES
+MSS
+Maclisp
+Magill
+Marick
+Matthew
+Minibuf
+Misc
+Miscellany
+Mocklisp
+Montanaro
+Myers
+NFS
+Nathan
+Nope
+OS
+OSITIONS
+Oct
+Ovwrt
+PURESIZE
+Packard
+Qlistp
+Qnil
+RMAIL
+Raul
+Resizing
+Robbins
+Rockwell
+SCO
+SIGCONT
+SIGHUP
+SIGINT
+SIGKILL
+SIGQUIT
+SIGTSTP
+SLOAD
+Scoordinates
+Set'
+Setcar
+Setcdr
+Shinichirou
+Snarf
+Sor
+SourceFile
+Stops'
+Subprocess
+Sugou
+Sunview
+Suominen
+T's
+TCP
+ThXs
+Tharp
+Thu
+Trost
+UCB
+UNEVALLED
+UNGCPRO
+UniPlus
+UniSoft's
+VMS
+Vip
+Void'
+Warren
+Welty
+Wethought
+Wilding
+Worley
+Wright
+XDVI
+XFASTINT
+XINT
+XWINDOW
+Xs
+Yo
+Zuhn
+aB
+aa
+aaa
+abbrevname
+abbrevs
+abc
+abcdefg
+abcxyz
+abd
+above'
+abracadabra
+address'
+after'
+alist
+alists
+anchored'
+and'
+ar
+aref
+arg'th
+argdecl
+arith
+arrayp
+arrow'
+asa
+asdZasfd
+asdf
+asdfasfd
+aset
+assoc
+assq
+at'
+aug
+autoload
+automatic'
+automatically'
+avector
+bBuffer
+bFrobnicate
+ba
+back'
+bananana
+barfoo
+barx
+bballs
+before'
+beforep
+bfoo
+bil
+binding's
+bish
+bobp
+bolp
+bottommost
+boundp
+brief'
+buf
+buffer'
+bufferp
+buttercup
+ca
+caaaar
+caaar
+caddaar
+cadr
+callable
+cbreak
+ce
+cell'
+cells'
+cf
+chaprm
+character'
+childp
+chistory
+ck
+column'
+commandp
+concat
+cond
+conses
+consing
+consp
+constant'
+contains'
+continuable
+convert'
+copyleft
+correct'
+counterintuitive
+cr
+creatable
+customie
+deactivate
+deactivated
+deassigns
+decrement'
+deffnx
+definition'
+defmacro
+defsubr
+deletable
+deletion'
+delq
+depiction
+descendents
+deselecting
+destructive'
+destructively'
+diffs
+ding
+directory'
+dired
+dirname
+disassembler
+dland
+docfile
+docstring
+doesnt
+dont
+down'
+downcasing
+downloadable
+dribble
+dup
+ef
+efg
+electric'
+elided
+elt
+enablement
+endkeyfun
+endrecfun
+environment'
+eobp
+eof
+eol
+eolp
+eq
+eqlsign
+erminal
+erste
+etags
+eval
+evalled
+evals
+evaluate'
+excess'
+exec
+exitcode
+expression'
+extendible
+extra'
+fails'
+fascist
+fboundp
+featurep
+ff
+fg
+fi
+file'
+filespec
+filesystems
+fillarray
+firstchar
+firstonly
+fixedcase
+fixit
+fixup
+floatp
+fmakunbound
+fns
+fo
+fol
+folded'
+following'
+fooba
+foobaz
+foox
+for'
+formfeed
+forms'
+forw
+forwa
+found'
+frob
+from'
+front'
+fset
+fstab
+ftp
+fu
+funtions
+garbles
+gc
+gcpro
+gd
+getenv
+getprv
+gid
+gnuemacs
+gp
+grep
+gtr
+halves'
+hand'
+hashes'
+hd
+hexadecimal
+hf
+hfil
+hookvar
+horsechestnut
+hostname
+hpux
+hscroll
+ibmapa
+ick
+id
+idiom
+ii
+indrm
+inode
+input'
+inputinput
+inserting'
+integerp
+intermixed
+ints
+inturned
+irreversibly
+jum
+keymapp
+kill'
+killed'
+killp
+kludge
+kolstad
+language'
+lastchar
+lcl
+ledit
+leif
+lessp
+level'
+lewis
+library'
+link'
+lisplib
+listexp
+loadable
+loadst
+loadup
+logand
+logior
+lognot
+logxor
+long'
+loop's
+lru
+lrwxrwxrwx
+ls
+lsh
+m's
+macroexpand
+makunbound
+malloc
+mapatoms
+mapconcat
+mapvar
+mark'
+marker's
+markerp
+mathsurround
+medit
+memq
+mh
+mim
+mini
+minibuffer's
+minibuffers
+misalignment
+misnamed
+mode's
+modename
+modes'
+mods
+modtime
+mqueue
+msg
+multicharacter
+myfile
+nCount
+nXExpression
+na
+name's
+natnump
+nb
+nbBuffer
+nconc
+newdef
+newelt
+newname
+nextrecfun
+nfsusr
+ninett
+nlines
+nlinks
+nlistp
+noconfirm
+nodigits
+noerror
+noforce
+nomessage
+nominees
+nomsg
+nonblank
+nonconstant
+nondestructive
+nondirectory
+nonidentical
+noninteractive
+noninteractively
+nonletter
+nonletters
+nonlocally
+nonoverlapping
+nonprinting
+nonselected
+nonsequentially
+nonvoid
+nonwarranty
+nonwritable
+noop
+noprint
+norecord
+normal'
+noselect
+nosuffix
+nots
+noundo
+nr
+nreverse
+ns
+nsRename
+nth
+nthcdr
+num
+number'
+numberp
+nums
+obarray
+obarrays
+object'
+oldbuf
+olddef
+oldname
+oo
+oops
+op
+or'
+otl
+out'
+over'
+overful
+overfullrule
+overstrike
+overstriking
+overstruck
+p'
+paren
+part'
+passwd
+pe
+ped
+perverse
+pid
+plist
+pnt
+pointer'
+pointm
+pos
+preallocate
+predicale
+preload
+prepend
+prepended
+prepends
+pretty'
+prin
+princ
+print'
+printenv
+printer'
+proc
+process'
+processp
+programmer'
+prolog
+protect'
+ps
+psf
+psychotherapy
+pty
+purecopy
+qu
+quux
+rassq
+reader'
+readin
+rebind
+rec
+rechecking
+recursively'
+recycler'
+redo
+redrawing
+redraws
+redump
+reenabled
+reexposed
+reg
+region'
+reindent
+reindents
+reinitialization
+reinitialize
+reinitialized
+reinstall
+reinstalled
+resize
+resized
+resizes
+reversibly
+reworded
+rhetorical
+right'
+ring'
+risky
+rmailedit
+rms
+rplaca
+rplacd
+rtu
+runnable
+rw
+rwxrwxrwx
+sDescribe
+sans
+se
+searching'
+section'
+seed'
+sequence'
+sequencep
+setp
+setplist
+setprv
+settable
+setuid
+sexp
+sexps
+shape'
+shell's
+sideline
+special'
+specpdl
+st
+stanford
+startkeyfun
+str
+stringp
+stty
+subcategories
+subcommands
+subexp
+subform
+subforms
+subjob
+submap
+subprocesses
+subr
+subr'
+subroutine'
+subrp
+subrs
+subwindows
+sugar'
+suid
+supersession
+suspension'
+symbolp
+symlink
+syms
+syntatic
+tabname
+temacs
+temporarily'
+tempvar
+tenths
+termcap
+termcaps
+terminfo
+termscript
+termtype
+terpri
+text'
+textrm
+textsl
+texttt
+than'
+the'
+tildes
+time's
+to'
+towars
+transportable
+txt
+types'
+uid
+unbind
+unbinding
+unbinds
+unchanged'
+unclutters
+undefine
+undefines
+underfull
+undo's
+undodata
+unevaluated'
+unexec
+unexpand
+unhesitatingly
+uninterned
+unisoft
+unpaired
+unread
+unreadable
+unreading
+unsaved
+untyped
+ununderline
+up'
+uptime
+usecount
+used'
+user'
+userlock
+usg
+val
+varbind
+varname
+varref
+vars
+varset
+vb
+vconcat
+vectorp
+vfil
+vi
+vn
+voidness
+vrs
+vt
+window'
+windowing
+windowp
+wrapped'
+xSpecify
+xcoord
+xcssun
+xemacs
+xenix
+xf
+xfirst
+xoff
+xon
+xx
+xxxxx
+xxxxxxxxx
+xy
+xyz
+ycoord
+yes'
+zA
+zap
+zerop
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lispref/two-volume-cross-refs.txt	Sat Nov 17 09:38:14 2001 +0000
@@ -0,0 +1,322 @@
+Two Volume Cross References
+===========================
+
+18 March 1992
+
+This enables you to create manuals in *two* volumes, with tables of
+contents, cross references, and indices in each volume referring to
+*both* volumes.
+
+The procedure is tedious.  However, the resulting two volumes are
+conveniently organized.  Each has an index of the whole two volumes.
+Each volume starts with page 1.  (I don't like multi-volume works
+where each volume starts with a higher page number since I find it
+harder to go to the right place in the volume.)
+
+References to the same volume are just the page number; references to
+the other volume are a volumne number (in Roman numerals) preceding
+the page number.
+
+For example, in Volume I:
+
+    list length ......... 90
+    list motion ......II:117
+
+and in Volume II:
+
+    list length ....... I:90
+    list motion .........117
+
+All other references and the table of contents work the same way.  I
+find this *very* helpful. 
+
+
+In brief: you run tex on a .texi file with
+
+  a. redefined @contents and @summarycontents inputting elisp-toc-2vol.toc file
+  b. redone .aux file
+  c. redone .fns file
+
+
+Here are the steps in detail:
+
+% tex elisp-vol1.texi
+% texindex elisp-vol1.??
+% tex elisp-vol1.texi
+
+% tex elisp-vol2.texi
+% texindex elisp-vol2.??
+% tex elisp-vol2.texi
+
+### Create .aux files with volume numbers for other volume.
+
+% cp elisp-vol1.aux elisp1-aux
+% cp elisp-vol2.aux elisp2-aux
+
+% cp elisp-vol1.aux elisp1-aux-vol-number-added
+% cp elisp-vol2.aux elisp2-aux-vol-number-added
+
+on elisp1-aux-vol-number-added
+(volume-aux-markup 1)           see defun for volum-aux-markup below.
+to create             elisp1-aux-vol-number-added
+
+on elisp2-aux-vol-number-added
+(volume-aux-markup 2)
+to create             elisp2-aux-vol-number-added
+
+insert elisp2-aux-vol-number-added into elisp-vol1.aux  (append)
+insert elisp1-aux-vol-number-added into elisp-vol2.aux  (prepend)
+
+(so you dont have to do it again)
+% cp elisp-vol1.aux elisp1-aux-2vol-ready
+% cp elisp-vol2.aux elisp2-aux-2vol-ready
+
+
+### Create .fn files with volume numbers for other volume.
+
+% cp elisp-vol1.fn elisp1-fn
+% cp elisp-vol2.fn elisp2-fn
+
+% cp elisp-vol1.fn elisp1-fn-vol-number-added
+% cp elisp-vol2.fn elisp2-fn-vol-number-added
+
+on elisp1-fn-vol-number-added
+(volume-index-markup "I")
+to create             elisp1-fn-vol-number-added
+
+on elisp2-fn-vol-number-added
+(volume-index-markup "II")
+to create             elisp2-fn-vol-number-added
+
+insert elisp2-fn-vol-number-added into elisp-vol1.fn: do following `cat'
+insert elisp1-fn-vol-number-added into elisp-vol2.fn: do following `cat'
+
+% cat elisp2-fn-vol-number-added >> elisp-vol1.fn
+% cat elisp1-fn-vol-number-added >> elisp-vol2.fn
+
+Be sure to handle special case entries by hand.
+Be sure that .fn file has no blank lines.
+
+% texindex elisp-vol1.fn
+% texindex elisp-vol2.fn
+
+(so you dont have to do it again)
+% cp elisp-vol1.fns elisp1-fns-2vol-ready
+% cp elisp-vol2.fns elisp2-fns-2vol-ready
+
+### Create merged .toc file with volume number headings.
+
+append elisp-vol2.toc to elisp-vol1.toc  with following `cat'
+
+% cat elisp-vol1.toc elisp-vol2.toc > elisp-toc-2vol.toc
+
+and edit in Volume titles
+
+\unnumbchapentry {Volume 1}{}
+\unnumbchapentry {}{}
+
+\unnumbchapentry {Index}{295}
+\unnumbchapentry {}{}
+\unnumbchapentry {Volume 2}{}
+\unnumbchapentry {}{}
+
+If you want to put in volume numbers for TOC, then do this:
+Create volume specific .toc files with volume numbers in them.
+
+% cp elisp-toc-2vol.toc elisp1-toc.toc
+% cp elisp-toc-2vol.toc elisp2-toc.toc
+
+Use keyboard macro to put I: in first half of elisp1-toc.toc and 
+II: in first half of elisp2-toc.toc
+
+Copy the tocs to something you can remember more easily
+
+% cp elisp2-toc.toc elisp1-toc-ready.toc 
+% cp elisp1-toc.toc elisp2-toc-ready.toc 
+
+Then, edit elisp-vol1.texi to input elisp1-toc-ready.toc 
+and elisp-vol2.texi to input elisp2-toc-ready.toc 
+
+
+### Now format the two volumes:
+
+% cp elisp1-aux-2vol-ready elisp-vol1.aux
+% cp elisp2-aux-2vol-ready elisp-vol2.aux
+
+% tex elisp-vol1.texi
+% tex elisp-vol2.texi
+
+
+
+For every additional run:
+
+### recopy aux files so the correct ones are read:
+% cp elisp1-aux-2vol-ready elisp-vol1.aux
+% cp elisp2-aux-2vol-ready elisp-vol2.aux
+
+Do not run texindex.  Then proper sorted index will stay.
+ else do: % cp elisp2-fns-2vol-ready elisp-vol2.fns
+
+Do not change the .texi files; they will call the elisp-toc-2vol.toc file.
+
+% tex elisp-vol1.texi
+% tex elisp-vol2.texi
+
+================================================================
+
+@c ================================================================
+@tex
+% Special @contents  command
+% This inputs fixed up table of contents file rather than create new one.
+\global\def\contents{%
+   \startcontents{Table of Contents}%
+      \input elisp-toc-2vol.toc
+   \endgroup
+   \vfill \eject
+}
+
+% Special @summarycontents  command
+% This inputs fixed up table of contents file rather than create new one.
+\outer\def\summarycontents{%
+   \startcontents{Short Contents}%
+      %
+      \let\chapentry = \shortchapentry
+      \let\unnumbchapentry = \shortunnumberedentry
+      % We want a true roman here for the page numbers.
+      \secfonts
+      \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
+      \rm
+      \advance\baselineskip by 1pt % Open it up a little.
+      \def\secentry ##1##2##3##4{}
+      \def\unnumbsecentry ##1##2{}
+      \def\subsecentry ##1##2##3##4##5{}
+      \def\unnumbsubsecentry ##1##2{}
+      \def\subsubsecentry ##1##2##3##4##5##6{}
+      \def\unnumbsubsubsecentry ##1##2{}
+      \input elisp-toc-2vol.toc
+   \endgroup
+   \vfill \eject
+}
+@end tex
+@c ================================================================
+
+
+================================================================
+
+
+(defun volume-aux-markup (arg)
+  "Append `vol. NUMBER' to page number.
+Apply to aux file that you save.
+Then insert marked file into other volume's .aux file."
+  (interactive "sType volume number, 1 or 2: " )
+  (goto-char (point-min))
+  (while (search-forward "-pg" nil t)
+    (end-of-line 1)
+    (delete-backward-char 1 nil)
+    (insert ", vol.'tie" arg "}")))
+
+(defun volume-index-markup (arg)
+  "Prepend  `NUMBER:' to page number.  Use Roman Numeral.
+Apply only to unsorted index file, 
+Then insert marked file into other volume's unsorted index file.
+Then run texindex on that file and save."
+  (interactive
+   "sType volume number,  roman number I or II: " )
+  (goto-char (point-min))
+  (while (search-forward "\\entry" nil t)
+    (search-forward "}{" (save-excursion (end-of-line) (point)) nil)
+    (insert arg ":")))
+
+
+================================================================
+
+
+The steps:
+
+1. Run TeX, texindex and TeX on file1.
+2. Run TeX, texindex and TeX on file2.
+
+3. Copy both .aux files into specially named files 
+
+4. In the case of the elisp ref manual, 
+
+   copy the *unsorted* function index files into specially named files 
+   (no other index used in elisp ref manual)
+
+
+5. For aux files:
+
+   Run a function on the specially named .aux files to label each
+   entry according to volume.  Save these files.
+
+   i.e., convert     
+   'xrdef {Special-pg}{7}  to 'xrdef {Special-pg}{7, vol.'tie1}
+
+5a.Insert each specially named .aux file into the regular .aux file of
+   the other volume.
+
+6. For index files:
+
+   Run a function on the specially named unsorted index files to label
+   each entry according to volume.  Save these files.
+
+6b.Insert each specially named marked unsorted index file into the
+   regular unsorted file of the other volume.  Run texindex on this
+
+7. Insert the other volumes .toc file into the .toc, edit, and rename to
+   elisp-toc-2vol.toc
+
+7a. insert special @contents and @summarycontents defs into .texi files.
+
+8. Run TeX on each .texi file.
+
+================
+
+
+
+Here is the discursive commentary:
+
+I've been running some small test files, called test1.texi and
+test2.texi.  As far as I can see, if we run tex on the two test files,
+tex creates a .aux for each that includes the names of all the nodes
+in that file.  The node names are used for cross references.
+
+If you insert the .aux file for the second test file, test2.aux, into
+the .aux file for the first test file, test1.aux, then when you next
+run TeX on the first test file, test1.texi, the second volume cross
+references are inserted.
+
+You can edit the text of the cross reference in test2.aux to include
+the volume number.
+
+For example, you can take the following two lines from test1.texi and
+insert them into test2.texi:
+
+    'xrdef {Special-pg}{7}
+    'xrdef {Special-snt}{Section'tie1.6}
+
+You can re-edit this to show that the page is in volume 1:
+
+    'xrdef {Special-pg}{7, vol.'tie1}
+    'xrdef {Special-snt}{Section'tie1.6}
+
+(The  'tie  is a TeX special command to keep the number tied on one
+line to the previous word.  I don't know if it works after a period in
+the "vol." but figure it is worth trying.  {The  ' is the @  of  .aux files.}
+Apparently 'tie is like the tilde in plain tex; in texinfo.tex, the
+definition for 'tie is the following:
+
+    \def\tie{\penalty 10000\ }     % Save plain tex definition of ~.
+
+)
+
+After running tex on the test2.texi file with the augmented test2.aux
+file, you can see the following in the resulting DVI file:
+
+    See Section 1.6 [Special], page 7, vol. 1
+
+Note that TeX rewrites the .aux file each time TeX is run, so after
+running Tex using an .aux file augmented with the .aux file from the
+other volume, the new .aux file will *lack* the other volumes cross
+references.  Save your augmented .aux file in some other name for
+another run!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lispref/two.el	Sat Nov 17 09:38:14 2001 +0000
@@ -0,0 +1,59 @@
+;; Auxilary functions for preparing a two volume manual.
+;; --rjc 30mar92
+
+(defun volume-aux-markup (arg)
+  "Append `vol. NUMBER' to page number.
+Apply to aux file that you save.
+Then insert marked file into other volume's .aux file."
+  (interactive "sType volume number, 1 or 2: " )
+  (goto-char (point-min))
+  (while (search-forward "-pg" nil t)
+    (end-of-line 1)
+    (delete-backward-char 1 nil)
+    (insert ", vol.'tie" arg "}")))
+
+(defun volume-index-markup (arg)
+  "Prepend  `NUMBER:' to page number.  Use Roman Numeral.
+Apply only to unsorted index file, 
+Then insert marked file into other volume's unsorted index file.
+Then run texindex on that file and save."
+  (interactive
+   "sType volume number,  roman number I or II: " )
+  (goto-char (point-min))
+  (while (search-forward "\\entry" nil t)
+    (search-forward "}{" (save-excursion (end-of-line) (point)) nil)
+    (insert arg ":")))
+
+(defun volume-numbers-toc-markup (arg)
+  (interactive
+   "sType volume number,  roman number I or II: " )
+  (goto-char (point-min))
+  (while (search-forward "chapentry" nil t)
+    (end-of-line)
+    (search-backward "{" nil t)
+    (forward-char 1)
+    (insert arg ":")))
+
+(defun volume-header-toc-markup ()
+  "Insert Volume I and Volume II text into .toc file.
+NOTE: this auxilary function is file specific.
+This is for the *Elisp Ref Manual*"
+  (interactive)
+  (goto-char (point-min))
+  (insert "\\unnumbchapentry {Volume 1}{}\n\\unnumbchapentry {}{}\n")
+  (search-forward "\\unnumbchapentry {Index}")
+  (forward-line 1)
+  (insert 
+   "\\unnumbchapentry {}{}\n\\unnumbchapentry {}{}\n\\unnumbchapentry {}{}\n\\unnumbchapentry {}{}\n\\unnumbchapentry {Volume 2}{}\n\\unnumbchapentry {}{}\n"))
+
+
+;;; In batch mode, you cannot call functions with args; hence this kludge:
+
+(defun volume-aux-markup-1 () (volume-aux-markup "1"))
+(defun volume-aux-markup-2 () (volume-aux-markup "2"))
+
+(defun volume-index-markup-I () (volume-index-markup "I"))
+(defun volume-index-markup-II () (volume-index-markup "II"))
+
+(defun volume-numbers-toc-markup-I () (volume-numbers-toc-markup "I"))
+(defun volume-numbers-toc-markup-II () (volume-numbers-toc-markup "II"))