\long\def\newblocktype#1#2#3#4{% \def#1{\ptx@newblock_pattern{#2}{#3}{#4}}% } \newife\ifptx@newblock_group \long\def\ptx@newblock_pattern#1#2#3{% \ifnext* {\ptx@newblock_grouptrue\gobbleoneand{\ptx@newblock{#1}{#2}{#3}}} {\ptx@newblock_groupfalse\ptx@newblock{#1}{#2}{#3}}% } \long\def\ptx@newblock#1#2#3#4#5{% \ifnextnospace* {\gobbleoneand{\ptx@newblock_do#4{#1#5}{#2}{#3}}} {\ptx@newblock_do#4{#1#5}{#2}{#3}{}}% } \long\def\ptx@newblock_do#1#2#3#4#5#6{% \ifptx@newblock_group {\defcs{ptx@inner_\commandtoname#1:start}{\bgroup#2}% \defcs{ptx@inner_\commandtoname#1:stop}{#4#6\egroup}} {\defcs{ptx@inner_\commandtoname#1:start}{#2}% \defcs{ptx@inner_\commandtoname#1:stop}{#4#6}}% \defcs{ptx@inner_\commandtoname#1:continue}{#3#5}% \def#1##1{% \ifelseif{% {\ifstring{##1}{|}} {\skipspace{\usecs{ptx@inner_\commandtoname#1:continue}}} {\ifstring{##1}{/}} {\usecs{ptx@inner_\commandtoname#1:stop}} {\ifstring{##1}{>}} {\skipspace{\usecs{ptx@inner_\commandtoname#1:start}}} \iftrue {\usecs{ptx@inner_\commandtoname#1:start}##1}}% }% } \newblocktype\newblock{}{}{} \def\Indent{\quitvmode\kern\parindent} \gates new \Everypar {Everypar} \Everypar list {everypar} [0] [noindent] ?{status = close} {{\setbox0=\lastbox}} \Everypar close {noindent}{everypar} \everypar={\Everypar execute {everypar}} \def\removenextindent{\Everypar ajar {noindent}{everypar}}