检查 verbatim 环境内的空格

检查 verbatim 环境内的空格

我想确定verbatim环境中的一行是否以 3 个空格开头。

我正在使用pdflatex\pdfmatch原语。我看到verbatim环境将空格的类别代码设置为\active,所以我不知道在测试到达时如何在测试中表示空格字符(从 verbatim 环境中)。

如果我使用“普通”字符而不是空格执行下面的测试,它会按预期工作。

\documentclass{article}
\usepackage{verbatim}
\begin{document}
  \makeatletter
  \def\verbatim@addtoline#1{
    \ifnum\pdfmatch{^   myline}{#1}=1
       #1 matched
    \else
       #1 did not match
    \fi}
    \makeatother

\begin{verbatim}
  myline1
   myline2
    myline3
     myline4
\end{verbatim}
\end{document}

答案1

这是扩展的问题。因此#1不应扩展,并且必须保留空格:

\documentclass{article}
\usepackage{verbatim}
\begin{document}
\makeatletter
\def\verbatim@addtoline#1{%
  \ifnum\pdfmatch{^\space\space\space myline}{\detokenize{#1}}=1
    #1 matched
  \else
    #1 did not match
  \fi}
\makeatother

\begin{verbatim}
  myline1
   myline2
    myline3
     myline4
\end{verbatim}
\end{document}

相关内容