
私のドキュメントクラスは なので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
以下のコメント アウトされた行は、奇数ページを使用しているか偶数ページを使用しているかを確認するために使用されることに注意してください。この行は、興味のある人のために残しておきました)。
したがって、プリアンブルに挿入された以下のコードは、marginnote
2018 年 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}