将文件内容包含到 LaTeX 的同一行中

将文件内容包含到 LaTeX 的同一行中

我正在尝试生成一个 PDF 文件,其中某一部分包含用户输入。我希望它放在同一行,使用相同的字体,并且没有特殊字符来扰乱解析。我以为我可以通过将用户输入放入文件并使用包中的命令读取它来实现这一点\verbatiminputverbatim但我没有得到我想要的结果。

name.txt有这样的内容:

Bobby {[(*&%#@!_\':>?, ,.;;'\][ Tables

这是 LaTeX 代码:

\documentclass[a4paper]{article}

\usepackage{verbatim}

\begin{document}

\makeatletter
\def\verbatim@font{}
\makeatother

For \verbatiminput{name.txt}

\end{document}

结果是:

这不是我想要的,文件内容放在单独的行上

的内容name.txt放在单独的行上并向左缩进。

但这是我真正想要的:

我想要的结果,文件内容放在同一行

就好像我name.txt在同一行上输入了所有正确转义的内容一样。

有没有可以做到这一点的包?或者有配置方法verbatim?我尝试查看其代码,但只能弄清楚如何保持字体不变,而不知道如何将其保持在同一段落中。

答案1

您可以声明自己的逐字环境\setverb

\def\setverb{\def\do##1{\catcode`##1=12}\dospecials }
\def\verbinput#1{\bgroup \setverb \input{#1}\unskip\egroup}

For \verbinput{name.txt}, next text.

\bye

您必须使用 ASCII 编码字体,没有默认的 cmr10(不幸的是,i 不是 ASCII 编码的)。

答案2

\verbatiminput是使用\trivlist(类似方程式)实现的,由多行文本组成。

演示

\documentclass[a4paper]{article}

\usepackage{verbatim}

\begin{document}

\makeatletter
\def\verbatim@font{}
\makeatother

\hrule
\noindent For \parbox{0.8\textwidth}{\verbatiminput{name.txt}}
\hrule

\end{document}

相关内容