我有一个字符串,其中的文本间距精确,与我想要的显示方式一致。这有点像 ASCII 艺术项目。我想将此文本转换为 PDF,这样我就可以在当地的印刷店打印带有文本的海报。
字体需要固定宽度,并且不能有制表符或类似的东西。行以字符结尾\n
。有几个空格字符。
该图像有几百个字符宽和几百个字符高。因此,它不适合放在典型页面的空间中。
在 LaTeX 中有没有简单的方法可以做到这一点?
答案1
假设你的 ASCII 艺术项目包含在一个单独的文件中,例如,artproject.asc
你可以使用fancyvrb
包及其命令\VerbatimInput
使用“打字机”(又称等宽)字体显示文件内容。显然,有很多不同的等宽字体,因此您可能需要尝试一下并确定哪种字体最适合您的项目。
以下 MWE 显示了如何做到这一点;它假设纸张尺寸为,您希望页面四边的A0
边距为,并且您将使用字体“beramono”。1in
\documentclass{article}
\usepackage[a0paper,margin=1in]{geometry}
\usepackage{fancyvrb}
\usepackage{beramono} % or whatever monospaced font you wish to employ
\begin{document}
\pagestyle{empty} % don't need to display page numbers, right?
\VerbatimInput{artproject.asc}
\end{document}
答案2
您可以导入带有一些预设参数的文本文件(部分取自硬空格):
\documentclass{article}
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\usepackage{filecontents}% http://ctan.org/pkg/filecontent
\usepackage{varwidth}% http://ctan.org/pkg/varwidth
\begin{filecontents*}{asciiart.txt}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sed magna risus, id iaculis nisi. \n
Phasellus fermentum lorem ut velit ultrices at tincidunt lacus suscipit. Maecenas sed convallis dolor. \n
Etiam at diam velit, quis condimentum massa. Aenean vel massa mi. In id placerat dui. Curabitur \n
ligula justo, pellentesque sed interdum ut, vulputate et sapien. Donec semper, nisi et \n
tincidunt vulputate, lorem tortor rhoncus dui, sed posuere tellus nisi nec magna. Cras \n
sodales, quam at tristique pellentesque, massa orci hendrerit ipsum, nec congue diam elit \n
sed urna. Curabitur consequat, metus in accumsan aliquam, ligula felis laoreet elit, non \n
dapibus sapien libero eu dolor.
\end{filecontents*}
\def\n{}% Remove the functionality typically used for \n in a different language
\setlength{\parindent}{0pt}% Remove paragraph indent
\newsavebox{\asciiart}% Box storing ASCII art content
\pagestyle{empty}% Remove page header/footer (including page numbers)
\begin{document}
\begingroup
\ttfamily% Mono-spaced/typewriter font
\obeyspaces% Keep all spaces
\let =\ % Fix spaces
\obeylines% Obey line breaks
\begin{lrbox}{\asciiart}\begin{varwidth}{10\textwidth}
\input{asciiart.txt}
\end{varwidth}\end{lrbox}% Read ascii art
\resizebox{\textwidth}{!}{\usebox{\asciiart}}% Rescale and print ascii art.
\endgroup
\end{document}
使用的软件包:
graphicx
用于缩放内容(在我们的例子中是盒子\asciiart
);filecontents
用于将内容写入文件而不受常规filecontents
限制。您的情况可能不需要,因为您已经有了asciiart.txt
。varwidth
用于可变宽度的装箱。
geometry
还可以根据自己的喜好缩放纸张尺寸。