在等宽环境中显示空白字符

在等宽环境中显示空白字符

如果有人(非常不可能)决定输入并验证签名,我需要以一种消除歧义的方式呈现 ASCII 文件以供打印。

本质上,我需要一个等宽排版机,它会在遇到 CR/LF 等时排版一个“空格”符号表示空格,排版一个 CR/LF 符号(并转到下一行以便于阅读),从而可以清楚地知道在 CR/LF 之前是否有任何尾随空格,是否存在字符等。

有没有已经实现该目标的字体?*nix 实用程序?TeX 模块/包/派生系统?

这是解决此类问题的合适 SE 网站吗?你认为我在 SuperUser 上会更幸运吗?StackOverflow?

答案1

你是指这样的吗?在这种情况下,我使@active 表示逐字逐句的每行结束,这样它既可以检测到前面的空格,也可以排版<cr>来表示行的结束。(参见附录以供更新)

\documentclass{article}
\usepackage{verbatimbox}
\def\rlwd{.5pt}
\begin{document}
\catcode`@=\active
\def@{<cr>}
\def\tmp{\setbox2=\hbox{0}%
  \def\ {\makebox[\wd2]{\rule{\rlwd}{2pt}\rule{3pt}{\rlwd}\rule{\rlwd}{2pt}}}%
}
\begin{verbnobox}[\tmp]
This is a test         @
more test      @
The end@
\end{verbnobox}
\catcode`@=12
\end{document}

在此处输入图片描述

<cr>如果不喜欢将和 用相同的字体混淆verbatim,可以这样修改:

\documentclass{article}
\usepackage{verbatimbox,xcolor}
\def\rlwd{.5pt}
\begin{document}
\catcode`@=\active
\def@{\textcolor{red}{{\tiny\rmfamily\bfseries$<$cr$>$}}}
\def\tmp{\setbox2=\hbox{0}%
  \def\ {\makebox[\wd2]{\rule{\rlwd}{2pt}\rule{3pt}{\rlwd}\rule{\rlwd}{2pt}}}%
}
\begin{verbnobox}[\tmp]
This is a test         @
more test      @
The end@
\end{verbnobox}
\catcode`@=12
\end{document}

在此处输入图片描述

附录

自从最初提供此答案以来,我了解到verbatim环境甚至\verb宏都有星号变体(例如verbatim*),它们提供可见的空间字形。因此,实际上不需要额外的包。

\documentclass{article}
\begin{document}
\catcode`@=\active
\def@{<cr>}
\begin{verbatim*}
This is a test         @
more test      @
The end@
\end{verbatim*}
\catcode`@=12
\end{document}

在此处输入图片描述

答案2

一些修改fancyvrb允许您重新格式化行尾字符(下面我使用了\CR):

在此处输入图片描述

\documentclass{article}
\usepackage{fancyvrb}
\newcommand{\CR}{<cr>}

\makeatletter

\begingroup
\catcode`\^^M=\active
\gdef\FancyVerbGetLine#1^^M{%
  \@nil%
  \FV@CheckEnd{#1}%
  \ifx\@tempa\FV@EnvironName%            % True if end is found
    \ifx\@tempb\FV@@@CheckEnd\else\FV@BadEndError\fi%
    \let\next\FV@EndScanning%
  \else%
    \def\FV@Line{#1\CR}%
    \def\next{\FV@PreProcessLine\FV@GetLine}%
  \fi%
  \next}%
\endgroup

\makeatother

\begin{document}

\begin{Verbatim}[showspaces=true]
This is a test         @
more test      @
The end@
\end{Verbatim}

\end{document}

的定义\FancyVerbGetLine直接取自fancyvrb.dtx并修改为插入\CR为 的定义的一部分\FV@line

相关内容