14

I have blocks surrounded by \begin{verbatim} and \end{verbatim}. I'd like to indent these about half an inch. I'm using pandoc to write pdfs via XeLaTeX and the default.latex pandoc template, so I'd like not to create a new environment, but to revise the behavior of verbatim in default.latex so that it is indented a little.

15

The package fancyvrb has the enhanced Verbatim environment, and the key xleftmargin:

\documentclass{article}
\usepackage{fancyvrb}

\begin{document}
\thispagestyle{empty}

\noindent A non-verbatim line
\begin{Verbatim}[xleftmargin=.5in]
Some verbatim
lines
\end{Verbatim}
\noindent Another line
\end{document}

enter image description here

Moreover, you can redefine the standard verbatim like this:

\documentclass{article}
\usepackage{fancyvrb}

\DefineVerbatimEnvironment{verbatim}{Verbatim}{xleftmargin=.5in}

\begin{document}
\thispagestyle{empty}
\noindent A non-verbatim line
\begin{verbatim}
Some verbatim
lines
\end{verbatim}
\noindent Another line
\end{document}

This gives the same result as above

8

The verbatim package has an internal interface that allows one to do this. One has to redefine \verbatim@processline, adding an \hspace command at its start:

\documentclass{article}
\usepackage{verbatim}
\newlength\myverbindent 
\setlength\myverbindent{1in} % change this to change indentation
\makeatletter
\def\verbatim@processline{%
  \hspace{\myverbindent}\the\verbatim@line\par}
\makeatother
\begin{document}

\noindent Unindented text followed by 1 inch indented verbatim:
\begin{verbatim}
verbatim \stuff
\and more stuff
\end{verbatim}

\setlength\myverbindent{.5in}
\noindent Unindented text followed by .5 inch indented verbatim:
\begin{verbatim}
verbatim \stuff
\and more stuff
\end{verbatim}

\end{document}

output

6

verbatim like most LaTeX display environments is a list environment, and one of the main reasons for that is so that they do the right thing when nested in other display environment such as quote (or a similar custom environment with different indentation).

enter image description here

\documentclass{article}

\begin{document}

X\dotfill X\\
X\dotfill X
\begin{verbatim}
%
 $$
  @@@
   ####
\end{verbatim}
X\dotfill X
\begin{quote}
\begin{verbatim}
%
 $$
  @@@
   ####
\end{verbatim}
\end{quote}
X\dotfill X


\end{document}
3

As long as your verbatim block doesn't span a page break, you can use the verbatimbox package. The verbbox environment puts the verbatim into a box that can be recalled with \theverbbox. The [t] option makes sure the box is strutted, to give the proper vertical spacing from the previous line.

\documentclass{article}
\usepackage{verbatimbox}
\begin{document}
\noindent Unindented text

\begin{verbbox}
This is
\verbatim text
\end{verbbox}
\theverbbox[t]

\noindent Unindented text
\end{document}

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.