已解决(截至 2018 年):回忆录的 '\marginpar' 扰乱了多页 '\sidebar' 评论的分页符(还有 '\color' 泄漏)

已解决(截至 2018 年):回忆录的 '\marginpar' 扰乱了多页 '\sidebar' 评论的分页符(还有 '\color' 泄漏)

解决方案和解决方法2018 TeXLive 更新 --- 特别memoir.cls是更新至2018/04/04 v3.7gmarginnote.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和,提供包括和的定位命令。\marginparmemoir\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 提供的软件包更新足以解决分页符问题和颜色泄漏问题......最小工作示例已更新以演示这些解决方法。

相关内容