
我的文檔類別是book
,所以我有偶數和奇數邊。我喜歡方程式編號始終在右側對齊 - 獨立於頁面(偶數/奇數)。我開始使用邊注。我想做同樣的事情,筆記總是在頁面的右側?我怎麼做?
答案1
這是一個可能的解決方案(在軟體包的幫助下etoolbox
)修補 LaTeX 核心命令\@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
;可能需要進一步調整,以便偶數頁上的頁邊註可以正確顯示在列印文件上。
上面的程式碼提供了標準LaTeX\marginpar
命令的解決方案;如果使用\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
根據我幾天前的評論,如果您使用的是marginnote
2018/04/13 的軟體包版本(或在撰寫本文時更新的版本),那麼您需要\@mn@@@marginnote
以不同但完全類似的方式重新定義。
對於那些想了解發生了什麼的人,下面的程式碼(以及上面的答案)是處理右側邊距中的邊注的定義的一半marginnote
(請注意,下面的註解\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}