如何在文档中间使用宏对整个文档进行双面应用

如何在文档中间使用宏对整个文档进行双面应用

我编写了一个包,根据用户如何调用宏,它将整个文档更改为双面文档:

MWE 测试.sty:

\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{test}[2022/06/06 v0.01 test.sty]

% \def\Twoside{\immediate\write\@auxout{\string\@twosidetrue\string\@mparswitchtrue}}
% \InputIfFileExists{\jobname.aux}{}\relax

\def\Twoside{\immediate\write\auxoutii{\string\@twosidetrue\string\@mparswitchtrue}}
\InputIfFileExists{\jobname.aux2}{}\relax
\newwrite\auxoutii
\immediate\openout\auxoutii=\jobname.aux2
\AtEndDocument{\immediate\closeout\auxoutii}

\endinput

MWE 测试.tex:

\documentclass{article}
\usepackage{test}
% \usepackage[spanish]{babel}
\usepackage[hmargin={0cm,2cm}]{geometry}

\begin{document}
\Twoside
first page \cleardoublepage third page \clearpage fourth page
\end{document}

在这个简化的 MWE 中,我编写了这个\Twoside宏,将文档更改为双面文档。它可以工作,但如果geometry在测试包之前加载,它将不起作用。我不喜欢只写入该行而写入第二个辅助文件。可以在主辅助文件上处理这个问题吗?

取消注释文件中的注释行.sty并注释以下五行,它可以工作,但在加载时失败。为什么会这样?为什么需要babel一行来管理写入主辅助文件的行的执行?\InputIfFileExists

編輯:

更真实的 MWE:

\documentclass{article}
\usepackage{elzcards}
\usepackage[a4paper,hmargin={2cm,0cm}]{geometry}
\begin{document}
\IndexCard{\vfill\mbox{}\hfill - \CurrentIC{} - front side\hfill\mbox{}\vfill}
\IndexCard{\vfill\mbox{}\hfill - \CurrentIC{} - front side\hfill\mbox{}\vfill}
\IndexCard{\vfill\mbox{}\hfill - \CurrentIC{} - front side\hfill\mbox{}\vfill}[\vfill\mbox{}\hfill - \CurrentIC{} - back side\hfill\mbox{}\vfill]
\IndexCard{\vfill\mbox{}\hfill - \CurrentIC{} - front side\hfill\mbox{}\vfill}
\IndexCard{\vfill\mbox{}\hfill - \CurrentIC{} - front side\hfill\mbox{}\vfill}
\MakeIC
\end{document}

在实际示例中,每次\IndexCard调用都会将一张卡片添加到“堆栈”中。只有第三张索引卡有反面(\IndexCard带方括号的第二个参数表示背面的存在)。当卡片定义为背面时,文档应该发生变化,因为它被定义为twosided 文档。它可以工作,但存在一些问题。

谢谢。

相关内容