不规则的旁注或编号的边注

不规则的旁注或编号的边注

我有一份双面文档,页边距较大,数字延伸到页边距。我想设置边注/旁注,要求如下:

  1. 来自 sidenotes 包的上标数字
  2. raggedoutside 类似于 marginnote 包,即根据注释出现的位置,它是 raggedleft(偶数)或 raggedright(奇数)
  3. 注释不应超出图的范围。目前这是通过marginparwidth的设置定义的geometry,并且不应因新包而中断。

这是我的 MWE,使用侧注和边注来显示差异:

\documentclass[a4paper,11pt,twoside,openright,parskip=half]{scrbook}

\usepackage[ngerman, english]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{calc}

\makeatletter
\newlength \figwidth
\setlength \figwidth {-3cm}
\makeatother

\usepackage{geometry}
\geometry{a4paper, top=30mm, left=30mm, right=55mm, bottom=35mm, marginparwidth=-\figwidth-1em, marginparsep=1em}

\usepackage{marginnote}
\usepackage{sidenotes}
\renewcommand*{\marginfont}{\footnotesize}
\newcommand{\smallside}[1]{\sidenote{\footnotesize{#1}}}

\usepackage{caption}
\usepackage{graphicx}
\usepackage[strict]{changepage}
\newenvironment{widefigure}[1][tbp]
{\begin{figure}[#1]\begin{adjustwidth*}{0cm}{\figwidth}\centering}%
        {\end{adjustwidth*}\end{figure}}

\usepackage{blindtext}

\begin{document}
    \begin{widefigure}[tbp]
        \includegraphics[width=\linewidth, height=9cm]{example-image}
        \caption{Some figure caption in here that does not really matter but should be long enough to fill the line and also break}
    \end{widefigure}
    \blindtext
    \marginnote{some long text for the margin}
    \blindtext
    \smallside{some long text for the margin}
    \blindtext
    %\newpage
    \begin{widefigure}[tbp]
        \includegraphics[width=\linewidth, height=9cm]{example-image}
        \caption{Some figure caption in here that does not really matter but should be long enough to fill the line and also break}
    \end{widefigure}
    \marginnote{some extremely long text for the margin going on many lines}
    \blindtext
    \smallside{some extremely long text for the margin going on many lines}
    \blindtext
\end{document}

以及该文件的截图:\marginnote 和 \sidenote 的对齐

答案1

\sidenote\marginnote当给出偏移量时使用,\marginpar否则。\marginnote执行\raggedleft/\raggedright操作但\marginpar不执行。另一方面,\marginpar尝试浮动音符,以便它们不会相互碰撞。

因此基本上有两种解决方案:

(1)在 的定义中给出一个偏移量\smallside

\newcommand{\smallside}[1]{\sidenote[][0pt]{\footnotesize{#1}}}

但这样你的旁注就不再浮动了,所以它们会互相碰撞。但你确实得到了正确的粗糙内容。

\marginpar(2) 更改在和之间进行选择的旁注宏部分的定义,\marginnote并将\ragged...内容提供给\marginpar

\makeatletter
\RenewDocumentCommand \@sidenotes@placemarginal { m m }
{%
  \IfNoValueOrEmptyTF{#1}
    {\marginpar[\raggedleftmarginnote #2]{\raggedrightmarginnote #2}}
    {\marginnote{#2}[#1]}%
}
\makeatother

顺便说一句,我认为sidenotes包中有一些虚假的空格。我必须删除上述宏定义中的一些空格。

答案2

Piet van Oostrum 的回答对我来说编译不出来(我没有足够的声誉来评论它)。但是用\marginpar括号括住第一个(可选)参数就可以了。我还\ragged...marginnote用普通命令替换了 marginnote 包的命令\ragged...,但这不是必需的:

\makeatletter
\RenewDocumentCommand \@sidenotes@placemarginal { m m }
{%
    \IfNoValueOrEmptyTF{#1}
    {\marginpar[{\raggedleft #2}]{\raggedright #2}}
    {\marginnote{#2}[#1]}%
}
\makeatother

相关内容