我想确定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}