我想要一个环境,在这个环境中,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}