Escape &<> when they appear in href text.
[sgt/halibut] / inputs / test.but
index 1fc007e..dddc2dd 100644 (file)
@@ -1,11 +1,24 @@
-\title Halibut: A Test Document With A Stupidly Long Title Just To
-See If Wrapping Titles Works OK. In Fact This Title Will Span Three
-Lines, Not Just Two. How's That For Ludicrous?
+\define{eur} \u20AC{EUR }
+
+\title Halibut: A Test Document With A Stupidly Long Title (worth \eur\.1000)
+Just To See If Wrapping Titles Works OK. In Fact This Title Will Span Three
+Lines, Not Just Two. How's That For Ludicrous?  More than that, though,
+we'd like to make it more than 255 characters long so that the PostScript
+backend has to treat it specially in order to pass it to pdfmark.
 
 \cfg{xhtml-leaf-smallest-contents}{2}
 
 \cfg{xhtml-leaf-smallest-contents}{2}
-\cfg{xhtml-leaf-contains-contents}{true}
+\cfg{xhtml-leaf-contains-contents}
+{true}
+\cfg{info-dir-entry}{Sillinesses}{test.but}{Halibut test document}
+\cfg{info-dir-entry}{Florbles}{test.but}{Subsection of Halibut test
+document}{sub-sub}
+\cfg{info-section-underline}{2}{~}
+\cfg{info-charset}{utf-8}
 \cfg{man-headnumbers}{true}
 
 \cfg{man-headnumbers}{true}
 
+\cfg{contents}{Contents - edited title}
+\cfg{index}{Index - also edited title}
+
 This paragraph is not labelled \q{preamble}, but should still appear
 as it.
 
 This paragraph is not labelled \q{preamble}, but should still appear
 as it.
 
@@ -19,7 +32,7 @@ date \date{%Y.%m.%d} (default format is \date).
 \copyright Copyright 1999 Simon \#{second comment}Tatham. All rights
 reserved.
 
 \copyright Copyright 1999 Simon \#{second comment}Tatham. All rights
 reserved.
 
