Boxes and Glue: A Brief, but Visual, Introduction Using LuaTeX
An introduction for future articles
This post is a brief introduction to some key concepts/models involved in typesetting with
This node graph is produced from an \hbox{...}
created with the following
\hbox to100pt{A\hskip4pt plus3pt minus 2pt B%
\hskip 0pt plus 2fil C\hskip 0pt plus 2fill D\hskip 0pt plus 3fill}
which looks like this (drawn with a bounding rectangle):
These node graphs show the deep inner structure of \hbox{...}
or \vbox{...}
.
Back to the basics...
Even as a new, or casual, \baselineskip
).
Each typeset line of the paragraph is itself a box (containing other boxes—e.g., characters) and the typeset paragraph lines (boxes) are stacked vertically to produce the paragraph. Eventually, the largest box of all is produced: the typeset page. Clearly, this is an extremely simplified picture because you also need the ability to move and position those boxes and
Visualizing a typeset paragraph using
Using
The project’s code was written to illustrate this post and is not a full implementation of a paragraph “parser”—it ignores a number of
In the zoomed image section, below, you can see the individual paragraph lines shaded as grey strips—note there is white space between the lines: vertical glue which \baselineskip
and \lineskiplimit
.
When
- grey strips are the boundaries of the individual lines of the typeset paragraph;
- each character is shown within a box that defines its dimensions (as
sees it); - the yellow boxes show the glue that
has inserted between the words in order to achieve a pleasing linebreak. Observe the following: - the width of interword glue varies from line-to-line as
stretches or shrinks it to achieve each linebreak; - on the third line, the glue after the period character is wider than other glues on the same line.
- the red box shows where an explicit
\hbox{...}
was used. The definition of the\TeX
command puts the E into an\hbox{...}
so that it can be lowered to create the logo.
At the end of our example paragraph there is a long strip of glue which is called \parfillskip
: this is inserted by
Until the next post
We hope this post has provided a useful introduction to the principle of boxes and glue used within
Overleaf guides
- Creating a document in Overleaf
- Uploading a project
- Copying a project
- Creating a project from a template
- Using the Overleaf project menu
- Including images in Overleaf
- Exporting your work from Overleaf
- Working offline in Overleaf
- Using Track Changes in Overleaf
- Using bibliographies in Overleaf
- Sharing your work with others
- Using the History feature
- Debugging Compilation timeout errors
- How-to guides
- Guide to Overleaf’s premium features
LaTeX Basics
- Creating your first LaTeX document
- Choosing a LaTeX Compiler
- Paragraphs and new lines
- Bold, italics and underlining
- Lists
- Errors
Mathematics
- Mathematical expressions
- Subscripts and superscripts
- Brackets and Parentheses
- Matrices
- Fractions and Binomials
- Aligning equations
- Operators
- Spacing in math mode
- Integrals, sums and limits
- Display style in math mode
- List of Greek letters and math symbols
- Mathematical fonts
- Using the Symbol Palette in Overleaf
Figures and tables
- Inserting Images
- Tables
- Positioning Images and Tables
- Lists of Tables and Figures
- Drawing Diagrams Directly in LaTeX
- TikZ package
References and Citations
- Bibliography management with bibtex
- Bibliography management with natbib
- Bibliography management with biblatex
- Bibtex bibliography styles
- Natbib bibliography styles
- Natbib citation styles
- Biblatex bibliography styles
- Biblatex citation styles
Languages
- Multilingual typesetting on Overleaf using polyglossia and fontspec
- Multilingual typesetting on Overleaf using babel and fontspec
- International language support
- Quotations and quotation marks
- Arabic
- Chinese
- French
- German
- Greek
- Italian
- Japanese
- Korean
- Portuguese
- Russian
- Spanish
Document structure
- Sections and chapters
- Table of contents
- Cross referencing sections, equations and floats
- Indices
- Glossaries
- Nomenclatures
- Management in a large project
- Multi-file LaTeX projects
- Hyperlinks
Formatting
- Lengths in LaTeX
- Headers and footers
- Page numbering
- Paragraph formatting
- Line breaks and blank spaces
- Text alignment
- Page size and margins
- Single sided and double sided documents
- Multiple columns
- Counters
- Code listing
- Code Highlighting with minted
- Using colours in LaTeX
- Footnotes
- Margin notes
Fonts
Presentations
Commands
Field specific
- Theorems and proofs
- Chemistry formulae
- Feynman diagrams
- Molecular orbital diagrams
- Chess notation
- Knitting patterns
- CircuiTikz package
- Pgfplots package
- Typesetting exams in LaTeX
- Knitr
- Attribute Value Matrices
Class files
- Understanding packages and class files
- List of packages and class files
- Writing your own package
- Writing your own class