Если вы хотите, чтобы все абзацы \io работали таким образом, и только в выводе PTXprint, то,
да, это можно сделать… Это даже не очень сложно, примерно по образцу этого непроверенного кода:
\newcoutner\ioparnum
\def\ioparstart#1{#1.~} % How should it be formatted?
\sethook{start}{io}{\advance\ioparnum by 1 \leavevmode \ioparstart{\the\ioparnum}}
\sethook{after}{c}{\ioparnum=0 } % Reset each chapter, just in case
Проблема в том, что теперь вы ищете необычные случаи. Например, если в каком-либо периферийном разделе есть несколько оглавлений, вышеприведенный код будет просто продолжать считать… Если бы вы могли гарантировать, что перед каждым блоком абзацев \io стоит \is1, тогда вы могли бы использовать \setbetweenhook{is}{io}{\ioparnum=0 } для сброса, и тогда вы будете искать еще более необычные случаи. В какой-то момент поиск неожиданных ситуаций занимает столько же времени, сколько и ручная нумерация.
If you wanted all \io paragraphs to work in this way, and only in PTXprint output, then,
Yes, it can be done… It’s not even very hard, something along the lines of this untested code:
\newcoutner\ioparnum
\def\ioparstart#1{#1.~} % How should it be formatted?
\sethook{start}{io}{\advance\ioparnum by 1 \leavevmode \ioparstart{\the\ioparnum}}
\sethook{after}{c}{\ioparnum=0 } % Reset each chapter, just in case
The problem is you are now looking for unusual cases. E.g. if for some kind of periphery section there are multiple outlines, the above will just keep on counting… If you could guarantee that every block of \io paragraphs was preceded by an \is1 then you could use \setbetweenhook{is}{io}{\ioparnum=0 } to do the reset, and then you’re looking for even more unusual cases. At some point your searching out unexpected situations takes as much time as numbering them by hand.