%!TEX TS-program = xetex %!TEX encoding = UTF-8 Unicode %###################################### % Fonts: % Linux Libertine % http://libertine-fonts.org/ % Gentium Plus % http://software.sil.org/gentium/ % (for the Vietnamese diacritics) %###################################### \input navigator \special{pdf:docview << /PageMode /UseOutlines >>} %++++++++++++++++++++++++++++++++++++++ % page layout \pdfpagewidth 129mm \pdfpageheight 198mm \hsize 99mm \vsize 454pt \voffset -10mm \hoffset -10.4mm %++++++++++++++++++++++++++++++++++++++ \tolerance 1414 \hbadness 1414 \hyphenpenalty 500 \finalhyphendemerits 7500 \emergencystretch 5pt \hfuzz 0.3pt \vfuzz=\hfuzz % paragraph spacing \parskip 0pt \parindent 1.2em \baselineskip 12pt \frenchspacing \def\nl{\hfil\break} \def\pagebreak{\vadjust{\eject}} \def\newpage{\vfill\eject} \def\newrectopage{\vfil\eject \ifodd\pageno \else \null\vfil\eject \fi } \def\unindent {% \setbox0=\lastbox} \def\vp {% \everypar{\unindent\everypar{}}} % to centre material that extends over more than one line \def\centre{\parindent0pt \leftskip=0pt plus 1fil \rightskip=0pt plus 1fil \parfillskip=0pt\parskip=0pt\obeylines} \font\rm="Linux Libertine:mapping=tex-text" at 10pt \font\scw="Linux Libertine:+smcp,letterspace=6,mapping=tex-text" at 10pt \font\Rm="Linux Libertine:mapping=tex-text" at 12pt \font\Rmw="Linux Libertine:letterspace=6,mapping=tex-text" at 12pt \font\scw="Linux Libertine:+smcp,letterspace=6,mapping=tex-text" at 10pt \font\Scw="Linux Libertine:+smcp,letterspace=6,mapping=tex-text" at 12pt \font\onum="Linux Libertine:+onum,mapping=tex-text" at 10pt \font\gplus="Gentium Plus:mapping=tex-text" at 10pt \font\hist="Linux Libertine/I:+hlig,mapping=tex-text" at 10pt \font\chaptfont="Linux Libertine/B:mapping=tex-text" at 15pt \font\sectfont="Linux Libertine/B:mapping=tex-text" at 12pt \font\subsectfont="Linux Libertine/B:mapping=tex-text" at 10pt \font\grey="Linux Libertine:color=797d7f" at 10pt \newcount\chaptno \chaptno=0 \newcount\sectno \sectno=0 \newcount\subsectno \subsectno=0 \def\chapter#1{ \sectno=0% reset section counter \advance\chaptno by 1 \newpage ~\vskip2\baselineskip% a `chapter drop' of three lines \leftline{\chaptfont Chapter \number\chaptno: #1} \nobreak\vskip\baselineskip\nobreak\vp } \def\section#1{ \subsectno=0% reset subsection counter \advance\sectno by 1 \goodbreak\bigskip \leftline{\sectfont\number\sectno. #1} \nobreak\vskip3pt\nobreak\vp } \def\subsection#1{ \advance\subsectno by 1 \goodbreak\medskip \leftline{\subsectfont\number\sectno.\number\subsectno. #1} \nobreak\vskip2pt\nobreak\vp } \footline={\hss\rm\folio\hss} %%%%%%%%%%%%%%%%%%%%%%% % START OF DOCUMENT %%%%%%%%%%%%%%%%%%%%%%% \rm \outline{0}{Sections} \chapter{XeTeX} \section{Unicode support} \subsection{English} All human beings are born free and equal in dignity and rights. \subsection{Íslenska} Hver maður er borinn frjáls og jafn öðrum að virðingu og réttindum. \subsection{Русский} Все люди рождаются свободными и равными в своем достоин-\break стве и правах. \subsection{Tiếng Việt} {\gplus Tất cả mọi người sinh ra đều được tự do và bình đẳng về nhân phẩm và quyền lợi.} \subsection{Ελληνικά} Ὅλοι οἱ ἄνθρωποι γεννιοῦνται ἐλεύθεροι καὶ ἴσοι στὴν ἀξιοπρέπεια καὶ τὰ δικαιώματα. \section{Legacy syntax} When he goes---``Hello World!''\nl She replies—“Hello dear!” \section{Ligatures} {\hist Questo è strano assai!} \section{Numerals} Old style: {\onum 1234567}\nl Lining: 1234567 \newpage \chaptno=0 %\sectno=0 %\subsectno=0 \def\chapterb#1{ \sectno=0% reset section counter \advance\chaptno by 1 \newpage~\vskip2\baselineskip \centerline{\chaptfont Chapter \number\chaptno\ – #1} \nobreak\vskip\baselineskip\nobreak\vp } \def\sectionb#1{ \subsectno=0% reset subsection counter \advance\sectno by 1 \goodbreak\bigskip \leftline{\quad{\sectfont§ \number\sectno\enspace#1}} \nobreak\vskip3pt\nobreak\vp } \def\subsectionb#1{ \advance\subsectno by 1 \goodbreak\medskip \leftline{\qquad{\subsectfont§ \number\sectno.\number\subsectno\enspace#1}} \nobreak\vskip2pt\nobreak\vp } \rm \outline{0}{Variation} \chapterb{XeTeX} \sectionb{Unicode support} \subsectionb{English} All human beings are born free and equal in dignity and rights. \subsectionb{Íslenska} Hver maður er borinn frjáls og jafn öðrum að virðingu og réttindum. \subsectionb{Русский} Все люди рождаются свободными и равными в своем достоин-\break стве и правах. \subsectionb{Tiếng Việt} {\gplus Tất cả mọi người sinh ra đều được tự do và bình đẳng về nhân phẩm và quyền lợi.} \subsectionb{Ελληνικά} Ὅλοι οἱ ἄνθρωποι γεννιοῦνται ἐλεύθεροι καὶ ἴσοι στὴν ἀξιοπρέπεια καὶ τὰ δικαιώματα. \sectionb{Legacy syntax} When he goes---``Hello World!''\nl She replies—“Hello dear!” \sectionb{Ligatures} {\hist Questo è strano assai!} \sectionb{Numerals} Old style: {\onum 1234567}\nl Lining: 1234567 \newpage \def\headingA#1{\goodbreak \vskip 2\baselineskip% if you want two lines that don't % disappear at a page break use \null\vskip\baselineskip \centerline{\Rm#1} \nobreak\vskip\baselineskip\nobreak\vp } \outline{0}{Headings} \headingA{Heading Macros} One of the things I try to do when writing heading macros is to maintain register, i.e. the space above the heading, the heading itself and the space below the heading should make up an integral number of lines. A simple way to do this is to have two lines above the heading and one line below it, making four lines in total. But notice that because the heading came at the top of a page, \TeX\ has discarded the two lines above the heading. This is usually correct, but I noticed in a book I was looking at, that when a heading came at the top of a page, the typesetter retained one line above the heading. I wrote a macro to retain a line above the heading after a pagebreak using a conditional ☞ {\grey Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor } \eject % this macro only seems to work properly if I \eject the previous page \def\headingB#1{% \ifdim\pagegoal=\maxdimen% we are at the top of the page \null% makes a blank line \centerline{\Rm#1} \vskip\baselineskip\vp \else % the same as \headingA \vskip2\baselineskip \centerline{\Rm#1} \nobreak\vskip\baselineskip\nobreak\vp \fi } \headingB{Heading} The heading is on the second baseline from the top of the page, so this heading takes up three lines in total. If the heading comes in the middle of a page it takes up four lines like the heading on the previous page would have done if it had fallen in the middle of a page: \headingB{Another Heading} If a heading is longer than one line, and the font size is bigger than the body text, you may need to have additional leading in the heading. In this case you could use variable space ({\tt\string\bigskip}) before the heading to try and maintain register: \def\headingC#1{\goodbreak \bigskip\bigskip {\centre\baselineskip15pt\Rm#1\par}% heading is set at 12/15 \nobreak\vskip\baselineskip\nobreak\vp } \headingC{A Very Long Heading That Extends Over More\break Than One Line} {\grey Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut } \eject \def\headingD#1{% \ifdim\pagegoal=\maxdimen% we are at the top of the page % I found the 20pt value by experimenting % a \vrule that has no width is invisible \centerline{\vrule height20pt width0pt\scw#1} \vskip2pt\vp \else \goodbreak \medskip \centerline{\scw#1} \nobreak\vskip2pt\nobreak\vp \fi } % Another way to get register is to use \smallskip % instead of \vskip2pt under the heading. But in that case % the \smallskip will stretch to a full lineskip, which seems % like too much space. I like the space between the heading and % the following text to be constant. \def\headingE#1{% \goodbreak \medskip \centerline{\scw#1} \nobreak\smallskip\nobreak\vp } \headingD{a small heading} %\headingE{a small heading} With a small heading like this one, having two lines above and one line below seems like too much space. I put two points below the heading and a {\tt\string\medskip} above it. When it comes in the middle of a page it takes up two lines ☞ When the heading comes at the top of a page, that {\tt\string\medskip} will be discarded. But then the bottom of the page will be out of register. (If there were more than one heading on the page, the {\tt\string\medskip} of the second heading would make up for this.) I wrote a macro similar to the one used on page four to add some space at the top of the page to make the bottom lines align. {\grey Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. } \headingD{another small heading} {\grey Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui } \eject \bye