我在文本中有一些边注,想让它们根据奇数页或偶数页以不同的方式对齐。我创建了这个命令:
\newcommand{\notemarge}[1]{\ifodd\c@page
\marginpar{\raggedright\scriptsize #1} \else
\marginpar{\raggedleft\scriptsize #1} \fi}
在主要情况下有效,但当不同页面上的同一段落中有两个注释时无效。原因:\thepage
只有新段落才会发生变化。
我尝试了这个:
\usepackage{atbegshi}
\newcounter{masterpage}\setcounter{masterpage}{1}
\AtBeginShipout{\refstepcounter{masterpage}}
但没有解决。
如何修复它?
答案1
当可扩展测试(例如,\ifodd
在段落中展开)时,您无法有效地测试奇偶校验或页面计数器的值。换行和分页发生在宏扩展之后,因此\c@page
在执行单个段落中的宏时,它们将始终具有相同的值,即使该段落很长并且覆盖几页。只有当到达段落末尾时,分页器才会将内容拆分为页面,并在输出每页时增加计数器。
因此,\marginpar
您可以存储两个版本的注释,一个用于左侧,一个用于右侧(不幸的是,它并不总是正确的),但应该可以工作。
\marginpar[left version]{right version}