Created
February 20, 2020 09:27
-
-
Save namachan10777/189cdc3ac630bc64786c8acc6045b520 to your computer and use it in GitHub Desktop.
cleardoublepage.satyh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let cleardoublepage ctx label = | |
let hook = line-break false false ctx | |
(hook-page-break (fun pbinfo _ -> ( | |
let should-inser-new-page = | |
(!ref-inserted-page-number + pbinfo#page-number) mod 2 == 0 | |
in | |
let () = ref-not-aligned <- !ref-not-aligned || should-inser-new-page in | |
if !ref-not-aligned | |
then ( | |
if should-inser-new-page | |
then ( | |
let () = display-message (`cleardoublepage : `# ^ label ^ #` T`) in | |
let () = ref-inserted-page-number <- !ref-inserted-page-number + 1 in | |
register-cross-reference (`cleardoublepage:` ^ label) | |
(match get-cross-reference (`cleardoublepage:` ^ label) with | |
| Some(`T`) -> `F` | |
| Some(`F`) -> `T` | |
| None -> `T`) | |
) | |
else ( | |
let () = display-message (`cleardoublepage : `# ^ label ^ #` F`) in | |
register-cross-reference (`cleardoublepage:` ^ label) | |
(match get-cross-reference (`cleardoublepage:` ^ label) with | |
| Some(m) -> m | |
| None -> `F`) | |
) | |
) | |
else | |
() | |
))) | |
in | |
match get-cross-reference (`cleardoublepage:` ^ label) with | |
| Some(`F`) -> | |
clear-page +++ hook | |
| Some(`T`) -> | |
clear-page +++ clear-page +++ hook | |
| _ -> clear-page +++ hook | |
編集によってページ数が変わると収束しなくなるので.satysfi-auxを消す必要がある。ウーン...
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
多分動く。奇数ページなら単なるclear-pageだが偶数ページなら空ページを挟んでclear-page