Код определяет рамку, а затем в части, начинающейся со:
\ifx\PageBorderTwo\empty\else
Он проверяет, задан ли PageBorderTwo, и если да, изменяет PageBorder. Как дано, код Джеффа выглядит так, будто он перезагружает PDF-файл рамки на каждой странице, поэтому изменение PageBorder вступает в силу в следующий раз, когда нужно напечатать рамку. Если PageBorderTwo пуст, то PageBorder останется прежним.
Если вы не используете версию кода Джеффа, а придерживаетесь оригинала, который перезагружает PDF только тогда, когда коробка пуста (например, в начале документа), мы можем использовать это с триггерами и устанавливать коробку пустой (void) всякий раз, когда хотим изменить рамку.
Если вы хотите изменить рамку в разных местах кода, вы можете сделать что-то вроде этого:
\makeatletter
\setcvhook{GEN1.1}{\def\PageBorder{path_to_border2}\setbox\b@rder\box\voidb@x}
\sethook{bookstart}{MAT}{\let\PageBorder\empty\setbox\b@rder\box\voidb@x} % No border for NT intro
\setcvhook{MAT1.1}{\def\PageBorder{path_to_border3}\setbox\b@rder\box\voidb@x}
\makeatother
Весь код абсолютно не протестирован!
(\voidb@x — это просто обычная коробка, но никто никогда не должен класть в нее ничего, поэтому она всегда пуста)
The code defines the border box and then in the bit starting:
\ifx\PageBorderTwo\empty\else
It checks if PageBorderTwo is set and if so changes PageBorder. As given, Jeff’s code looks like it reloading the border PDF each page, so changing PageBorder takes effect the next time it has to write a border. If PageBorderTwo is empty, then PageBorder will stay as it was.
If you don’t use Jeff’s version of the code, but stick to the original, that only reloads the PDF when the box is empty (e.g. at the start of the document), we can make use this with triggers, and set the box to empty (void) whenever we want to change the border.
If you want to change the border at various places in the code, you could do something like this:
\makeatletter
\setcvhook{GEN1.1}{\def\PageBorder{path_to_border2}\setbox\b@rder\box\voidb@x}
\sethook{bookstart}{MAT}{\let\PageBorder\empty\setbox\b@rder\box\voidb@x} % No border for NT intro
\setcvhook{MAT1.1}{\def\PageBorder{path_to_border3}\setbox\b@rder\box\voidb@x}
\makeatother
All code is totally untested!
(\voidb@x is just a normal box, but no one should ever put anything in it, thus it’s always void)