This article explains how to typeset Spanish text: enabling correct typesetting of accented characters, such as ñ, and providing support for language-specific features such as hyphenation.
Spanish text example using pdfLaTeXWe’ll start with the following pdfLaTeX example which you can open in Overleaf using the link below the code.
\documentclass{article} % Set the font (output) encodings \usepackage[T1]{fontenc} % \usepackage[utf8]{inputenc} is no longer required (since 2018) % Spanish-specific commands \usepackage[spanish]{babel} \begin{document} \tableofcontents \vspace{2cm} %Add a 2cm space \begin{abstract} Este es un breve resumen del contenido del documento escrito en español. \end{abstract} \section{Sección introductoria} Esta es la primera sección, podemos agregar algunos elementos adicionales y todo será escrito correctamente. Más aún, si una palabra es demasiado larga y tiene que ser truncada, babel tratará de truncarla correctamente dependiendo del idioma. \section{Sección con teoremas} Esta sección es para ver qué pasa con los comandos que definen texto \end{document}
Open this pdfLaTeX example in Overleaf
This example produces the following output:
Text files: integers and charactersAny text file, such as a LaTeX input .tex
file, is nothing more than a stream of numeric (integer) values which are being used as a mechanism to represent characters of text; consequently, processing a text file involves scanning (reading/processing) a series of integer values. However, an important question arises: which set of characters is actually represented by the integer values contained in a particular text file? In other words, how have those integer values been encoded: what is the correct (intended) "mapping" (encoding) from integers in the text file to the corresponding characters they are supposed to represent?
Text files can be generated within innumerable computing environments: across different countries/continents, using a multitude of different devices, operating systems and editing tools. Originators of text files could, potentially, use or apply different text encodings according to local requirements, such as language, when generating and storing the sequence of integer values chosen to represent the individual characters contained in a text file. This may work well if the generated text files stayed within compatible technical ecosystems, which use the same encoding, but what would happen when those files are transferred to completely different environments—because many text files do not contain any information which indicates the encoding used to generate them.
Clearly, the producer (originator) and consumer (user) of textual data must, somehow, agree on the encoding (mapping) being used, otherwise encoding errors are likely to arise due to mismatches between the integer data in the file and the set of characters it is assumed to represent. In addition to correctly mapping text file integer values to characters, any subsequent visual display of those characters requires some form of font that is capable of providing the data (shapes, or even bitmaps) to output a visual representation of the desired characters.
Input encoding:inputenc
, UTF-8 and a change to LaTeX in 2018
Historically, a variety of 8-bit encodings were used to generate/process text files, including LaTeX inputs. To cut short a very long story, the developers of LaTeX created the inputenc
package to address encoding issues—allowing text files, created using various encodings, to be transferred between disparate LaTeX installations.
However, over time, users/software developers moved away from multiple 8-bit encodings to using Unicode and its UTF-8 encoding scheme, which became the de facto option for encoding text files. Prior to 2018, to process UTF-8 encoded files LaTeX document preambles included the line
\usepackage[utf8]{inputenc}
Readers might observe that the example above does not include the line \usepackage[utf8]{inputenc}
in the document preamble: why is that? This is due to an important change to LaTeX introduced in 2018: a switch to UTF-8 as the default input encoding. Documents typeset with pdfLaTeX, and using UTF-8 encoded text, including those created and typeset on Overleaf, no longer need to include \usepackage[utf8]{inputenc}
but is does no harm to do so. For further information see the April 2018 issue of LaTeX News and the Overleaf blog post TeX Live upgrade—September 2019. All text files created on Overleaf are encoded using UTF-8.
fontenc
package
To correctly typeset characters contained within input files, those characters need to be mapped to the appropriate output shapes (glyphs) contained in fonts used to typeset the document. This “output encoding” is handled by another package called fontenc
.
To use fontenc
include the following line in your document preamble, using an encoding, such as the T1 encoding, which supports accented characters contained in Latin-based languages:
Using the T1
font encoding, via \usepackage[T1]{fontenc}
, has other benefits:
OT1
encoding causes TeX engines to “fake” accented characters by typesetting (combining) a base character with an overlaid, and shifted, accent character.T1
encoding avoids this.T1
encoding, to access genuine accented characters, improves hyphenation.T1
font encoding
The following chart lists the T1
font encoding. It is reproduced from page 22 of the document LaTeX font encodings which is available on CTAN.
To extend the default capabilities of LaTeX, providing proper hyphenation and translation of the names of document elements, import the babel
package using the spanish
language option.
\usepackage[spanish]{babel}
As you may see in the example using pdfLaTeX, instead of “Abstract” and “Contents” the Spanish versions “Resumen” and “Índice” are used.
Babel provides additional localization support for Spanish via the parameters mexico
and mexico-com
, the latter will use a comma instead of a dot as the decimal marker in mathematical mode. These options can be passed to the babel
package along with Spanish support:
\usepackage[spanish, mexico]{babel}
Some mathematical commands are also localized for Spanish, as shown in the following example which also demonstrates Spanish quotation marks (<<
and >>
):
\documentclass{article} \usepackage[T1]{fontenc} \usepackage[spanish]{babel} \begin{document} \section{Sección con teoremas} Esta sección es para ver que pasa con los comandos que definen texto \[ \lim x = \tg {\theta} + \max \{3.52, 4.22\} \] El paquete también agrega un comportamiento especial a <<éstas márcas para hacer citas textuales>> tal como lo indican las relgas de la RAE. \end{document}
Open this pdfLaTeX example in Overleaf
This example produces the following output:
Here, you can see that \max
and \lim
are displayed using accented characters. For a complete list of mathematical symbols in Spanish see the reference guide. Details of additional features for localization of math commands can be found in the (Spanish) documentation for the babel-spanish
package.
The character sequences <<
and >>
are used to produce Spanish quotation marks, which can conflict with some packages. See the (Spanish) documentation of the babel-spanish
package for further details on use of quotation marks.
The babel
package usually does a good job of providing language-specific hyphenation capabilities, but if a particular word does not hyphenate correctly there are packages to assist. For example, you can add the hyphenat
package in your preamble:
\usepackage{hyphenat} \hyphenation{mate-máti-cas recu-perar}
The first command will import the package hyphenat
and the second line is a list of space-separated words with defined hyphenation rules. On the other side, if you want a word not to be broken automatically, use the {\nobreak word}
command within your document.
Spanish LaTeX commands in mathematical mode
LaTeX command Output\sen
sen \tg
tg \arcsen
arc sen \arccos
arc cos \arctg
arc tg \lim
lím \limsup
lím sup \liminf
lím inf \max
máx \inf
ínf \min
mín Further reading
For more information see
babel-spanish
packageRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4