summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r--Master/texmf-dist/source/latex/marginnote/marginnote.dtx473
1 files changed, 212 insertions, 261 deletions
diff --git a/Master/texmf-dist/source/latex/marginnote/marginnote.dtx b/Master/texmf-dist/source/latex/marginnote/marginnote.dtx
index fd66d776e18..9fb12f5fc4c 100644
--- a/Master/texmf-dist/source/latex/marginnote/marginnote.dtx
+++ b/Master/texmf-dist/source/latex/marginnote/marginnote.dtx
@@ -1,8 +1,8 @@
-% \CheckSum{859}
+% \CheckSum{717}
% \iffalse meta-comment
% ======================================================================
% marginnote.dtx
-% Copyright (c) Markus Kohm, 2005-2017
+% Copyright (c) Markus Kohm, 2005-2018
%
% This file is part of the work marginnote.
%
@@ -21,21 +21,21 @@
% derived files README.txt and marginnote.sty.
% ======================================================================
%
-%<package>%%% From File: $Id: marginnote.dtx 13 2017-04-22 09:25:22Z mjk $
+%<package>%%% From File: $Id: marginnote.dtx 21 2018-04-20 06:19:32Z mjk $
%<*dtx>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2017-04-22 11:25:22 +0200 (Sa, 22 Apr 2017) $
+ \filedate$Date: 2018-04-20 08:19:32 +0200 (Fr, 20 Apr 2018) $
\def\filerevision$#1: #2 ${\gdef\filerevision{#2}}
- \filerevision$Revision: 13 $
+ \filerevision$Revision: 21 $
\endgroup
\ProvidesFile{marginnote.dtx}[\filedate\space\filerevision\space
%</dtx>
%<package>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%<package>\ProvidesPackage{marginnote}[%
%<README>LaTeX package marginnote
-%<README>Copyright (c) Markus Kohm, 2005-2017
+%<README>Copyright (c) Markus Kohm, 2005-2018
%<README>-------------------------------------------------------------------
%<README>Version:
% \fi^^A meta-comment
@@ -43,7 +43,7 @@
% \iffalse meta-comment
%<*package|README>
% \fi^^A meta-comment
- 2017/04/22 v1.2b
+ 2018/04/13 v1.3
% \iffalse meta-comment
%</package|README>
% \fi^^A meta-comment
@@ -59,7 +59,7 @@
%<README>Abstract:
%<README> This package provides the command \marginnote that may be used
%<README> instead of \marginpar at almost every place, where \marginpar
-%<README> cannot be used, e.g. inside floats, footnotes, frames made with
+%<README> cannot be used, e.g., inside floats, footnotes, frames made with
%<README> framed package. See marginnote.pdf for more information.
%<README>-------------------------------------------------------------------
%<*dtx|package>
@@ -127,7 +127,7 @@
% In \LaTeX{} the command \cs{marginpar}\oarg{left}\marg{right} might be
% used to create a note in the margin. But there is a problem with this
% command: it creates a special kind of float. For this it cannot be used
-% e.g. at floats or footnotes. Package \textsl{marginnote} supports another
+% e.g., at floats or footnotes. Package \textsl{marginnote} supports another
% command \cs{marginnote} to create notes in the margin. This does not use a
% kind of float and for this does not have the disadvantage of
% \cs{marginpar}. But there might be other problems \dots
@@ -136,6 +136,7 @@
% \tableofcontents
%
% \changes{v1.0b}{2006/14/03}{spelling fixes}
+% \changes{v1.2b}{2017/10/14}{spelling fixes (by Thomas Reuben)}
%
% \section{How to Use \textsf{marginnote} Package}
%
@@ -172,37 +173,10 @@
% of the margin note. Use a negative dimension to move it up or a positive
% dimension to move it down.
%
-% \DescribeMacro{\marginnoteleftadjust}
-% \DescribeMacro{\marginnoterightadjust}
-% At some environments, e.g. \texttt{framed} from the \textsf{framed} package
-% the horizontal placement of the margin notes are not correct. In this case
-% you may redefine \cs{marginnoteleftadjust} and \cs{marginnoterightadjust} to
-% fix this. Note that these are macros not lengths! So you have to use
-% \cs{renewcommand}, \cs{def} or \cs{let} to change them. You may e.g. use
-% \begin{verbatim}
-% \begingroup
-% \makeatletter
-% \g@addto@macro\framed{%
-% \let\marginnoteleftadjust\FrameSep
-% \let\marginnoterightadjust\FrameSep
-% }
-% \endgroup
-% \end{verbatim}\vskip-\baselineskip
-% at your preamble after loading package \textsf{framed} to fix the problem
-% using \texttt{framed} environment.
-%
-% NOTE: \cs{marginnoteleftadjust} and \cs{marginnoterightadjust} will be used
-% only, if the correct horizontal position cannot be determined using
-% PDF\TeX{} features (\cs{pdfsavepos} and \cs{pdflastxpos}). So if you are
-% using PDF\LaTeX{} with PDF output or PDF\LaTeX{} with PDF\TeX-version since
-% 1.40 or \XeTeX{} you will not need to use the example code above, but you
-% will need at least two \LaTeX{} runs to get the correct horizontal positions
-% of the margin notes.
-%
% \DescribeMacro{\marginnotetextwidth}
% Package \textsl{marginnote} needs to know the real width of the type area to
-% find the right margin. While some environments (e.g. thos of package
-% \textsl{framed}) change \cs{textwidth}, \textsl{marginnote} defines it's own
+% find the right margin. While some environments (e.g., those of package
+% \textsl{framed}) change \cs{textwidth}, \textsl{marginnote} defines its own
% text width macro. If you change type area after \cs{begin\{document\}} you
% should add
% \begin{verbatim}
@@ -214,7 +188,7 @@
%
% \DescribeMacro{\marginnotevadjust}
% At some environments the vertical adjustment of the margin note will be
-% wrong, e.g. one base line to low. In this case you may use the additional
+% wrong, e.g., one base line to low. In this case you may use the additional
% optional argument of \cs{marginnote} at every usage of \cs{marginnote} or
% redefine \cs{marginnotevadjust} at the begin of the environment. The default
% definition is \texttt{0pt}.
@@ -226,7 +200,7 @@
% \item align margin notes at the left margin right to the margin,
% \item align margin notes at the right margin left to the margin.
% \end{itemize}
-% You may change this using \cs{renewcommand}, e.g. use^^A
+% You may change this using \cs{renewcommand}, e.g., use^^A
% \changes{v1.0a}{2006/02/06}{Example to macros \cs{raggedleftmarginnote} and
% \cs{raggedrightmarginnote} at documentation fixed [thanks to Susumu
% Tanimura].}
@@ -247,11 +221,19 @@
% e.g. package \textsf{color} to use \cs{color}.
%
%
-% \section{Known Problems Using \textsf{marginnote}}
+% \section{Known Issues Using \textsf{marginnote}}
+%
+% From version 1.3 \texttt{marginnote} does not longer support \TeX{} engines
+% without primitives \cs{pdfsavepos}/\cs{savepos} and
+% \cs{pdflastxpos}/\cs{lastxpos}. The former (manual adjustment) fallback has
+% been removed. You'll get an error message, if you try to use a \TeX{} engine
+% without these primitives. Also $\varepsilon$-\TeX{} primitves are
+% needed. However, with current free \TeX{} distributions like MiK\TeX{} or
+% \TeX Live this shouldn't be a problem.
%
% At double side layout (e.g. using class option \texttt{twoside})
% \cs{marginnote} needs to know the number of the current page to decide
-% wether the page is odd or even and so wether to use left or right
+% whether the page is odd or even and so whether to use left or right
% margin. \LaTeX{} uses an asynchronous output. Because of this counter
% \texttt{page} should not be used to get the number of the current page
% unless you are at page head or foot. To solve the problem
@@ -278,9 +260,9 @@
% paragraph. You may use \cs{leavevmode} or the third optional argument of
% \cs{marginnote} to place it different.
%
-% No page break may occure inside a margin note created with \cs{marginnote}.
+% No page break may occur inside a margin note created with \cs{marginnote}.
%
-% \cs{marginnote} somewhat different from \cs{marginpar} if used immediate
+% \cs{marginnote} is somewhat different from \cs{marginpar} if used immediate
% after \cs{item}. This is not a bug, it's a feature!
%
% With math \cs{marginnote} may work or may not depending on the math
@@ -298,6 +280,17 @@
%
% You should not use \cs{marginnote} at the optional argument of \cs{item}.
%
+% If \cs{if@twocolumn} is \cs{iftrue}, e.g., because you are using option
+% |twocolumn| or command |\twocolumn|, \cs{marginnote} does decide whether the
+% note should be placed left of the column or right of the columns simply by
+% comaring the current horizontal possition with |\columnwidth+\columnsep|. So
+% if the current horizontal possition is somewhere in the left columns, the
+% note is placed in the left margin. If the current horizontal possition is
+% somewhere right of the left column, the note is placed in the right
+% margin. However, support for twocolumn mode is as problematic as support for
+% reverse margin notes. I do not like it. Maybe it will be changed in
+% future. The current support for twocolumn mode has been implemented only
+% because of a feature request by Florent Chervet.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
@@ -307,34 +300,76 @@
%<*package>
% \fi
%
-% First test $\varepsilon$-\TeX.
+% \changes{v1.3}{2018/04/13}{$\varepsilon$-\TeX{} removed}^^A
+%
+% \changes{v1.3}{2018/04/13}{early \cs{pdfsavepos}/\cs{savepos} test}^^A
+% \begin{macro}{\mn@savepos}
+% \changes{v1.3}{2018/04/13}{new internal command}
+% \begin{macro}{\mn@lastxpos}
+% \changes{v1.3}{2018/04/13}{new internal command}
+% Since version 1.3 \texttt{marginnote} does need either \cs{pdfsavepos} and
+% \cs{pdflastxpos} or \cs{savepos} and \cs{lastxpos} and does not longer
+% support engines without these primitives. All these engines also provide
+% $\varepsilon$-\TeX{} extensions. So we do not longer need an explicite
+% $\varepsilon$-\TeX{} test.
% \begin{macrocode}
\begingroup
- \def\@tempb{}%
- \def\@tempa{%
- \PackageError{marginnote}{seems you are not running e-TeX\@tempb}{%
- Since 2004 the LaTeX team recommends to use e-TeX.\MessageBreak
- marginnote since version 1.1d uses e-TeX features.\MessageBreak
- At actual systems `latex' should already use e-TeX.\MessageBreak
- At deprecated systems it may be called `elatex'.\MessageBreak
- Use either unsupported marginnote up to version 1.1c or\MessageBreak
- ask you administrator for LaTeX using e-TeX\@tempb.\MessageBreak
- Not using e-TeX\@tempb\space is a fatal error!\MessageBreak
- Processing cannot be continued!}%
- \endgroup
- \batchmode \errmessage{}\csname @@end\endcsname\end\relax
- \csname endinput\endcsname
+ \@ifundefined{pdfsavepos}{%
+ \@ifundefined{savepos}{%
+ \PackageError{marginnote}{%
+ neither \string\pdfsavepos\space nor \string\savepos\space
+ available
+ }{%
+ Package `marginnote' depends on extended features of
+ PDFLaTeX,\MessageBreak
+ LuaLaTeX or XeLaTeX. It does not work without those
+ feature.\MessageBreak
+ If you'd continue the package will not provide any feature.
+ }%
+ \aftergroup\endinput
+ }{%
+ \@ifundefined{lastxpos}{%
+ \PackageError{marginnote}{%
+ \string\savepos\space but not \string\lastxpos\space
+ available
+ }{%
+ Package `marginnote' depends on extended features of
+ PDFLaTeX,\MessageBreak
+ LuaLaTeX or XeLaTeX. It does not work without those
+ feature.\MessageBreak
+ If you'd continue the package will not provide any feature.
+ }%
+ \aftergroup\endinput
+ }{%
+ \global\let\mn@savepos\savepos
+ \global\let\mn@lastxpos\lastxpos
+ \global\let\mn@pagewidth\pagewidth
+ }%
+ }%
+ }{%
+ \@ifundefined{pdflastxpos}{%
+ \PackageError{marginnote}{%
+ \string\pdfsavepos\space but not \string\pdflastxpos\space
+ available
+ }{%
+ Package `marginnote' depends on extended features of
+ PDFLaTeX,\MessageBreak
+ LuaLaTeX or XeLaTeX. It does not work without those
+ feature.\MessageBreak
+ If you'd continue the package will not provide any feature.
+ }%
+ \aftergroup\endinput
+ }{%
+ \global\let\mn@savepos\pdfsavepos
+ \global\let\mn@lastxpos\pdflastxpos
+ \global\let\mn@pagewidth\pdfpagewidth
+ }%
}%
- \expandafter\ifx\csname eTeXversion\endcsname\relax\else
- \ifnum\eTeXversion <2
- \def\@tempb{ V 2}%
- \else
- \let\@tempa\endgroup
- \fi
- \fi
-\@tempa
+\endgroup
% \end{macrocode}
-%
+% \end{macro}
+% \end{macro}
+%
% Next declare and process the options.
%
% \begin{macro}{\if@mn@verbose}
@@ -352,7 +387,7 @@
% \begin{macro}{\mn@strut}
% \changes{v1.1e}{2009/06/06}{new (semi internal)}
% The package needs to adjust the margin note at the current line. Sometimes
-% this provocates extra vertical line spacing. To avoid this you may redefine
+% this causes extra vertical line spacing. To avoid this you may redefine
% \cs{mn@strut}. The default value is \cs{strut}.
% \begin{macrocode}
\newcommand*{\mn@strut}{}
@@ -434,113 +469,53 @@
% \end{macro}
%
% \begin{macro}{\if@mn@pdfmode}
-% \changes{v1.1}{2006/10/23}{new switch}^^A
-% \changes{v1.1a}{2008/11/10}{PDF\TeX\ since 1.40 allows \cs{pdfsavepos} in
-% DVI mode too}^^A
-% \changes{v1.1b}{2009/02/16}{if level fixed}^^A
-% \changes{v1.1c}{2009/02/26}{\protect\XeTeX has working \cs{pdflastxpos}^^A
-% but no \cs{pdftexversion}}^^A
-% \changes{v1.2}{2016/06/02}{addition for lua\TeX{} from 0.85}^^A
+% \changes{v1.1}{2006/10/23}{new switch}^^A
+% \changes{v1.1a}{2008/11/10}{PDF\TeX\ since 1.40 allows \cs{pdfsavepos} in
+% DVI mode too}^^A
+% \changes{v1.1b}{2009/02/16}{if level fixed}^^A
+% \changes{v1.1c}{2009/02/26}{\protect\XeTeX has working \cs{pdflastxpos}^^A
+% but no \cs{pdftexversion}}^^A
+% \changes{v1.2}{2016/06/02}{addition for lua\TeX{} from 0.85}^^A
+% \changes{v1.3}{2018/04/13}{removed}^^A
% \begin{macro}{\@mn@mode@prefix}
-% \changes{v1.2}{2016/06/02}{(new (internal)}^^A
-% We need to know, wether or not PDF\TeX{} and which version of PDF\TeX{} is
-% used. With PDF\TeX{} the horizontal output position may be detected using
-% \cs{pdfsavepos} and \cs{pdflastxpos}. So the relative position of the margin
-% may be calculated. Without PDF\TeX{} only manual adjustment is
-% available. While PDF mode or not may change before start of the document,
-% setting up the switch is delayed.
-% \begin{macrocode}
-\newif\if@mn@pdfmode\@mn@pdfmodefalse
-\newcommand*{\@mn@mode@prefix}{pdf}
-\AtBeginDocument{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname pdflastxpos\endcsname\relax
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname lastxpos\endcsname\relax\else
- \@mn@pdfmodetrue
- \renewcommand*{\@mn@mode@prefix}{}%
- \fi
- \else % bg or 1
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname pdftexversion\endcsname\relax % bg 2
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname pdfoutput\endcsname\relax % bg 3
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname XeTeXrevision\endcsname\relax\else % bg 4
- \@mn@pdfmodetrue
- \fi % ed 4
- \else % or 3
- \ifcase\pdfoutput\else\@mn@pdfmodetrue\fi % bg ed 4
- \fi % ed 3
- \else % or 2
- \ifnum \pdftexversion<140 % bg 3
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname pdfoutput\endcsname\relax % bg 4
- \else % or 4
- \ifcase\pdfoutput\else\@mn@pdfmodetrue\fi % bg ed 5
- \fi % ed 4
- \else % or 3
- \@mn@pdfmodetrue
- \fi % ed 3
- \fi % ed 2
- \fi % ed 1
- \if@mn@verbose
- \if@mn@pdfmode
- \PackageInfo{marginnote}{%
- \string\pdfoutput\space not 0 or unimportant and\MessageBreak
- \string\pdflastxpos\space or \string\lastxpos\space
- available.\MessageBreak
- Extended position detection mode activated\@gobble
- }%
- \else
- \PackageInfo{marginnote}{%
- either \string\pdflastxpos\space or \string\pdfoutput\space not
- available\MessageBreak
- or \string\pdfoutput\space set to 0.\MessageBreak
- Extended position detection mode deactivated\@gobble
- }%
- \fi
- \fi
-}
-% \end{macrocode}
+% \changes{v1.2}{2016/06/02}{(new (internal)}^^A
+% \changes{v1.3}{2018/04/13}{removed}^^A
% \end{macro}
% \end{macro}
%
% \begin{macro}{\marginnotetextwidth}
-% \changes{v1.1}{2006/10/23}{new macro}
+% \changes{v1.1}{2006/10/23}{new macro}
% Some environments change \cs{textwidth}. But at PDF mode we need to know the
% real text width to find the right margin. So we use our own text width
-% macro. Sometimes it may be usefull if the user can set it up. Because of
+% macro. Sometimes it may be useful if the user can set it up. Because of
% this it is a user command.
% \begin{macrocode}
\newcommand*{\marginnotetextwidth}{}
\let\marginnotetextwidth\textwidth
-\AtBeginDocument{\if@mn@pdfmode\edef\marginnotetextwidth{\the\textwidth}\fi}
+\AtBeginDocument{\edef\marginnotetextwidth{\the\textwidth}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@mn@margintest}
-% \changes{v1.1}{2006/10/23}{new PDF mode feature}
+% \changes{v1.1}{2006/10/23}{new PDF mode feature}
% \begin{macro}{\@mn@thispage}
% \begin{macro}{\@mn@atthispage}
% \begin{macro}{\@mn@currpage}
-% \changes{v1.1}{2006/10/23}{new (internal)}
+% \changes{v1.1}{2006/10/23}{new (internal)}
% \begin{macro}{\@mn@currxpos}
-% \changes{v1.1}{2006/10/23}{new (internal)}
+% \changes{v1.1}{2006/10/23}{new (internal)}
% \begin{macro}{\mn@abspage}
-% Macro \cs{@mn@margintest} does the complete test, which margin to use. The
-% result may be found at \cs{if@tempswa}. To avoid changes on the last page
-% if there is a new note on the first page, try to count the notes by
-% page. We know that this can not be successfull, but never the less it may
-% be a good try. \cs{@mn@thispage} saves the page number of the last usage
-% of \cs{@mn@margintest}. \cs{@mn@atthispage} saves the number of margin
-% note at this page. But we need to know the absolut page number to do
-% this. So we increase the absolut page number \texttt{mn@abspage} at every
-% \cs{@outputpage}. \cs{@mn@currpage} is the page from the page label if
-% found. \cs{@mn@currxpos} is somehow special. Using PDF\TeX{} the real $x$
-% position may be written with the page label and used to calculate the
-% correct horizontal offset. In this case \cs{marginnoteleftadjust} and
-% \cs{marginnoterightadjust} will not be used!
+% Macro \cs{@mn@margintest} does the complete test, which margin to use. The
+% result may be found at \cs{if@tempswa}. To avoid changes on the last page
+% if there is a new note on the first page, try to count the notes by
+% page. We know that this can not be successful, but never the less it may
+% be a good try. \cs{@mn@thispage} saves the page number of the last usage
+% of \cs{@mn@margintest}. \cs{@mn@atthispage} saves the number of margin
+% note at this page. But we need to know the absolut page number to do
+% this. So we increase the absolut page number \texttt{mn@abspage} at every
+% \cs{@outputpage}. \cs{@mn@currpage} is the page from the page label if
+% found. \cs{@mn@currxpos} is the real $x$ position may be written with the
+% page label and used to calculate the correct horizontal offset.
% \begin{macrocode}
\newcommand*{\@mn@thispage}{}
\newcommand*{\@mn@currpage}{}
@@ -550,7 +525,7 @@
\g@addto@macro\@outputpage{\stepcounter{mn@abspage}}}
\newcommand*{\@mn@margintest}{%
% \end{macrocode}
-% \changes{v1.2}{2016/06/02}{addition for lua\TeX{} from 0.85}^^A
+% \changes{v1.2}{2016/06/02}{addition for lua\TeX{} from 0.85}^^A
% Number of the next margin note at this page.
% \begin{macrocode}
\expandafter\ifx\csname @mn@thispage\endcsname\@empty
@@ -566,32 +541,28 @@
\fi
\xdef\@mn@thispage{\themn@abspage}%
% \end{macrocode}
-% Use the number of the page and the number of the margin note at this page
-% to save the real number of this page at the \texttt{aux} file. At PDF mode
-% save the current $x$ position too.
+% Use the number of the page and the number of the margin note at this page
+% to save the real number of this page at the \texttt{aux} file. At PDF mode
+% save the current $x$ position too.
+% \changes{v1.3}{2018/04/13}{use new internals \cs{mn@savepos} and
+% \cs{mn@lastxpos}}^^A
+% \changes{v1.3}{2018/04/13}{non PDF mode removed}^^A
% \begin{macrocode}
\let\@mn@currpage\relax
\let\@mn@currxpos\relax
- \if@mn@pdfmode
- \@nameuse{\@mn@mode@prefix savepos}%
- \protected@write\@auxout{\let\themn@abspage\relax}{%
- \string\newmarginnote{note.\@mn@thispage.\@mn@atthispage}{%
- {\themn@abspage}{\noexpand\number\@nameuse{\@mn@mode@prefix lastxpos}sp}}%
- }%
- \else
- \protected@write\@auxout{\let\themn@abspage\relax}{%
- \string\newmarginnote{note.\@mn@thispage.\@mn@atthispage}{%
- {\themn@abspage}{}}%
- }%
- \fi
+ \mn@savepos
+ \protected@write\@auxout{\let\themn@abspage\relax}{%
+ \string\newmarginnote{note.\@mn@thispage.\@mn@atthispage}{%
+ {\themn@abspage}{\noexpand\number\mn@lastxpos sp}}%
+ }%
% \end{macrocode}
-% If the margin note label was not defined, it seems to be new. In this case
-% the absolut page number will be used for the test instead of the saved
-% real page number.
+% If the margin note label was not defined, it seems to be new. In this case
+% the absolut page number will be used for the test instead of the saved
+% real page number.
% \begin{macrocode}
\expandafter\ifx\csname mn@note.\@mn@thispage.\@mn@atthispage\endcsname\relax
% \end{macrocode}
-% If we are not in two side mode, we are on a odd page.
+% If we are not in two side mode, we are on a odd page.
% \begin{macrocode}
\if@twoside
\if@mn@verbose
@@ -643,19 +614,18 @@
\fi
% \end{macrocode}
% \changes{v1.2b}{2017/04/22}{\textsf{bidi} code added}^^A
+% \changes{v1.3}{2018/04/13}{\texttt{twocolumn} test added}^^A
% If you are using package \textsf{bidi} and RTL mode is active, the position
% is from right instead of left. So we have to substract \cs{@mn@currxpos}
% from \cs{pdfpagewidth} (or \cs{pagewidth} using Lua\TeX, but this cannot be,
% because \textsf{bidi} is not Lua\TeX-compatible).
% \begin{macrocode}
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname \@mn@mode@prefix pagewidth\endcsname\relax\else
+ \ifdefined\mn@pagewidth
\@mn@if@RTL{%
\PackageInfo{marginnote}{Margin note
\@mn@thispage.\@mn@atthispage\space in RTL mode}%
\edef\@mn@currxpos{%
- \the\dimexpr\@nameuse{\@mn@mode@prefix pagewidth}
- -\@mn@currxpos\relax
+ \the\dimexpr\mn@pagewidth-\@mn@currxpos\relax
}%
}{}%
\fi
@@ -663,25 +633,42 @@
\edef\@mn@currpage{\expandafter\@firstoftwo\@mn@currpage}%
\if@mn@verbose
\PackageInfo{marginnote}{Margin note \@mn@thispage.\@mn@atthispage\space
- is on absolute page \@mn@currpage\MessageBreak}%
+ is on absolute page \@mn@currpage}%
\fi
\if@twoside
\ifodd\@mn@currpage\relax
\@tempswatrue
+ \if@twocolumn
+ \ifdim \@mn@currxpos
+ < \dimexpr\oddsidemargin+\columnwidth+\columnsep\relax
+ \@tempswafalse
+ \fi
+ \fi
\else
\@tempswafalse
+ \if@twocolumn
+ \ifdim\@mn@currxpos>\dimexpr\evensidemargin+\columnwidth\relax
+ \@tempswatrue
+ \fi
+ \fi
\fi
\else
\if@mn@verbose
\PackageInfo{marginnote}{right page because not two side mode}%
\fi
\@tempswatrue
- \fi
+ \if@twocolumn
+ \ifdim \@mn@currxpos
+ < \dimexpr\oddsidemargin+\columnwidth+\columnsep\relax
+ \@tempswafalse
+ \fi
+ \fi
+ \fi
\fi
}
% \end{macrocode}
% \begin{macro}{@mn@ifRTL}
-% \changes{1.2b}{2017/04/22}{new internal}
+% \changes{v1.2b}{2017/04/22}{new internal}
% Test, whether or not \cs{if@RTL} exists and is true or false.
% \begin{macrocode}
\newcommand*{\@mn@if@RTL}{%
@@ -761,9 +748,10 @@
\fi
\@tempa{%
% \end{macrocode}
-% Everything will be put upwards using a vbox with zero height and depth and
-% \cs{vss}. At this box the margin test will be done. If cs{reversemargin}
-% was used, the logic switchs. Then the note will be places to the margin.
+% Everything will be put upwards using a \cs{vbox} with zero height and depth
+% and \cs{vss}. At this box the margin test will be done. If
+% \cs{reversemarginpar} was used, the logic reverses. Then the note will be
+% places to the margin.
% \begin{macrocode}
\vbox to\z@{%
\vss
@@ -780,42 +768,26 @@
% current $x$ position of the last PDF\LaTeX{} run and may be used to
% calculate the real horizontal offset.
% \begin{macrocode}
- \ifx\@mn@currxpos\relax
- \kern\marginnoterightadjust
- \if@mn@verbose
- \PackageInfo{marginnote}{%
- xpos not known,\MessageBreak
- using \string\marginnoterightadjust}%
+ \if@mn@verbose
+ \PackageInfo{marginnote}{xpos seems to be \@mn@currxpos}%
+ \fi
+ \begingroup
+ \ifx\@mn@currxpos\relax\else\ifx\@mn@currxpos\@empty\else
+ \kern-\dimexpr\@mn@currxpos\relax
+ \fi\fi
+ \ifx\@mn@currpage\relax
+ \let\@mn@currpage\@ne
\fi
- \else\ifx\@mn@currxpos\@empty
- \kern\marginnoterightadjust
- \if@mn@verbose
- \PackageInfo{marginnote}{%
- xpos not known,\MessageBreak
- using \string\marginnoterightadjust}%
+ \if@twoside\ifodd\@mn@currpage\relax
+ \kern\oddsidemargin
+ \else
+ \kern\evensidemargin
\fi
\else
- \if@mn@verbose
- \PackageInfo{marginnote}{%
- xpos seems to be \@mn@currxpos,\MessageBreak
- \string\marginnoterightadjust
- \space ignored}%
- \fi
- \begingroup
- \setlength{\@tempdima}{\@mn@currxpos}%
- \kern-\@tempdima
- \if@twoside\ifodd\@mn@currpage\relax
- \kern\oddsidemargin
- \else
- \kern\evensidemargin
- \fi
- \else
- \kern\oddsidemargin
- \fi
- \kern 1in
- \endgroup
+ \kern\oddsidemargin
\fi
- \fi
+ \kern 1in
+ \endgroup
\kern\marginnotetextwidth\kern\marginparsep
\vbox to\z@{\kern\marginnotevadjust\kern #3
\vbox to\z@{%
@@ -856,43 +828,30 @@
\kern-\parskip
\marginfont\raggedleftmarginnote\strut\hspace{\z@}%
\ignorespaces#1\endgraf
- \vss}%
- \vss}%
- \ifx\@mn@currxpos\relax
- \kern\marginnoteleftadjust
- \if@mn@verbose
- \PackageInfo{marginnote}{%
- xpos not known,\MessageBreak
- using \string\marginnoteleftadjust}%
+ \vss
+ }%
+ \vss
+ }%
+ \if@mn@verbose
+ \PackageInfo{marginnote}{xpos seems to be \@mn@currxpos}%
+ \fi
+ \begingroup
+ \ifx\@mn@currxpos\relax\else\ifx\@mn@currpos\@empty\else
+ \kern\@mn@currxpos
+ \fi\fi
+ \ifx\@mn@currpage\relax
+ \let\@mn@currpage\@ne
\fi
- \else\ifx\@mn@currxpos\@empty
- \kern\marginnoteleftadjust
- \if@mn@verbose
- \PackageInfo{marginnote}{%
- xpos not known,\MessageBreak
- using \string\marginnoteleftadjust}%
+ \if@twoside\ifodd\@mn@currpage\relax
+ \kern-\oddsidemargin
+ \else
+ \kern-\evensidemargin
\fi
\else
- \if@mn@verbose
- \PackageInfo{marginnote}{%
- xpos seems to be \@mn@currxpos,\MessageBreak
- \string\marginnoteleftadjust
- \space ignored}%
- \fi
- \begingroup
- \kern\@mn@currxpos
- \if@twoside\ifodd\@mn@currpage\relax
- \kern-\oddsidemargin
- \else
- \kern-\evensidemargin
- \fi
- \else
- \kern-\oddsidemargin
- \fi
- \kern-1in
- \endgroup
+ \kern-\oddsidemargin
\fi
- \fi
+ \kern-1in
+ \endgroup
\kern\marginparsep
}%
\fi
@@ -907,17 +866,9 @@
% \end{macro}
%
% \begin{macro}{\marginnoterightadjust}
+% \changes{v1.3}{2018/04/13}{removed}^^A
% \begin{macro}{\marginnoteleftadjust}
-% These may be used to define an automatic horizontal adjust. The default is
-% zero. They will be used only if not PDF\TeX{} or PDF\TeX{} before version~1.40
-% in DVI mode is used, because in this case the save position features are not
-% available.
-% \begin{macrocode}
-\newcommand*{\marginnoterightadjust}{}
-\newcommand*{\marginnoteleftadjust}{}
-\let\marginnoterightadjust\z@
-\let\marginnoteleftadjust\z@
-% \end{macrocode}
+% \changes{v1.3}{2018/04/13}{removed}^^A
% \end{macro}
% \end{macro}
%