170

I would like to be able to make a single word in a text look like a coded word. Is there any command such as \code{...} which allows me to do so?

(basically, I want to produce something like above for the "\code{...}" part)

4
  • 4
    Do you want it to change the background to grey too?
    – N.N.
    Nov 24, 2011 at 11:15
  • 1
    @N.N : it could have been even better yeah, but it's not extremely important.
    – SRKX
    Nov 24, 2011 at 12:46
  • 5
    The answer is texttt{} how that is an unhuman command. How is anyone suppose to remember this? If you figure out what the ttt's stand for please tell me! Oct 15, 2019 at 16:12
  • 10
    @CharlieParker I'm pretty sure texttt stands for text teletype. Similarly there are for example \textrm, where rm stands for roman, and \textsf where sf stands for serif. Jan 30, 2020 at 13:56

5 Answers 5

206

Normally a monospaced font is used for this. This is accomplished with \texttt{...}. If you want to use code, you can use \def\code#1{\texttt{#1}}. From that point on you can write \code{...} to get monospaced output.

15
  • 38
    I'd prefer \newcommand{\code}[1]{\texttt{#1}} as you're dealing with LaTeX. Even better \newcommand{\code}{\texttt}, but this is quite advanced.
    – egreg
    Nov 24, 2011 at 11:40
  • 5
    @egreg I'm not so sure about the last approach (yes, I know why you're doing it, but from an interface POV I prefer macros where the arguments required are clear).
    – Joseph Wright
    Nov 24, 2011 at 11:41
  • 3
    @JosephWright That's why I wrote that it's advanced. :)
    – egreg
    Nov 24, 2011 at 11:50
  • 6
    I would also wrap a \mbox around the \texttt, to avoid the word being hyphenated if it happens to fall near the end of a line. Nov 24, 2011 at 11:51
  • 3
    @CharlieParker \texttt{} is named with the same logic as \textbf{}. That is, '\text' followed by the style abbreviated. The bf is short for bold face and tt is short for teletype which is the traditional name for monospaced fonts. Nov 7, 2019 at 7:27
42

If you want a single word to look like a coded word and also to have a light-gray background as in StackExchange you can predefine a color \definecolor{light-gray}{gray}{0.95} and then define a new command: \newcommand{\code}[1]{\colorbox{light-gray}{\texttt{#1}}}.

From this point on you can use \code{word} to get mono-spaced words with gray background.

Of course for this to work you will need to load the xcolor package before \definecolor.

A full example would look like this:

% Better inline directory listings
\usepackage{xcolor}
\definecolor{light-gray}{gray}{0.95}
\newcommand{\code}[1]{\colorbox{light-gray}{\texttt{#1}}}
8
  • 1
    Awesome, that's what I was looking for. Thanks :D
    – Sidahmed
    Feb 7, 2017 at 11:41
  • 3
    This is what the people want!
    – sunspots
    Feb 12, 2018 at 7:51
  • Hi. I've tried to do this in a document, but my document won't compile unless I surround the word like \code{$word$}, and then it puts everything in math font. When I don't it says "! Missing $ inserted.". Any ideas? Sep 10, 2018 at 19:22
  • @lafemmecosmique Did your 'word' contain underscores?
    – Ilya Popov
    Sep 27, 2018 at 16:02
  • 1
    Awesome. I just coded this exact solution myself (color and all) before searching for community solutions. Great minds think alike!
    – delrocco
    Aug 8, 2019 at 15:10
28

I can't believe nobody mentioned the listings package. It provides a command called \lstinline{your_code} which can even highlight keywords for you.

See also this question: Should I use \lstinline for the language keywords embedded in text?

3
  • 2
    Syntax: \lstinline[⟨key=value list⟩]⟨character⟩⟨source code⟩⟨same character⟩ Also, some engines support a wider working range of working <character> delimiters. For exampe, I found ¿ to work with xelatex and not with pdflatex. Feb 18, 2019 at 6:35
  • 1
    This should be the answer. No hands-on formatting where it can be avoided in LaTeX. Sep 28, 2020 at 12:45
  • This is the best answer and it could be mixed with others \newcommand{\code}[1]{\lstinline{#1}} Oct 29 at 15:15
17

\verb|code| or \verb#code# also works. It creates characters in monospace, although its primary utility to enter commands that the compiler wont confuse as tex commands.

2
  • 2
    Why does \verb use | or # to start and end code rather than the usual { and }? Nov 29, 2016 at 14:52
  • 1
    @user3728501 what if I wanted to give an example LaTeX command using verbatim? I'd need different delimiters to indicate when to start/stop the verbatim text (since the { and } would need to be rendered as verbatim text). Aug 6, 2018 at 13:44
2

I would recommend my package ffcode, which makes it as simple as this:

\documentclass{article}
\usepackage{ffcode}
\begin{document}
The function \ff{foo} can be used in a loop:
\begin{ffcode}
while (true) {
  foo(i++);
}
\end{ffcode}
\end{document}

The package uses minted for code blocks and tcolorbox for individual words.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .