Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want to generate a PDF of user-submitted text using LaTeX. To handle crazy user input, I first thought about using the verbatim package, but of course it doesn't break up too long lines. Is there some package that works similar to verbatim (i.e., accept any input) but formats the text nicely?

share|improve this question

migrated from stackoverflow.com Mar 27 '11 at 9:45

This question came from our site for professional and enthusiast programmers.

    
Did you find the solution¿? –  nowf Sep 20 '10 at 9:08
    
I didn't find a way to use the verbatim package - instead I tried to cover all special cases by unrolling all LaTeX commands and all "special" characters. –  kotlinski Sep 20 '10 at 14:02

4 Answers 4

You can use \def\@xobeysp{ } in the preamble of your document to make all spaces regular (breaking) spaces. This will not hyphenate or break ultra-long words, though.

To format the text nicely, you can use the Verbatim environment, in the fancyvrb package:

\begin{Verbatim}[formatcom=\sffamily]
  Hello world hello world hello world
  Test
\end{Verbatim}

Will print the text in a Sans-seriF font family.

Though (I'm sorry!) the \def\@xobeysp{ } won't work with the Verbatim environment... So you must choose between the two.

share|improve this answer

Depending on what you exactly need, this might be sufficient: we reset all special characters to catcode other, in particular \, { and } lose their meaning. This will make it pretty hard to inject LaTeX code.

\documentclass[12pt]{article}

\usepackage[T1]{fontenc}

\makeatletter
\newcommand\saferead[1]{%
  \bgroup
  \let\do\@makeother
  \dospecials\catcode`\ 10
  \input{#1}%
  \egroup 
}
\makeatother

\begin{document}
And to show it, we input ourselves: \saferead{test.tex}
\end{document}
share|improve this answer
\usepackage{spverbatim}
...

\begin{spverbatim}
This is a very long line.1

\end{spverbatim}

The spverbatim package enables LaTEX to break lines at spaces within verbatim text.

share|improve this answer

The listings package provides you with a verbatim environment which can break lines:

\begin{lstlisting}[breaklines]
  Long user text
\end{lstlisting}

If the user text is in an external file you can also use:

\lstinputlisting[breaklines]{filename}
share|improve this answer
1  
See also the answer at <tex.stackexchange.com/questions/11973/…; for an example of adjusting the formatting of the lstlisting environment. –  Scott Morrison Feb 26 '13 at 23:05

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.