# HG changeset patch # User markus schnalke # Date 1341579548 -7200 # Node ID ff3a6a0e62554c28ee0154853bf38403535009de # Parent 472aa79f9b6f6cb8c9a517d65fe4836751da35ac Added system for references within the document. Macros: .Id and .Cf. ``.Id foo'' places a marker at that place. ``.Cf foo'' puts the section number of the marked place there. ``.Cf foo.page'' puts the page number of the marked place there. diff -r 472aa79f9b6f -r ff3a6a0e6255 .hgignore --- a/.hgignore Fri Jul 06 10:13:55 2012 +0200 +++ b/.hgignore Fri Jul 06 14:59:08 2012 +0200 @@ -9,3 +9,4 @@ thesis.pdf *.ig +refs/ diff -r 472aa79f9b6f -r ff3a6a0e6255 makefile --- a/makefile Fri Jul 06 10:13:55 2012 +0200 +++ b/makefile Fri Jul 06 14:59:08 2012 +0200 @@ -7,7 +7,7 @@ all: $(NAME).ps -$(NAME).ps: $(CHAPS) makefile bib rfcs toc.ig +$(NAME).ps: $(CHAPS) makefile bib rfcs toc.ig refs export TROFFONTS=fonts;\ soelim $(CHAPS) | $(REFER) | \ grap | pic | troff -Tps -ms 2>err.ig | dpost >$@ @@ -20,6 +20,13 @@ toc.ig: err.ig sed -n '/^TOC____/s///p' err.ig >$@ +refs: err.ig + awk '/^REF____/{ \ + sub(/^REF____/,""); \ + printf $$2 >"refs/"$$1; close("refs/$$1"); \ + printf $$3 >"refs/"$$1".page"; close("refs/$$1.page");\ + }' err.ig + pdf: $(NAME).pdf $(NAME).pdf: $(NAME).ps ps2pdf $(PDFFLAGS) $(NAME).ps 2>/dev/null @@ -32,6 +39,7 @@ clean: rm -f $(NAME).ps $(NAME).pdf book.ps book.pdf + rm -f refs/* rm -f *.ig spell: diff -r 472aa79f9b6f -r ff3a6a0e6255 style --- a/style Fri Jul 06 10:13:55 2012 +0200 +++ b/style Fri Jul 06 14:59:08 2012 +0200 @@ -410,6 +410,13 @@ .CW "\\*(_t" "]\\$2 .. -.de Cf \" cf. (ref within document) -(\(-> \\$1)\\$2 +. \" Cf - reference within the document ($1=name of ref file) +.de Cf +\.if !\\nZ .so refs/\\$1 \c +\\$2 .. + +. \" Id - put a referenceable marker here ($1=identifier) +.de Id +.tm REF____\\$1\t\\*(SN\t\\n(PN +..