包 marginnote 不会在边距段落部分中输入边距注释文本

包 marginnote 不会在边距段落部分中输入边距注释文本

考虑以下 MWE:

\documentclass[oneside,leqno,fleqn]{book}
\usepackage{marginnote}

\usepackage{geometry}
\geometry{%
left=70mm,
textwidth=130mm,
marginparsep=8.2mm,
marginparwidth=50mm,
showframe
}

\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\defaultfontfeatures{Scale = MatchUppercase , Ligatures =TeX}
\newfontfamily\englishfont{Latin Modern Roman}[Script=Latin,Language=English]
\newfontfamily\hebrewfont{David CLM}[Script=Hebrew]

\begin{document}
לורם איפסום דולור סיט אמט.
\marginnote{זו הערה שצריכה להופיע בשולי הדף}
\end{document}

在此处输入图片描述

为什么marginnote文本没有在边距段落区域输入?如何解决?

答案1

我认为这种偏差的根源在于bidi改变了的值\oddsidemargin。请注意,默认情况下marginnote应该接触零件的右边界marginpar。这是一个快速补丁,应该可以解决您的特定情况。

%!TEX TS-program = xelatex

\documentclass[oneside,leqno,fleqn]{book}
\usepackage{marginnote}
\usepackage{regexpatch}
\makeatletter
\xpatchcmd{\@mn@@@marginnote}{\else\kern\oddsidemargin}{%
    \else
    \@mn@if@RTL{%
        \kern\dimexpr\mn@pagewidth-\marginnotetextwidth-\oddsidemargin-2in\relax
    }{%
        \kern\oddsidemargin
    }%
}{}{}
\makeatother
\usepackage{geometry}
\geometry{%
    left=70mm,
    textwidth=130mm,
    marginparsep=8.2mm,
    marginparwidth=50mm,
    showframe
}

\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\defaultfontfeatures{Scale = MatchUppercase , Ligatures =TeX}
\newfontfamily\englishfont{Latin Modern Roman}[Script=Latin,Language=English]
\newfontfamily\hebrewfont{David CLM}[Script=Hebrew]

\begin{document}
    לורם איפסום דולור סיט אמט.
    \marginnote{זו הערה שצריכה להופיע בשולי הדף}
\end{document}

在此处输入图片描述

lualatex不会得到这个偏差

%!TEX TS-program = lualatex

\documentclass[oneside,leqno,fleqn]{book}
\usepackage{marginnote}

\usepackage{geometry}
\geometry{%
    right=70mm, %<-- note the change
    textwidth=130mm,
    marginparsep=8.2mm,
    marginparwidth=50mm,
    showframe
}

\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\defaultfontfeatures{Scale = MatchUppercase , Ligatures =TeX}
\newfontfamily\englishfont{Latin Modern Roman}[Script=Latin,Language=English]
\newfontfamily\hebrewfont{David CLM}[Script=Hebrew]

\begin{document}
    לורם איפסום דולור סיט אמט.
    \marginnote{זו הערה שצריכה להופיע בשולי הדף}
\end{document}

答案2

如果你复制 marginnote.sty 到本地,然后修改第 364 行

          \rlap{%
\kern-\marginparwidth%  added

你得到

在此处输入图片描述

但是由于我不懂希伯来语,也不太了解边注代码,我不确定这是否涵盖了左边距和右边距以及单边和双面选项的所有可能情况,可能没有.....

相关内容