余白ノートは常にページの右側にあります

余白ノートは常にページの右側にあります

私のドキュメントクラスは なのでbook、偶数側と奇数側があります。ページ (偶数/奇数) に関係なく、方程式の番号が常に右側に揃えられるのが気に入っています。 marginnotes を使い始めました。私も同じように、メモが常にページの右側になるようにしたいのですが、どうすればよいですか?

答え1

etoolbox以下は、 LaTeX カーネル コマンドを(パッケージの助けを借りて) パッチする 1 つの解決策です\@addmarginpar

\documentclass[twoside]{book}
\usepackage[centering,marginparwidth=2.5cm]{geometry}
\usepackage{etoolbox}
\usepackage{lipsum}

\makeatletter
\patchcmd{\@addmarginpar}{\ifodd\c@page}{\ifodd\c@page\@tempcnta\m@ne}{}{}
\makeatother
\reversemarginpar

\begin{document}

\chapter{Test Chapter One}
\section{Test Section}
\lipsum[2]\marginpar{test marginnote one}
\lipsum[2-4]\marginpar{test marginnote two}
\lipsum[2-4]\marginpar{test marginnote three}
\lipsum[4-5]]\marginpar{test marginnote three}
\lipsum[6]

\end{document}

ここに画像の説明を入力してください

centeringこの余白注釈のレイアウトでは、パッケージのオプションを有効にすると便利ですgeometry。偶数ページの余白注釈が印刷されたドキュメントに正しく表示されるようにするには、さらに調整が必要になる場合があります。

\marginpar上記のコードは、標準の LaTeXコマンドのソリューションを提供します。余白の注釈を生成するために\marginnote(パッケージからmarginnote) の代わりに を使用する場合は\marginpar、内部マクロを\@mn@@@marginnote再定義する必要があります。

\documentclass[twoside]{book}
\usepackage[centering,marginparwidth=2.5cm]{geometry}
\usepackage{marginnote}
\usepackage{lipsum}

\makeatletter
\long\def\@mn@@@marginnote[#1]#2[#3]{%
  \begingroup
    \ifmmode\mn@strut\let\@tempa\mn@vadjust\else
      \if@inlabel\leavevmode\fi
      \ifhmode\mn@strut\let\@tempa\mn@vadjust\else\let\@tempa\mn@vlap\fi
    \fi
    \@tempa{%
      \vbox to\z@{%
        \vss
        \@mn@margintest
        \if@reversemargin\if@tempswa
            \@tempswafalse
          \else
            \@tempswatrue
        \fi\fi
          \rlap{%
            \ifx\@mn@currxpos\relax
              \kern\marginnoterightadjust
              \if@mn@verbose
                \PackageInfo{marginnote}{%
                  xpos not known,\MessageBreak
                  using \string\marginnoterightadjust}%
              \fi
            \else\ifx\@mn@currxpos\@empty
                \kern\marginnoterightadjust
                \if@mn@verbose
                  \PackageInfo{marginnote}{%
                    xpos not known,\MessageBreak
                    using \string\marginnoterightadjust}%
                \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
              \fi
            \fi
            \kern\marginnotetextwidth\kern\marginparsep
            \vbox to\z@{\kern\marginnotevadjust\kern #3
              \vbox to\z@{%
                \hsize\marginparwidth
                \linewidth\hsize
                \kern-\parskip
                \marginfont\raggedrightmarginnote\strut\hspace{\z@}%
                \ignorespaces#2\endgraf
                \vss}%
              \vss}%
          }%
      }%
    }%
  \endgroup
}
\makeatother

\begin{document}

\chapter{Test Chapter One}
\section{Test Section}
\lipsum[2]\marginnote{test marginnote one}
\lipsum[2-4]\marginnote{test marginnote two}
\lipsum[2-4]\marginnote{test marginnote three}
\lipsum[4-5]\marginnote{test marginnote three}
\lipsum[6]

\end{document}

ここに画像の説明を入力してください

答え2

数日前の私のコメントに加えて、2018/04/13 日付のパッケージのバージョンmarginnote(または執筆時点でそれ以降のバージョン) を使用している場合は、\@mn@@@marginnote異なるが完全に類似した方法で再定義する必要があります。

何が起こっているのかを理解したい人のために、以下のコード (および上記の回答) は、marginnote右側の余白の marginnotes を処理する定義の半分です (\if@tempswa以下のコメント アウトされた行は、奇数ページを使用しているか偶数ページを使用しているかを確認するために使用されることに注意してください。この行は、興味のある人のために残しておきました)。

したがって、プリアンブルに挿入された以下のコードは、marginnote2018 年 4 月以降のバージョンと互換性があるはずです。

\makeatletter
\long\def\@mn@@@marginnote[#1]#2[#3]{%
  \begingroup
    \ifmmode\mn@strut\let\@tempa\mn@vadjust\else
      \if@inlabel\leavevmode\fi
      \ifhmode\mn@strut\let\@tempa\mn@vadjust\else\let\@tempa\mn@vlap\fi
    \fi
    \@tempa{%
      \vbox to\z@{%
        \vss
        \@mn@margintest
        \if@reversemargin\if@tempswa
            \@tempswafalse
          \else
            \@tempswatrue
        \fi\fi
        %\if@tempswa
          \rlap{%
            \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
              \if@twoside\ifodd\@mn@currpage\relax
                  \kern\oddsidemargin
                \else
                  \kern\evensidemargin
                \fi
              \else
                \kern\oddsidemargin
              \fi
              \kern 1in
            \endgroup
            \kern\marginnotetextwidth\kern\marginparsep
            \vbox to\z@{\kern\marginnotevadjust\kern #3
              \vbox to\z@{%
                \hsize\marginparwidth
                \linewidth\hsize
                \kern-\parskip
                \marginfont\raggedrightmarginnote\strut\hspace{\z@}%
                \ignorespaces#2\endgraf
                \vss}%
              \vss}%
          }%
      }%
    }%
  \endgroup
}
\makeatother

答え3

最近同じ質問に遭遇しましたが、geometryマニュアルで簡単な解決策を見つけました。必要なのはオプションを追加することだけですasymmetric

\documentclass[12pt]{book}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{geometry}
\geometry{verbose, a4paper, twoside, showframe, asymmetric}

\renewcommand{\familydefault}{\sfdefault}

\begin{document}

\chapter{}

Hello, \LaTeX.
\marginpar{Hello, \TeX.}

\newpage

Hello, \LaTeX.
\marginpar{Hello, \TeX.}
\end{document}

関連情報