2

How one may with section titled "zażółć gęślą jaźń" or "\newline is a new line in LaTeX" may easily escape them? It is ceratin that nothing there should be treated as LaTeX formatting.

There is a nice solution for normal text, described in How can I escape plain text?

Unfortunately it fails for \section{}:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{fvextra}
\DefineVerbatimEnvironment{escape}
  {Verbatim}
  {fontfamily=\rmdefault,breaklines,breaksymbolleft={}}

\begin{document}

\tableofcontents
\newpage
\section{\begin{escape}\newline\end{escape}}
\begin{escape}
red fox
sauté
zażółć gęślą jaźń
\newline is a new line in LaTeX
Samp_Dist_Corr
whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever
\end{escape}

\end{document}

fails with

! Argument of \FV@BeginScanning has an extra }.
<inserted text> 
                \par 
l.14 \section{\begin{escape}\newline\end{escape}}

Using \section{\escape{\newline}} is not changing neither outcome nor error message.

To avoid XY problem: I am using pdflatex to generate pdf files from plaintext.

2 Answers2

4

Define also an inline version of escape and use cprotect.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{cprotect}
\usepackage{fvextra}
\DefineVerbatimEnvironment{escape}
  {Verbatim}
  {fontfamily=\rmdefault,breaklines,breaksymbolleft={}}
\CustomVerbatimCommand\escapeinline{Verb}{fontfamily=\rmdefault,breaklines,breaksymbolleft={}}

\begin{document}

\tableofcontents

\cprotect\section{\escapeinline|\newline|}

This is inline: \escapeinline|??{xx|

\begin{escape}
red fox
sauté
zażółć gęślą jaźń
\newline is a new line in LaTeX
Samp_Dist_Corr
whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever
\end{escape}

\end{document}

enter image description here

egreg
  • 1,121,712
  • Generally seems to work, though with high section count glitch appears - section number and start of section name are at the same place (http://i.imgur.com/FwUa2Q0.png). – reducing activity Mar 08 '17 at 11:13
  • 1
    @MateuszKonieczny That's a completely different problem. See http://tex.stackexchange.com/questions/7853/toc-text-numbers-alignment, for example. – egreg Mar 08 '17 at 11:19
2

verbatim like commands and environments usually do not work inside arguments of other commands. ltxdoc.cls, e.g., defines \cmd and \cs to solve this. They do not escape sequences of text but are used to print commands. A very simple suggestion would be to use TeX primitive \string, but you have to protect it inside \section:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{fvextra}
\DefineVerbatimEnvironment{escape}
  {Verbatim}
  {fontfamily=\rmdefault,breaklines,breaksymbolleft={}}

% from ltxdoc.cls:
\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
\makeatletter
\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
\def\cmd@to@cs#1#2{\char\number`#2\relax}
\makeatother

\begin{document}

\tableofcontents
\newpage
\section{\texttt{\protect\string\newline} \cmd\newline\space and \cs{newline}}
\begin{escape}
red fox
sauté
zażółć gęślą jaźń
\newline is a new line in LaTeX
Samp_Dist_Corr
whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever
\end{escape}

\end{document}

enter image description here

Schweinebacke
  • 26,336