The Computer Science of TEX and LATEX; Based on CS 594, Fall 2004, University of Tennessee

Total Page:16

File Type:pdf, Size:1020Kb

The Computer Science of TEX and LATEX; Based on CS 594, Fall 2004, University of Tennessee The Computer Science of TEX and LATEX; based on CS 594, fall 2004, University of Tennessee Victor Eijkhout Texas Advanced Computing Center The University of Texas at Austin 2012 2 TEX–LATEX – CS 594 3 About this book. These are the lecture notes of a course I taught in the fall of 2004. This was the first time I taught the course, and the first time this course was taught, period. It has also remained the only time the course was taught. These lecture notes, therefore, are prob- ably full of inaccuracies, mild fibs, and gross errors. Ok, make that: are definitely full of at the least the first two categories, because I know of several errors that time has prevented me from addressing. My lack of time being what it is, this unfinished book wil now remain as is. The reader is asked to enjoy it, but not to take it for gospel. Victor Eijkhout [email protected] Knoxville, TN, december 2004; Austin, TX, january 2012. copyright 2012 Victor Eijkhout ISBN 978-1-105-41591-3 Enjoy! Victor Eijkhout 4 TEX–LATEX – CS 594 2.3 Finite state automata and regular languages 45 2.4 Lexical analysis with FSAs 50 Contents Syntax parsing 52 2.5 Context-free languages 52 2.6 Parsing context-free About this book 3 languages 55 1 TEX and LATEX 9 Lex 67 LATEX 10 2.7 Introduction 67 1.1 Document 2.8 Structure of a lex markup 10 file 67 1.2 The absolute basics of 2.9 Definitions LATEX 12 section 68 1.3 The TEX conceptual 2.10 Rules section 69 model of 2.11 Regular typesetting 15 expressions 71 1.4 Text elements 15 2.12 Remarks 72 1.5 Tables and figures 25 2.13 Examples 73 1.6 Math 25 Yacc 77 1.7 References 28 2.14 Introduction 77 1.8 Some TEXnical 2.15 Structure of a yacc issues 30 file 77 1.9 Customizing 2.16 Motivating LATEX 30 example 77 1.10 Extensions to 2.17 Definitions LATEX 34 section 79 TEX 2.18 Lex Yacc programming 38 interaction 79 TEX visuals 39 2.19 Rules section 81 Projects for this 2.20 Operators; precedence chapter 40 and associativity 82 2 Parsing 41 2.21 Further remarks 83 Parsing theory 42 2.22 Examples 86 2.1 Levels of parsing 42 Hashing 93 2.2 Very short 2.23 Introduction 93 introduction 42 2.24 Hash functions 94 Lexical analysis 45 2.25 Collisions 97 5 6 Contents 2.26 Other applications of Curve plotting with hashing 102 gnuplot 170 2.27 Discussion 103 4.4 Introduction 170 Projects for this 4.5 Plotting 170 chapter 104 Raster graphics 172 3 Breaking things into 4.6 Vector graphics and pieces 105 raster graphics 172 Dynamic 4.7 Basic raster Programming 106 graphics 172 3.1 Some examples 106 4.8 Rasterizing type 176 3.2 Discussion 114 4.9 Anti-aliasing 179 TEX paragraph Projects for this breaking 116 chapter 183 3.3 The elements of a 5 TEX’s macro paragraph 116 language – 3.4 TEX’s line breaking unfinished algorithm 120 chapter 185 NP Lambda calculus in completeness 130 TEX 186 3.5 Introduction 130 5.1 Logic with TEX 186 3.6 Basics 132 6 Character 3.7 Complexity encoding 199 classes 133 Input file 3.8 NP- encoding 200 completeness 135 6.1 History and Page breaking 138 context 200 3.9 Introduction 138 6.2 Unicode 203 3.10 TEX’s page breaking 6.3 More about character algorithm 139 sets and 3.11 Theory of page encodings 207 breaking 141 6.4 Character issues in Projects for this TEX/LATEX 210 chapter 150 Font encoding 212 4 Fonts 151 6.5 Basic Bezier curves 152 terminology 212 4.1 Introduction to curve 6.6 Æsthetics 215 approximation 152 6.7 Font 4.2 Parametric technologies 216 curves 157 6.8 Font handling in TEX 4.3 Practical use 167 and LATEX 218 TEX–LATEX – CS 594 Contents 7 Input and output 7.2 Knuth’s philosophy of encoding in program LATEX 221 development 224 6.9 The fontenc Software package 221 engineering 225 Projects for this 7.3 Extremely brief chapter 222 history of TEX 225 7.4 TEX’s Software 7 development 225 engineering 223 Markup 229 Literate 7.5 History 229 programming 224 Projects for this 7.1 The Web system 224 chapter 231 Victor Eijkhout 8 Contents TEX–LATEX – CS 594 Chapter 1 TEX and LATEX In this chapter we will learn • The use of LATEX for document preparation, • LATEX style file programming, • TEX programming. Handouts and further reading for this chapter For LATEX use the ‘Not so short introduction to LATEX’ by Oetiker et al. For further reading and future reference, it is highly recommended that you get ‘Guide to LATEX’ by Kopka and Daly [15]. The original reference is the book by Lamport [16]. While it is a fine book, it has not kept up with developments around LATEX, such as contributed graphics and other packages. A book that does discuss extensions to LATEX in great detail is the ‘LATEX Companion’ by Mittelbach et al. [17]. For the TEX system itself, consult ‘TEX by Topic’. The original reference is the book by Knuth [12], and the ultimate reference is the published source [11]. 9 10 CHAPTER 1. TEX AND LATEX LATEX. 1.1 Document markup If you are used to ‘wysiwyg’ (what you see is what you get) text processors, LATEX may seem like a strange beast, primitive, and probably out-dated. While it is true that there is a long history behind TEX and LATEX, and the ideas are indeed based on much more primitive technology than what we have these days, these ideas have regained surprising validity in recent times. 1.1.1 A little bit of history Document markup dates back to the earliest days of computer typesetting. In those days, terminals were strictly character-based: they could only render mono-spaced built-in fonts. Graphics terminals were very expensive. (Some terminals could switch to a graphical character set, to get at least a semblance of graphics.) As a result, com- positors had to key in text on a terminal – or using punched cards in even earlier days – and only saw the result when it would come out of the printer. Any control of the layout, therefore, also had to be through character sequences. To set text in bold face, you may have had to surround it with <B> .. the text .. </B>. Doesn’t that look like something you still encounter every day? Such ‘control sequences’ had a second use: they could serve a template function, ex- panding to often used bits of text. For instance, you could imagine $ADAM$ expanding to ‘From our correspondent in Amsterdam:’. LATEX works exactly the same. There are command control sequences; for instance, you get bold type by specifying \bf, et cetera. There are also control sequences that expand to bits of text: you have to type \LaTeX to get the characters ‘LATEX’ plus the control codes for all that shifting up and down and changes in font size. \TeX => T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX \LaTeX => L\kern -.36em {\sbox \z@ T\vbox to\ht \z@ {\hbox {\check@mathfonts \fontsize \sf@size \z@ \math@fontsfalse \selectfont A} \vss }}\kern -.15em\TeX 1.1.2 Macro packages The old typesetting systems were limited in their control sequences: they had a fixed repertoire of commands related to typesetting, and there usually was some mechanism TEX–LATEX – CS 594 1.1. DOCUMENT MARKUP 11 to defining ‘macros’ with replacement text. Formally, a macro is a piece of the input that gets replaced by its definition text, which can be a combination of literal text and more macros or typesetting commands. An important feature of many composition programs is the ability to designate by suitable input instructions the use of specified for- mats. Previously stored sequences of commands or text replace the instructions, and the expanded input is then processed. In more so- phisticated systems, formats may summon other formats, including themselves [”System/360 Text Processor Pagination/360, Applica- tion Description Manual,” Form No. GE20-0328, IBM Corp., White Plains, New York.]. That was the situation with commercial systems by manufacturers of typesetting equip- ment such as Linotype. Systems developed by (and for!) computer scientists, such Scribe or nroff/troff, were much more customizable. In fact, they sometimes would have the equivalent of a complete programming language on board. This makes it pos- sible to take the basic language, and design a new language of commands on top of it. Such a repertoire of commands is called a macro package. In our case, TEX is the basic package with the strange macro programming language, 1 and LATEX is the macro package .LATEX was designed for typesetting scientific articles and books: it offers a number of styles, each with slightly different commands (for instance, there are no chapters in the article style) and slightly different layout (books need a title page, articles merely a title on the first page of the text). Styles can also easily be customized. For different purposes (art books with fancy designs) it is often better to write new macros in TEX, rather than to bend the existing LATEX styles. However, if you use an existing LATEX style, the whole of the underlying TEX program- ming language is still available, so many extensions to LATEX have been written. The best place to find them is through CTAN http://wwww.ctan.org/.
Recommended publications
  • Typesetting Classical Greek Philology Could Not find Anything Really Suitable for Her
    276 TUGboat, Volume 23 (2002), No. 3/4 professor of classical Greek in a nearby classical high Philology school, was complaining that she could not typeset her class tests in Greek, as she could do in Latin. I stated that with LATEX she should not have any The teubner LATEX package: difficulty, but when I started searching on CTAN,I Typesetting classical Greek philology could not find anything really suitable for her. At Claudio Beccari that time I found only the excellent Greek fonts de- signed by Silvio Levy [1] in 1987 but for a variety of Abstract reasons I did not find them satisfactory for the New The teubner package provides support for typeset- Font Selection Scheme that had been introduced in LAT X in 1994. ting classical Greek philological texts with LATEX, E including textual and rhythmic verse. The special Thus, starting from Levy’s fonts, I designed signs and glyphs made available by this package may many other different families, series, and shapes, also be useful for typesetting philological texts with and added new glyphs. This eventually resulted in other alphabets. my CB Greek fonts that now have been available on CTAN for some years. Many Greek users and schol- 1 Introduction ars began to use them, giving me valuable feedback In this paper a relatively large package is described regarding corrections some shapes, and, even more that allows the setting into type of philological texts, important, making them more useful for the com- particularly those written about Greek literature or munity of people who typeset in Greek — both in poetry.
    [Show full text]
  • Types and Programming Languages by Benjamin C
    < Free Open Study > . .Types and Programming Languages by Benjamin C. Pierce ISBN:0262162091 The MIT Press © 2002 (623 pages) This thorough type-systems reference examines theory, pragmatics, implementation, and more Table of Contents Types and Programming Languages Preface Chapter 1 - Introduction Chapter 2 - Mathematical Preliminaries Part I - Untyped Systems Chapter 3 - Untyped Arithmetic Expressions Chapter 4 - An ML Implementation of Arithmetic Expressions Chapter 5 - The Untyped Lambda-Calculus Chapter 6 - Nameless Representation of Terms Chapter 7 - An ML Implementation of the Lambda-Calculus Part II - Simple Types Chapter 8 - Typed Arithmetic Expressions Chapter 9 - Simply Typed Lambda-Calculus Chapter 10 - An ML Implementation of Simple Types Chapter 11 - Simple Extensions Chapter 12 - Normalization Chapter 13 - References Chapter 14 - Exceptions Part III - Subtyping Chapter 15 - Subtyping Chapter 16 - Metatheory of Subtyping Chapter 17 - An ML Implementation of Subtyping Chapter 18 - Case Study: Imperative Objects Chapter 19 - Case Study: Featherweight Java Part IV - Recursive Types Chapter 20 - Recursive Types Chapter 21 - Metatheory of Recursive Types Part V - Polymorphism Chapter 22 - Type Reconstruction Chapter 23 - Universal Types Chapter 24 - Existential Types Chapter 25 - An ML Implementation of System F Chapter 26 - Bounded Quantification Chapter 27 - Case Study: Imperative Objects, Redux Chapter 28 - Metatheory of Bounded Quantification Part VI - Higher-Order Systems Chapter 29 - Type Operators and Kinding Chapter 30 - Higher-Order Polymorphism Chapter 31 - Higher-Order Subtyping Chapter 32 - Case Study: Purely Functional Objects Part VII - Appendices Appendix A - Solutions to Selected Exercises Appendix B - Notational Conventions References Index List of Figures < Free Open Study > < Free Open Study > Back Cover A type system is a syntactic method for automatically checking the absence of certain erroneous behaviors by classifying program phrases according to the kinds of values they compute.
    [Show full text]
  • Tinn-R Team Has a New Member Working on the Source Code: Wel- Come Huashan Chen
    Editus eBook Series Editus eBooks is a series of electronic books aimed at students and re- searchers of arts and sciences in general. Tinn-R Editor (2010 1. ed. Rmetrics) Tinn-R Editor - GUI forR Language and Environment (2014 2. ed. Editus) José Cláudio Faria Philippe Grosjean Enio Galinkin Jelihovschi Ricardo Pietrobon Philipe Silva Farias Universidade Estadual de Santa Cruz GOVERNO DO ESTADO DA BAHIA JAQUES WAGNER - GOVERNADOR SECRETARIA DE EDUCAÇÃO OSVALDO BARRETO FILHO - SECRETÁRIO UNIVERSIDADE ESTADUAL DE SANTA CRUZ ADÉLIA MARIA CARVALHO DE MELO PINHEIRO - REITORA EVANDRO SENA FREIRE - VICE-REITOR DIRETORA DA EDITUS RITA VIRGINIA ALVES SANTOS ARGOLLO Conselho Editorial: Rita Virginia Alves Santos Argollo – Presidente Andréa de Azevedo Morégula André Luiz Rosa Ribeiro Adriana dos Santos Reis Lemos Dorival de Freitas Evandro Sena Freire Francisco Mendes Costa José Montival Alencar Junior Lurdes Bertol Rocha Maria Laura de Oliveira Gomes Marileide dos Santos de Oliveira Raimunda Alves Moreira de Assis Roseanne Montargil Rocha Silvia Maria Santos Carvalho Copyright©2015 by JOSÉ CLÁUDIO FARIA PHILIPPE GROSJEAN ENIO GALINKIN JELIHOVSCHI RICARDO PIETROBON PHILIPE SILVA FARIAS Direitos desta edição reservados à EDITUS - EDITORA DA UESC A reprodução não autorizada desta publicação, por qualquer meio, seja total ou parcial, constitui violação da Lei nº 9.610/98. Depósito legal na Biblioteca Nacional, conforme Lei nº 10.994, de 14 de dezembro de 2004. CAPA Carolina Sartório Faria REVISÃO Amek Traduções Dados Internacionais de Catalogação na Publicação (CIP) T591 Tinn-R Editor – GUI for R Language and Environment / José Cláudio Faria [et al.]. – 2. ed. – Ilhéus, BA : Editus, 2015. xvii, 279 p. ; pdf Texto em inglês.
    [Show full text]
  • The Gnu Binary Utilities
    The gnu Binary Utilities Version cygnus-2.7.1-96q4 May 1993 Roland H. Pesch Jeffrey M. Osier Cygnus Support Cygnus Support TEXinfo 2.122 (Cygnus+WRS) Copyright c 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modi®ed versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modi®ed versions. The GNU Binary Utilities Introduction ..................................... 467 1ar.............................................. 469 1.1 Controlling ar on the command line ................... 470 1.2 Controlling ar with a script ............................ 472 2ld.............................................. 477 3nm............................................ 479 4 objcopy ....................................... 483 5 objdump ...................................... 489 6 ranlib ......................................... 493 7 size............................................ 495 8 strings ........................................ 497 9 strip........................................... 499 Utilities 10 c++®lt ........................................ 501 11 nlmconv ....................................
    [Show full text]
  • LATEX for Word Processor Users Version 1.0.10
    LATEX for Word Processor Users version 1.0.10 Guido Gonzato, Ph.D. [email protected] January 8, 2015 Abstract Text processing with LATEX offers several advantages over word processing. How- ever, beginners may find it hard to figure out how to perform common tasks and obtain certain features. This manual attempts to ease the transition by drawing com- parisons between word processing and LATEX typesetting. The main word processor capabilities are listed, along with their equivalent LATEX commands. Many examples are provided. Contents 1 Introduction 1 1.1 Preliminaries............................................2 1.1.1 Editor-Supported Features................................2 1.1.2 Adding Packages......................................2 1.1.3 Adding the Info Page...................................4 1.2 The Golden Rules.........................................5 2 The File Menu 5 2.1 File/New ...............................................5 2.2 File/Save As. ...........................................6 2.3 File/Save As Template .......................................6 2.4 File/Import .............................................6 2.5 File/Page Setup ...........................................7 2.5.1 Page Setup/Headers and Footers ..............................8 2.6 File/Printer Setup ..........................................8 2.7 File/Print Preview ..........................................8 2.8 File/Print ..............................................8 2.9 File/Versions .............................................9 3 The Edit Menu
    [Show full text]
  • The File Cmfonts.Fdd for Use with Latex2ε
    The file cmfonts.fdd for use with LATEX 2".∗ Frank Mittelbach Rainer Sch¨opf 2019/12/16 This file is maintained byA theLTEX Project team. Bug reports can be opened (category latex) at https://latex-project.org/bugs.html. 1 Introduction This file contains the external font information needed to load the Computer Modern fonts designed by Don Knuth and distributed with TEX. From this file all .fd files (font definition files) for the Computer Modern fonts, both with old encoding (OT1) and Cork encoding (T1) are generated. The Cork encoded fonts are known under the name ec fonts. 2 Customization If you plan to install the AMS font package or if you have it already installed, please note that within this package there are additional sizes of the Computer Modern symbol and math italic fonts. With the release of LATEX 2", these AMS `extracm' fonts have been included in the LATEX font set. Therefore, the math .fd files produced here assume the presence of these AMS extensions. For text fonts in T1 encoding, the directive new selects the new (version 1.2) DC fonts. For the text fonts in OT1 and U encoding, the optional docstrip directive ori selects a conservatively generated set of font definition files, which means that only the basic font sizes coming with an old LATEX 2.09 installation are included into the \DeclareFontShape commands. However, on many installations, people have added missing sizes by scaling up or down available Metafont sources. For example, the Computer Modern Roman italic font cmti is only available in the sizes 7, 8, 9, and 10pt.
    [Show full text]
  • Chapter # 9 LEX and YACC
    Chapter # 9 LEX and YACC Dr. Shaukat Ali Department of Computer Science University of Peshawar Lex and Yacc Lex and yacc are a matched pair of tools. Lex breaks down files into sets of "tokens," roughly analogous to words. Yacc takes sets of tokens and assembles them into higher-level constructs, analogous to sentences. Lex's output is mostly designed to be fed into some kind of parser. Yacc is designed to work with the output of Lex. 2 Lex and Yacc Lex and yacc are tools for building programs. Their output is itself code – Which needs to be fed into a compiler – May be additional user code is added to use the code generated by lex and yacc 3 Lex : A lexical analyzer generator Lex is a program designed to generate scanners, also known as tokenizers, which recognize lexical patterns in text Lex is an acronym that stands for "lexical analyzer generator.“ The main purpose is to facilitate lexical analysis The processing of character sequences in source code to produce tokens for use as input to other programs such as parsers Another tool for lexical analyzer generation is Flex 4 Lex : A lexical analyzer generator lex.lex is an a input file written in a language which describes the generation of lexical analyzer. The lex compiler transforms lex.l to a C program known as lex.yy.c. lex.yy.c is compiled by the C compiler to a file called a.out. The output of C compiler is the working lexical analyzer which takes stream of input characters and produces a stream of tokens.
    [Show full text]
  • MIC5161 Win 2003 Launch V6
    Microsoft Windows Server 2003 and Microsoft Visual Studio .NET 2003 Launch Guide Do more with less. 1 Contents Introduction 2 Introducing Microsoft® Windows® Server 2003 4 Windows Server 2003 Case Studies 10 Introducing Microsoft® Visual Studio® .NET 2003 26 Visual Studio .NET 2003 Case Studies 41 Australian .NET Connected Partners 47 Microsoft® SQL Server™ 52 Microsoft Exchange Server 53 Windows Server 2003 and Visual Studio .NET 2003 Launch Sponsors 55 Platform Partner 56 Platinum Sponsors 61 Gold Sponsors 81 Silver Sponsors 96 Australian Windows Server 2003 JDP 100 Microsoft Gold Certified Partners 102 2 3 Welcome to the launch of Windows Server 2003! This is an exciting time for In my ten or more years in the Australian developer community, the combination Microsoft, our partners and customers, as this is unquestionably the most of Microsoft Windows Server 2003 and Microsoft Visual Studio® .NET 2003 is customer-focused Windows Server release yet. The reality of today’s IT environment the most exciting launch I have ever been involved with. Last February, Microsoft is the demand to do more with technology and, at the same time, do it with reset the bar for innovation and productivity with a new development paradigm for less cost. Over the last two years, we have spent time with customers using building Web Services and applications – Visual Studio .NET. This year, we build Microsoft® Windows® 2000 Server and Windows NT® Server 4.0 to really on that momentum by offering an entire development platform for the building understand what it would take to enable them do a lot more with Windows Server and execution of those applications.
    [Show full text]
  • Project1: Build a Small Scanner/Parser
    Project1: Build A Small Scanner/Parser Introducing Lex, Yacc, and POET cs5363 1 Project1: Building A Scanner/Parser Parse a subset of the C language Support two types of atomic values: int float Support one type of compound values: arrays Support a basic set of language concepts Variable declarations (int, float, and array variables) Expressions (arithmetic and boolean operations) Statements (assignments, conditionals, and loops) You can choose a different but equivalent language Need to make your own test cases Options of implementation (links available at class web site) Manual in C/C++/Java (or whatever other lang.) Lex and Yacc (together with C/C++) POET: a scripting compiler writing language Or any other approach you choose --- must document how to download/use any tools involved cs5363 2 This is just starting… There will be two other sub-projects Type checking Check the types of expressions in the input program Optimization/analysis/translation Do something with the input code, output the result The starting project is important because it determines which language you can use for the other projects Lex+Yacc ===> can work only with C/C++ POET ==> work with POET Manual ==> stick to whatever language you pick This class: introduce Lex/Yacc/POET to you cs5363 3 Using Lex to build scanners lex.yy.c MyLex.l lex/flex lex.yy.c a.out gcc/cc Input stream a.out tokens Write a lex specification Save it in a file (MyLex.l) Compile the lex specification file by invoking lex/flex lex MyLex.l A lex.yy.c file is generated
    [Show full text]
  • Kepler Italic
    Brioso™ Pro a® a abcdefghijklmnopqrst An Adobe® Original Brioso Pro a umanistic Composition aily abcdefghijklmnopqrst © Adobe Systems Incorporated. Al rights reserved. uvwxyz For more information about OpenType please refer to Adobe’s web site at www.adobe.com/type/opentype. is document was designed to be viewed on-screen or printed duplex and assemled as a booklet. Adobe Originals Adobe Systems Incorporated introduces Brioso Pro, a new font soware package in the growing library of Adobe Originals typefaces, designed ecicaly for today’s digital technology. Since the inception of the Adobe Originals program in , Adobe Originals typefaces have been consistently recognized for their quality, originality, and praicality. They combine the power of PostScript® lanuage soware and the most sophisticated electronic design tools with the spirit of crasmanship that has inspired type designers since Gutenberg. Comprising both new designs and revivals of classic typefaces, Adobe Originals font soware has set a standard for typographic excelence. What is OpenType? Developed jointly by Adobe and Microso, OpenType is a highly versatile new font le format that represents a signicant advance in type functionality on Windows® and Mac OS computers. Perhaps most exciting for designers and typographers is that OpenType fonts offer extendedlayout features that bring unprecedented control and sophistication to contemporary typography. Because OpenType can incorporate al glyphs for a ecic style and weight into a single font, the need for separate expert, alternate, swash, non-Latin, and related glyph sets is eliminated. In aplications which suport OpenType layout features, such as Adobe’s InDesign® soware, glyphs are grouped according to their use.
    [Show full text]
  • Latex2ε Font Selection
    LATEX 2" font selection © Copyright 1995{2021, LATEX Project Team.∗ All rights reserved. March 2021 Contents 1 Introduction2 1.1 LATEX 2" fonts.............................2 1.2 Overview...............................2 1.3 Further information.........................3 2 Text fonts4 2.1 Text font attributes.........................4 2.2 Selection commands.........................7 2.3 Internals................................8 2.4 Parameters for author commands..................9 2.5 Special font declaration commands................. 10 3 Math fonts 11 3.1 Math font attributes......................... 11 3.2 Selection commands......................... 12 3.3 Declaring math versions....................... 13 3.4 Declaring math alphabets...................... 13 3.5 Declaring symbol fonts........................ 14 3.6 Declaring math symbols....................... 15 3.7 Declaring math sizes......................... 17 4 Font installation 17 4.1 Font definition files.......................... 17 4.2 Font definition file commands.................... 18 4.3 Font file loading information..................... 19 4.4 Size functions............................. 20 5 Encodings 21 5.1 The fontenc package......................... 21 5.2 Encoding definition file commands................. 22 5.3 Default definitions.......................... 25 5.4 Encoding defaults........................... 26 5.5 Case changing............................. 27 ∗Thanks to Arash Esbati for documenting the newer NFSS features of 2020 1 6 Miscellanea 27 6.1 Font substitution..........................
    [Show full text]
  • Mandoc: Becoming the Main BSD Manual Toolbox
    mandoc: becoming the main BSD manual toolbox BSDCan 2015, June 13, Ottawa Ingo Schwarze <[email protected]> Cynthia Livingston’sOTTB “Bedifferent” (c) 2013 C. Livingston (with permission) > Ingo Schwarze: mandoc page 2: INTROI BSDCan 2015, June 13, Ottawa Brief history of UNIX documentation • The key point: All documentation in one place and one format. Easy to find, uniform and easy to read and write. Be correct, complete, concise. • 1964: RUNOFF/roffmarkup syntax by Jerome H. Saltzer,MIT. Unobtrusive,diff(1)-friendly,easy to hand-edit, simple tools, high quality output. • 1971: Basic manual structure by Ken Thompson and Dennis Ritchie for the AT&T Version 1 UNIX manuals, Bell Labs. • 1979: man(7) physical markup language for AT&T Version 7 UNIX. • 1989: mdoc(7) semantic markup by Cynthia Livingston for 4.3BSD-Reno. Powerful, self-contained, portable. • 1989: GNU troffbyJames Clarke. • 2001: mdoc(7) rewrite by Werner Lemberg and Ruslan Ermilovfor groff-1.17. • 2008: mandoc(1) started by Kristaps Dzonsons. • 2010: mandoc(1) is the only documentation formatter in the OpenBSD base system. • 2014: mandoc(1) used by default in OpenBSD, FreeBSD, NetBSD, illumos. 16:19:30 What is the mandoc toolbox? → < > Ingo Schwarze: mandoc page 3: INTROIIBSDCan 2015, June 13, Ottawa What is the mandoc toolbox? User perspective:man(1), the manual viewer One comprehensive tool! Normal operation always proceeds in three steps: 1. Find one or more manuals in the file system or using a database by manual name — man(1) — or by search query — apropos(1) =man -k The result of this step can be printed out with man -w.
    [Show full text]