-Here's another paragraph, which goes after the copyright.
+Here's another \i{preamble paragraph}, which goes after the copyright.
 
 \define{metacoopt} [this is a nested,
 multi-line macro, talking about \coopt
 
 \define{metacoopt} [this is a nested,
 multi-line macro, talking about \coopt
@@ -27,9 +40,7 @@ a bit]
 
 \define{coopt} co\u00F6{-o}pt
 
 
 \define{coopt} co\u00F6{-o}pt
 
-\define{eur} \u20AC{EUR }
-
-\versionid $Id: test.but,v 1.24 2004/03/30 19:40:56 simon Exp $
+\versionid $Id$
 
 \C{ch\\ap} First chapter title; for similar wrapping reasons this
 chapter title will be ludicrously long. I wonder how much more
 
 \C{ch\\ap} First chapter title; for similar wrapping reasons this
 chapter title will be ludicrously long. I wonder how much more
@@ -40,8 +51,10 @@ has line\#{yet another one} breaks in   between words, multiple
   spaces (ignored), and \e{emphasised text} as well as \c{code
 fragments}.
 
   spaces (ignored), and \e{emphasised text} as well as \c{code
 fragments}.
 
-\cw{This} is weak code. And \k{head} contains some other stuff.
-\K{subhead} does too.
+\#{This is an inline comment alone in a paragraph.}
+
+\cw{This} is weak code; \cq{this} is quoted code. And \k{head}
+contains some other stuff. \K{subhead} does too.
 
 To test the man page back end:
 
 
 To test the man page back end:
 
@@ -49,6 +62,10 @@ To test the man page back end:
 
 'Directive
 
 
 'Directive
 
+\cw{.Directive}
+
+\cw{'Directive}
+
 \\Sping\\Spong\\Spoing
 
 \H{head} First section title (very long again, no prizes for
 \\Sping\\Spong\\Spoing
 
 \H{head} First section title (very long again, no prizes for
@@ -70,6 +87,8 @@ Here's a code paragraph:
 \c We can use discretionary bold and italic in code paragraphs!
 \e                          bbbb     iiiiii
 \c Isn't that ludicrous?
 \c We can use discretionary bold and italic in code paragraphs!
 \e                          bbbb     iiiiii
 \c Isn't that ludicrous?
+\c 
+\c man page tricky characters: command -o 'quoted' -o `backticks`
 
 This is a list:
 
 
 This is a list:
 
@@ -97,6 +116,11 @@ And here's a sublist. Numbered, just for variety.
 
 \n 1b.
 
 
 \n 1b.
 
+\lcont{
+\c Code
+\c Paragraph
+}
+
 \n 1c.
 
 \lcont{This is an even sillier one: a continuation of a list item in
 \n 1c.
 
 \lcont{This is an even sillier one: a continuation of a list item in
@@ -149,6 +173,25 @@ to make up for it. I don't know. These mammals. Pa-thetic.
 \dd An exemplary contributor to the global economy. Unless he's CMOT
 Dibbler.
 
 \dd An exemplary contributor to the global economy. Unless he's CMOT
 Dibbler.
 
+This is a much more interesting description list, testing
+consecutive \c{\\dt}s and consecutive \c{\\dd}s:
+
+\dt One
+
+\dt Two
+
+\dt Three
+
+\dd Ay
+
+\dt Four
+
+\dd Bee
+
+\dd Cee
+
+\dd Dee
+
 A-paragraph-full-of-hyphens-to-test-the-idea-that-word-wrapping-can-happen-somewhere-in-all-this-hyphenatory-nonsense.
 
 A\-paragraph\-full\-of\-nonbreaking\-hyphens\-to\-test\-the\-idea\-that\-word\-wrapping\-misses\-them.
 A-paragraph-full-of-hyphens-to-test-the-idea-that-word-wrapping-can-happen-somewhere-in-all-this-hyphenatory-nonsense.
 
 A\-paragraph\-full\-of\-nonbreaking\-hyphens\-to\-test\-the\-idea\-that\-word\-wrapping\-misses\-them.
@@ -160,9 +203,60 @@ And a nested macro: \metacoopt.
 
 A slightly more difficult macro: \eur\.2500.
 
 
 A slightly more difficult macro: \eur\.2500.
 
+Test of input character set switching.
+
+\n 8859 character in ASCII mode: expect nothing useful. [coöpt]
+
+\cfg{input-charset}{ISO-8859-1}
+
+\n 8859 character in 8859 mode: expect the right thing. [coöpt]
+
+\cfg{input-charset}{UTF-8}
+
+\n 8859 character in UTF-8 mode: expect the wrong thing. [coöpt]
+
+\cfg{silliness}{coöpt}
+
+\n UTF-8 sequence in UTF-8 mode: expect the right thing again. [coöpt]
+
+\cfg{input-charset}{ASCII}
+
+Back to ASCII again.
+
 Oh, while I'm here: some special characters. The \\, \{ and \}
 characters, to be precise. And their code equivalents, \c{\\},
 Oh, while I'm here: some special characters. The \\, \{ and \}
 characters, to be precise. And their code equivalents, \c{\\},
-\i\c{\{}, \c{\}}.
+\i\c{\{}, \c{\}}.  The ` and ' characters (grave and apostrophe)
+are special in some output formats.
+
+Now let's exercise the paper backends a little.  This is the entire
+Adobe Standard Latin character set, which should be enough to cause
+us to need to encode the main font twice:
+
+\cfg{input-charset}{ISO-8859-1}
+
+A Æ Á Â Ä À Å Ã B C Ç D E É Ê Ë È Ð F G H I Í Î Ï Ì J K L \u0141 M N Ñ O Ó Ô Ö
+\u0152 Ò Ø Õ P Q R S \u0160 T Þ U Ú Û Ü Ù V W X Y Ý \u017d
+a á â ´ ä æ à & å ^ ~ * @ ã b \\ | \{ \} [ ] ¦ \u2022
+c \u02c7 ç ¸ ¢ \u02c6 : , © ¤ d \u2020 \u2021 ° ¨ ÷ $ \u02d9 \u0131
+e é ê ë è 8 \u2026 \u2014 \u2013 = ð ! ¡ f \ufb01 5 \ufb02 \u0192 4 \u2044
+g ß \u2039 \u203a ` > « » h - \u02dd i í î ï ì j k l \u0142 < ¬
+m \u2212 \u00B5 × n 9 ñ # o ó ô ö \u0153 ò 1 ½ ¼ ¹ ª º ø õ
+p \u00b6 ( ) % \u2030 . · + ±
+q ? ¿ " \u201e \u201c \u201d \u2018 \u2019 \u201a '
+r ® \u02da s \u0161 \u00A7 ; 7 6 / £ t þ 3 ¾ ³ \u02dc \u2122 2 ²
+u ú û ü ù _ v w x y ý ÿ ¥ z \u017e 0
+
+\cfg{input-charset}{ASCII}
+
+Testing ligatures in normal (fi), empasised (\e{fi}), code (\c{fi}) and
+weak code (\cw{fi}).  The latter two should not be ligated.
+
+\c Also in a code paragraph (fi) with bold (fi) and italic (fi).
+\e                                          bb              ii
+\c There should be no ligation there.
+
+The following pair of characters map to different glyphs with the same name in
+some Microsoft TrueType fonts: \u0394{(missing)} \u2206{(missing)}
 
 \S{subhead} First subheading
 
 
 \S{subhead} First subheading
 
@@ -176,6 +270,25 @@ An index tag containing non-alternatived Unicode: \i{\u00BFChe?}
 
 An invisible index tag: \I{she seems to have an invisible tag}yeah.
 
 
 An invisible index tag: \I{she seems to have an invisible tag}yeah.
 
+An index tag inside another tag: jackdaws love my \e{big \i{sphinx}}
+of quartz.
+
+Similarly, we should support things like hyperlinks
+\e{\W{http://www.tartarus.org/}{at the beginning} of emphasised sections},
+and \e{in the \W{http://www.tartarus.org/}{middle} of them}, and also
+\e{at the \W{http://home.att.net/~cecw/lastpage.htm}{end}}.
+
+Here's a hyperlink containing some special characters:
+\W{http://a<b&c>d/}{here}. (Not that it'll \e{work}, but you can at
+least determine that it's been correctly escaped by inspection of
+the output HTML.)
+
+\#{FIXME: Unfortunately, we still don't quite do the right thing with
+references:
+How about a \e{reference to \k{subhead} here}? And at
+\e{the end: \k{subhead}} and \e{\k{subhead}: the start}?
+}
+
 \S2{sub-sub}{Florble} Smaller heading still
 
 A tiny section. Awww. How cute. Actually, this one's a \e{florble},
 \S2{sub-sub}{Florble} Smaller heading still
 
 A tiny section. Awww. How cute. Actually, this one's a \e{florble},
@@ -191,6 +304,39 @@ whitespace).
 
 It also contains a \W{http://www.tartarus.org/}{hyperlink}.
 
 
 It also contains a \W{http://www.tartarus.org/}{hyperlink}.
 
+Also I'm going to index \i\c{-output} to ensure that its two
+components are displayed as a joined-up code fragment in the index.
+
+Here are \I{testone}some \I{testtwo}subsections \I{testthree}with
+silly chapter titles and interesting use of Unicode. The Unicode
+oddities are in the titles rather than the body text because that
+way I get to test their handling in the PDF document outline.
+
+\H{app-one} The 1024 \u00D7{x} 768 screen resolution
+
+Err.
+
+\H{app-two} How about Spongletech\u2122{(TM)}?
+
+Umm.
+
+\# I'm going to label one of these with a carefully chosen fragment
+\# name "i1", because I know this will also be generated as an index
+\# fragment name and this allows me to test the fragment name clash
+\# detection.
+\#
+\# To actually run this test you need to configure html-leaf-level
+\# to 0 and html-template-fragment to %k.
+
+\H{i1} Or just Erd\u0151{\u00F6{o}}s?
+
+Ahh.
+
+\H{app-\\two} Section with inconvenient keyword
+
+If you apply this file together with \cw{doc/chm.but}, this section
+should test \cw{html_sanitise_filename()}.
+
 \U Bibliography
 
 \B{book} Some text describing a book.
 \U Bibliography
 
 \B{book} Some text describing a book.
@@ -211,3 +357,11 @@ the document even though there is no \cw{\\k} citing it.
 
 \IM{she seems to have an invisible tag}{appendix} Invisible tags
 and/or appendices
 
 \IM{she seems to have an invisible tag}{appendix} Invisible tags
 and/or appendices
+
+\# The display forms of these three index terms differ only in case.
+\# This is a fiddly special case in the Windows Help backend,
+\# because Windows Help's index mechanism is case-insensitive...
+
+\IM{testone} Test
+\IM{testtwo} TesT
+\IM{testthree} test