我想在 LaTeX 中创建一条命令,如果它前面有某个字符,则打印某些内容,如果它前面有其他字符,则打印其他内容。
我\@ifnextchar
可以根据角色输出后命令:
\documentclass{article}
\makeatletter
\newcommand\mycommand{\@ifnextchar h{I see an h\ }{I don't see an h\ }}
\makeatother
\begin{document}
\mycommand h %output: I see an h h
\mycommand n %output: I don't see an h n
\end{document}
我想这样做,但基于角色的输出前我的命令。
答案1
不确定您的应用程序是否允许将整个内容嵌入到环境中。如果是,我创建了一个 tokcycle 伪环境\preh
,其中的出现\mymacro
能够检查先前的标记以查看它是否是h
。
本质上,令牌循环保存最近的令牌(仅在 cat-2 或 cat-10 令牌的情况下大致如此),并且实例\mycommand
触发对最新令牌的检查。
\documentclass{article}
\usepackage{tokcycle}
\def\mycommand{\tctestifx{h\prechar}
{\addcytoks{[PRIOR h]}}{\addcytoks{[NOT PRIOR h]}}}
\tokcycleenvironment\preh
{\addcytoks{##1}\let\prechar##1}
{\processtoks{##1}\global\let\prechar\egroup}
{\ifx\mycommand##1##1\else\addcytoks{##1}\fi\let\prechar##1}
{\addcytoks{##1}\let\prechar\space}
\begin{document}
\preh
A test\mycommand{} of a bash\mycommand ful \rule{1ex}{1ex} environment.
Look! Paragraphs and embedded macros pose no problem
\endpreh
\end{document}