精心排版逐字文本

精心排版逐字文本

我想要一个环境,在这个环境中,LaTeX 可以像其他方式一样排版文本,但在此环境中不接受任何命令。这个问题fancyvrb解决了问题。和软件包都不能解决问题verbatim

我需要此功能,因为我正在从多个纯文本源编写 LaTeX 文档,其中的文本由对 TeX 或 LaTeX 一无所知的作者编写。因此,环境应该将所有内容视为普通文本。它应该换行、连字符,并执行 LaTeX 对普通文本的操作。

有人知道如何解决这个问题吗?

编辑:

例如,有人在纯文本输入字段中写下以下内容:

纯文本输入

这将导致以下 PDF 输出:

在此处输入图片描述

一切仍然很好,但后来有人想出了一个好主意,在文本的某个地方写上“\textbf{}”。它实际上可以是任何东西,比如“%”或“$”或“_”,但我想你明白了。文本输入现在看起来像:

在此处输入图片描述

PDF 输出如下所示:

在此处输入图片描述

但我希望它看起来像:

在此处输入图片描述

因此,我正在寻找像这样的环境:

在此处输入图片描述

它仍然像排版其他文本一样排版文本,但忽略所有特殊字符和命令。如果可以避免的话,我真的不想编写一个可以完成所有魔法的解析器……

编辑2:

使用David Carlisle在答案中设计的方法:

在此处输入图片描述

得到此 PDF 的结果:

在此处输入图片描述

所以还没有完全实现。

编辑3:

我很抱歉 - 我们确实在那里。我忘了添加“\usepackage[T1]{fontenc}”。我不能让它失败,所以我很高兴。谢谢 David!

答案1

在此处输入图片描述

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

\setlength\textwidth{20em}


\begingroup
\makeatletter
\gdef\plaintext{\let\do\@makeother\dospecials\catcode32=10\relax\xplaintext}
\catcode`\!=0
!catcode`\\=12
!catcode`{=12
!catcode`}=12
!catcode`(=1
!catcode`)=2
!long!gdef!xplaintext#1\end{plaintext}(%
#1!end(plaintext))
!endgroup



\begin{document}


\begin{plaintext}

this % text has ^ & _ but seems to work alright, hyphenation 
or extremely longish words seems to work OK.

Blank lines do form a paragraph but \this is not an undefined
command and \includegraphics{this is not a picture}

\end{plaintext}

\end{document}

答案2

这种方法使用了\detokenize,但将其包装在段落解析器中,该解析器将逐字格式化行和段落。喜欢方式。编辑后加入了一个角色陷阱%,借鉴了 David 的方法。但是,至少有一个地方会出错:不匹配的括号{}

然而,这种限制可能会或可能不会给您带来难以克服的问题。

\documentclass{article}
\usepackage[T1]{fontenc}
\newcommand\verbpars{\bgroup\catcode`\%=12 \verbparsProper}
\newcommand\verbparsProper[1]{\verbparhelp#1\par\relax\relax\egroup}
\long\def\verbparhelp#1\par#2\relax{%
  \detokenize{#1}\ifx\relax#2\else\par\verbparhelp#2\relax\fi}
\begin{document}
\verbpars{%
this is a test $#@\\&!@~`_<>|\ this is a test $#@\\&!@~` this is a test $#@\\&!@~`
  this is a test $#@\\&!@~` this is a test $#@\\&!@~` this is a test $#@\\&!@~`

and now I have another test.} Regular \LaTeX{} continued in same par.

\verbpars{I have succeeded in making it work with an unquoted 
  percent sign % but it will still break with unmatched braces{}.  

But otherwise it may get you what you need.}

% This should not be seen
\end{document}

在此处输入图片描述

相关内容