How to change the name of document elements like "Figure", "Contents", "Bibliography", "Appendix", etc.?
The answer depends on whether or not you use a language package like babel
or polyglossia
.
Without babel
Names like "Figure" and "Contents" are stored in macros like \figurename
and \contentsname
, i.e., to change them, you have to change the definition of the respective macros. Add the following to your preamble:
\renewcommand{\figurename}{Fig.}
\renewcommand{\contentsname}{Table of Contents}
Here's a list of the "name macros" (and their default meaning) defined by the LaTeX standard classes article
, book
, and report
:
\abstractname
[onlyarticle
,report
]: Abstract\appendixname
: Appendix\bibname
[onlybook
,report
]: Bibliography\chaptername
[onlybook
,report
]: Chapter\contentsname
: Contents\figurename
: Figure\indexname
: Index\listfigurename
: List of Figures\listtablename
: List of Tables\partname
: Part\refname
[onlyarticle
]: References\tablename
: Table
Other classes and packages may define additional "name macros"; here are some you're likely to come up against (plus their source):
\acronymname
[glossaries
]: Acronyms\alsoname
[makeidx
]: see also\ccname
[letter
]: cc\enclname
[letter
]: encl\glossaryname
[glossaries
]: Glossary\headtoname
[letter
]: To\lstlistingname
[listings
]: Listing (the environment)\lstlistlistingname
[listings
]: Listings (the "List of")\nomname
[nomencl
]: Nomenclature\notesname
[endnotes
]: Notes\pagename
[letter
]: Page\prefacename
[babel
]: Preface\proofname
[amsthm
]: Proof\seename
[makeidx
]: see (misdefined as "see also" in the AMS classes)\seeonlyname
[AMS classes]: see
With babel
(or polyglossia
)
The same principles as above apply – with one crucial difference: for every language, "name macros" must be redefined in the argument of \addto\captions<language>
(instead of a simple \renewcommand
). That is, for the English language, you'd have to add the following to your preamble (after loading babel
(or polyglossia
)):
\addto\captionsenglish{%
\renewcommand{\figurename}{Fig.}%
\renewcommand{\contentsname}{Table of Contents}%
}
Changing "Bibliography" and "References" with biblatex
The biblatex
package is an exception to the rule: It uses "bibliography strings" for (among other things) the headings of bibliographies, so redefining \bibname
or \refname
won't work (whether you use babel
or not). To rename both "Bibliography" and "References" to "Works Cited" for the English language, add the following to your preamble:
\DefineBibliographyStrings{english}{%
bibliography = {Works Cited},
references = {Works Cited},
}
Afterword
"Name macros" should only contain the string to be printed. Don't add formatting instructions like \renewcommand{\contentsname}{\vspace{20pt}{\Huge Table of Contents}}
– they may "work" in the document body, but are likely to play havoc with, e.g., headers and bookmarks. To change the formatting of the "Contents" heading, either redefine \tableofcontents
as shown in this answer or, if you want your changes to apply to all sectioning headings, have a look at the titlesec
package. For captions, the caption
package offers a host of customization possibilities.
In addition to the answer of lockstep:
With KOMA-Script
KOMA-Script (to be correct, package scrbase
, which is called in the KOMA-Script classes scrartcl
, scrreprt
, scrbook
and scrlttr2
and in the KOMA-Script package scrextend
) defines two macros for naming or renaming LaTeX names:
\newcaptionname{language}{LaTeX name}{new content} % new name
\renewcaptionname{language}{LaTeX name}{new content} % renew existing name
Here is a example for German language:
\renewcaptionname{ngerman}{\contentsname}{Inhalt} %Table of contents
\renewcaptionname{ngerman}{\listfigurename}{Abbildungen} %Figures
\renewcaptionname{ngerman}{\listtablename}{Tabellen} %Tables
\renewcaptionname{ngerman}{\figurename}{Abb.} %Figure
\renewcaptionname{ngerman}{\tablename}{Tab.} %Table
\renewcaptionname{ngerman}{\bibname}{Literatur} %Bibliography
\newcaptionname{ngerman}{\lstlistlistingname}{Quelltexte} %Table of listings
\newcaptionname{ngerman}{\lstlistingname}{Quelltext} %Listing
You can see, that \renewcaptionname
renames an existing LaTeX name like \contentsname
. The macro \newcaptionname
defines a new LaTeX name for KOMA-Script like \lstlistingname
(because \lstlistingname
is not defined in KOMA-Script).
If you use package babel
together with KOMA-Script it is better to use the mechanism of KOMA-Script instead of babel
s because KOMA-Script has a better verification.
Update:
With loading the package scrextend
(see chapter 16, file scrguien.pdf
, texdoc scrguien
) you can use some KOMA-Script features with non KOMA-Script classes. For example scrextend
loads scrbase
.
The following MWE shows, that it works nice, and that loading of scrextend
does not redefine the default font for titles in standard classes: it stays in serif (roman), while in KOMA-Script the default is sans-serif. Compile first with the commented line, then uncomment and compile again. Compare the titles of the table of contents.
\listfiles % to check if scrbase is loaded
\documentclass{article} % original class
\usepackage{scrextend} % allows some KOMA-Script features
\usepackage[english]{babel} % needed for "blindtext"
\usepackage{blindtext} % to create dummy text
% \renewcaptionname{english}{\contentsname}{Contents of ``Blindtext''} % renaming in KOMA-Script
\begin{document}
\tableofcontents
\newpage
\blinddocument % dummy text including several headings for TOC
\end{document}
Update 2:
If you are not sure whether package scrbase
is loaded or not you can test it with the command \listfiles
(see first line in the MWE above). Command \listfiles
prints in the log
file a list with all called packages in your document. So if package scrbase
is loaded you find it in this list (including used version), like this:
scrkbase.sty 2012/07/29 v3.11b KOMA-Script package (KOMA-Script-dependent basics and keyval usage)
scrbase.sty 2012/07/29 v3.11b KOMA-Script package (KOMA-Script-independent basics and keyval usage)
For documents using minted
package by Konrad Rudolph, one can change the name of document elements as follows:
\renewcommand\listingscaption{Code-Snippet}
\renewcommand\listoflistingscaption{List of program codes}
I added this answer as response to the comment of OP in Reference Code snippet in latex using minted