Tag Archives: Quotation Marks

Quotation Marks and the LaTeX dirtytalk package

When typesetting documents in LaTeX, users must be aware of the rules regarding quotations for different languages. In the English language, there are differences between the primary and secondary quotation marks used in US and UK English as we can see in our CTAN Quotation Packages in LaTeX blog article. To make things even more interesting, while the German language has its own set of quotation marks („ quote”) used in everyday writing, some modern printed books use a reverse order French quotation marks or « quillemets ».

While babel package does allow for the typesetting of quotation marks across different languages, see table below, and though it is possible to use either the appropriate key combination or TeX code, typing quotes can be cumbersome depending on the language.

Table of international quotation marks and their babel key combinations and LaTeX codes
Language Quotation Marks Key Combination LaTeX Code
 Primary  Secondary Primary  Secondary  Primary  Secondary
 English (UK)  ‘…’  “…” …' …''
 English (US)   “…”  ‘…’ …''  …'
 German  „…”  ‚…’ "…"'  \glqq…\grqq  \glq…\grq
 French  «…»  «…» "‹…"›  \flqq…\frqq \flqq…\frqq
 Danish  »…«  ›…‹  \frqq…\flqq  \frq…\flq
 Lithuanian  „…” "…"'  \glqq…\grqq
 Russian  «…»  „…” "‹…"›  "…"'  \flqq…\frqq  \glqq…\grqq
 Ukrainian  «…»  \flqq…\frqq

Typesetting Quotation Marks

The dirtytalk package allows easier typesetting of quotations using the command \say{something}. The appropriate quotation marks are inserted by the macro and the package also allows for nested quotations. This makes entering quotations much easier.

How quotation glyphs are used can be loaded in the package options. As we can see from the above table, an English writer from the US might enter:

For example, we can use:

Which gives us:

"What did you mean when you said 'that' computer?"

For UK English, we load the options:

Which gives us:

'What did you mean when you said "that" computer?'

Being aware and manually tracking these typographic rules for quotations can make proofreading code difficult if we are just looking at LaTeX code. In that regard the dirtytalk package can help.

The French, Danish and Russian Languages

Entering quotation marks in English is easy but what if you working in another language, say French or Danish? Both languages make use of guillemets or « angle quotes ». The babel package uses the \flqq and the \frqq commands to typeset these glyphs but entering them can be a tad bit inconvenient.

To get our French quotations, we set the options as follows:

While there are single quillemets, ‹ and ›, that do exist in the babel package, they aren't typically used and just entering single angle brackets or the "greater than'' and "less than'' sign, < and > respectively, doesn't quite achieve the intended results.

In the Danish language, the quillemets are reversed while in the Russian language, there is a mix of guillemets and the German `low 9'' („) quotation marks.

In the Russian language, we can set our dirtytalk options to look like:

Advantages and Disadvantages

The dirtytalk package makes the typesetting of quotations in any language easier but there are some limitations. For one, it only allows for one set of nested quotations and anything beyond will take some user modification of the package. The second disadvantage to the package is that it can only handle quotations in one language. For documents that contain more than one language there are other options but for what it does, the dirtytalk package works nicely.

CTAN Quotation Packages in LaTeX

In LaTeX, typing quotation marks in English (either US or UK) is easy but doing so consistently and across different languages is problematic. The problem stems from the array of different marks each language uses. We can see in table \ref{tab:table1} the different marks across languages. To ensure uniform typography, writers must be aware of and pay attention to various language rules, e.g. the primary and secondary quotation marks are swapped in UK and US English.

Table of primary and secondary quotation marks for different languages
Language Primary Secondary
English(UK) '…'
English(US) '…'
Danish »…« >…<
Lithuanian „…” No secondary quotes
French «…» «…»
German „…” ‚…’
Russian «…» „…”
Ukrainian «…» No Secondary Quotes

To make life easier, there are several packages on the CTAN database that makes the entering of quotation marks easier and efficient.

The dirtytalk Package




This is a very small LaTeX package that runs just 51 lines with just one command: \say. It can be loaded in the preamble: \usepackage{dirtytalk} and supports one nested quotation thus allowing for consistent primary and secondary application of quotation marks. Users can also redefine the quotation marks:

Here we can see the code for German quotations.


  • Easy of use, only one command.
  • Supports nested quotations.


  • Only one nested quotation. No rule for adding more nested quotations without modifying package source code.
  • No support for babel or polyglossia for quotes glyphes.

To learn more, read our dirtytalk article.

The csquotes Package




A fairly large package with advanced facilities for inline and display quotations. Supports a wide-range of commands, environments and user-definable quotes. Quotes can be adjusted to the current languages. Autostyle can be turned by autostyle=true in the options. There are vast variety of commands to insert quotes: inline, quotes with sources, block-quotes with the support of changing language.


  • Usage of babel and polyglossia packages for quotations marks.
  • Custom number of nested quotes.
  • Multilingual documents: options to set language for arbitrary quote.


  • Vast number of options and commands --- too complex for most tasks.

The epigraph Package




Another large package with vast of options to typeset the epigraphs and epigraphs lists. Provides commands for typesetting a single epigraph: \epigraph, and an epigraphs for typesetting a list of epigraphs. Can be typeset at either left, right and center of the typeblock.


  • Easy typeset of quotes and quotes list.
  • Many options for customization.
  • Can be used with bibliography.


  • Looks like it being frozen - long time without update.

The fancychapters Package


Only exists as LaTeX source code


The package adds two new commands:

  • \Chapter{«quote»}{«title»}
  • \Chapter{«quote»}[«abbrev»]{«title»}

Simple package to print fancy chapter headings.


  • Automatic calculation of width to print fancy quotation and chapter name.


  • Can be used only with book and report documentstyles.
  • Works only for chapters: support for custom document parts like the empheq package.

The quotchap Package




A very small package of only only 87 lines for typesetting quotations after the \chapter command by redefining both the \chapter macro and its starred version.


  • Better than the fancychapter package as it is newer and more customizable.
  • Color and fonts can be customized easily.


  • Works only with book and report classes.

The epigram Package

Manual (in source code)

No official manual exists other than the LaTeX source code file.


A package that provides an \epigram command to typeset epigrams that is both easy and simple to use. It is so small that the entire code can be shown here:


  • So simple that it's hard to break.


  • There are few (almost no) options for customization.
  • Looks like nothing more than the simple example of package.


  • As we can see, there are a number of interesting and useful CTAN packages for typesetting quotations, quotes and heading for chapters.If you need to just typeset simple quotes or quotations the best way is the dirtytalk package for it simplicity. This can be wrapped it in the flushleft environment.
  • For simple chapter headings we can use the epigram or the fancychapters packages. The epigraph can also be used for typesetting list of quotes.
  • The best package for typesetting quotes is the csquotes package as there is support for almost everything from automatic quotes symbols detection, inline-, block- quotes, vast options for customization, multilingual support and much more. This package is large, making it more suitable for large documents with many languages.