解决方案和解决方法2018 TeXLive 更新 --- 特别memoir.cls
是更新至2018/04/04 v3.7g
和marginnote.sty
更新至2018/04/13 v1.3
--- 一起允许解决分页符问题和颜色泄漏问题。
简而言之,(1)\marginpar
用宏的包装器替换宏,(2)通过对和\marginnote
的修补来修复颜色泄漏。 \sidebar
\sidebarform
最小工作示例(如下)已被修改以包含这些解决方法。
我们向那些为这些持续改进做出贡献的无名 TeX 英雄们致以深深的谢意和衷心的感谢!
回忆录类错误描述 在 中\documentclass{memoir}
,每当\sidebar{<multipage content>}
首先评估 ,然后\marginpar{<short content>}
在排版侧边栏的范围内评估<multipage content>
,则排版中的行顺序<multipage content>
会被打乱。
还有颜色溢出问题 第二个可能相关的错误是其中的\color{<name>}
规范\sidebar{<multipage content>}
渗透到了正文中。
\sidebar
当彩色文本需要通过(例如) PANTONE 颜色规范 \sidebar{<multipage content>}
进行分色以提供专色时,颜色渗色错误尤其会成为一个问题。\RequirePackage{colorspace}
背景和文件 要创建文本跨越多页的侧边栏,LaTeX 类memoir
提供\sidebar{<multipage content>}
。对于较短的注释,memoir
提供\marginpar{<short content>}
。为了容纳出现在同一页相对边距的\sidebar
和,提供包括和的定位命令。\marginpar
memoir
\marginparmargin{inner}
\sidebarmargin{outer}
功能的详细信息在手册、、版本\sidebar
中指定,其中“12.4 SIDEBARS”部分开始:memoir
'memman.pdf'
v3.7f
侧边栏排版在页边空白处,通常包含与正文相关的辅助材料。它们可能很长,甚至超过一页。
存在颜色溢出解决方法 对于中的颜色渗色错误\sidebar{<multipage content>}
,我找到了一种解决方法——一种令人遗憾的复杂解决方法——出于简单的原因,它没有包含在(附加的)最小工作示例中。
寻求修复/解决方法 寻求一个最小工作示例,其中分页符错误和颜色溢出错误都尽可能简单而稳健地得到修复,以便\sidebar{<multipage content>}
(1) 即使存在 也能可靠地分页\marginpar
,并且 (2) 字体和颜色与正文不同,不会溢出侧边栏。
最小工作示例 这是一个 MWE,它同时展示了分页符错误和颜色渗色错误(现在有了解决这些问题的解决方法)。
% Minimum workarounds for two bugs in in 'memoir.cls':
% (1) '\marginpar{<short comment>}' breaks '\sidebar{<multipage comments>}'
% (2) '\sidebar' colors leak into the body text
\documentclass[9pt,A4]{memoir}[2018-04-01]
% --- header of the log file -----------------------------------------
% This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018)
% (preloaded format=pdflatex)
% restricted \write18 enabled.
% entering extended mode
% (./workaround.tex
% LaTeX2e <2018-04-01> patch level 3
% Babel <3.20> and hyphenation patterns for 84 language(s) loaded.
% (/usr/local/texlive/2018/texmf-dist/tex/latex/memoir/memoir.cls
% Document Class: memoir 2018/04/04 v3.7g configurable book, report,
% article document class
% (etc.)
% --------------------------------------------------------------------
% Note: no very evident errors are reported in log file ...
% load packages
\RequirePackage{xcolor}
\RequirePackage{ragged2e}
\RequirePackage{calc}
\RequirePackage{lipsum}
% --- begin memoir/sidebar/marginpar adjustments -------------
% note: details of these appearance-options seemingly are
% immaterial to the \sidebar{...} wrap-bug
% set and check the page dimensions
% preparing for \marginparwidth = 11em
% \sidebarwidth = 14em
\normalfont%
\setlrmarginsandblock{11em+1em+2cm}{14em+1em+2cm}{*}
\checkandfixthelayout
% adjust the \marginpar parameters
\marginparmargin{inner}
\setmarginnotes% {<hsep>}{<width>}{<push>}
{1em}% specify <hsep> => \marginparsep
{\spinemargin-1em-2cm}% specify <width> => \marginparwidth
{\onelineskip}% specify <push> => \marginparpush
% adjust the \sidebar parameters
\sidebarmargin{outer}
\setsidebars% {<hsep>}{<width>}{<vsep>}{<topsep>}{<font>}{<height>}
{1em}% specify <hsep>
{\foremargin-1em-2cm}% specify <width> => \sidebarwidth
{\onelineskip}% specify <vsep> => \sidebarvsep
{0pt}% specify <topsep> => \sidebartopsep
{\sffamily\footnotesize% specify the <font> parameters
% BUG: the following '\color{...}' bleeds into the body
\color{blue}}% (optionally including a color)
{\textheight}% specify <height> => \sidebarheight
\DeclareRobustCommand{\sidebarform}{\justifying}
% --- end memoir/sidebar/marginpar adjustments -------------
% --- begin marginpar workaround -------------
\RequirePackage{xparse}
\RequirePackage{marginnote}[2018/04/13]
\RenewDocumentCommand{\marginpar}{+o+m}{%
\IfNoValueTF{#1}%
{\marginnote{#2}}%
{\marginnote[#1]{#2}}%
}
% --- end marginpar workaround -------------
% --- begin color 'leak' workaround -------------
\RequirePackage{xparse}
\let\originalsidebar\sidebar
\RenewDocumentCommand{\sidebar}{+o+m}{%
\IfNoValueTF{#1}%
{\originalsidebar{#2}\color{black}}%
{\originalsidebar[#1]{#2}\color{black}}%
}
\let\nativesidebarform\sidebarform
\RenewDocumentCommand{\sidebarform}{}{%
\nativesidebarform\color{black}}
% --- end color 'leak' workaround -------------
\begin{document}
\textbf{This is the first paragraph of a
multipage memoir-class document.}
\lipsum[2]%
\marginpar{
Marginal comments like this one,
when they come \textsc{before}
a multipage sidebar,
\textsc{have never} induced a wrap-error.
}
\lipsum[3]%
\sidebar{\strictpagecheck%
\textbf{TEST: this sidebar paragraph should
appear on page 1, at the top of the fore-margin.}
\par
\lipsum[2-11]
\par
\textbf{TEST: this sidebar paragraph should
appear as the bottom-most fore-margin
paragraph, as the final paragraph
(namely the 12th paragraph)
of a multipage sidebar.}
}%
\lipsum[4]%
\marginpar{\strictpagecheck%
\textsc{Hurrah!!!}\dots marginal
comments like this one,
that are specified \textsc{after}
a multipage sidebar,
\textsc{no longer} induce a wrap-error.
}
\lipsum[5-8]%
\lipsum[9]%
\marginpar{\strictpagecheck%
\textsc{Hurrah!}\dots this marginal
comment too, appearing
on the second page of
a multipage sidebar,
no longer induces a wrap-error.
}
\lipsum[10-19]
\textbf{This is the final body-text
paragraph (namely the 20th paragraph)
of a multipage document.}
\end{document}
\endininput
答案1
TeXLive 2018 提供的软件包更新足以解决分页符问题和颜色泄漏问题......最小工作示例已更新以演示这些解决方法。