여백은 항상 페이지 오른쪽에 있음

여백은 항상 페이지 오른쪽에 있음

내 문서 클래스는 book이므로 짝수면과 홀수면이 있습니다. 나는 방정식 번호가 페이지(짝수/홀수)와 관계없이 항상 오른쪽에 정렬되는 것을 좋아합니다. 마진노트를 사용하기 시작했습니다. 나도 똑같이 하고 싶었는데, 메모가 항상 페이지 오른쪽에 있었나요? 어떻게 해야 하나요?

답변1

etoolboxLaTeX 커널 명령을 패치하는(패키지의 도움으로) 가능한 솔루션 중 하나는 다음과 같습니다 \@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

며칠 전 내 의견에 더해, marginnote2018/04/13(또는 작성 당시 최신 버전) 패키지 버전을 사용하는 경우 \@mn@@@marginnote다르지만 완전히 유사한 방식으로 재정의해야 합니다.

무슨 일이 일어나고 있는지 이해하려는 사람들을 위해 아래 코드(및 위 답변)는 marginnote오른쪽 여백의 여백을 처리하는 정의의 절반입니다( \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}

관련 정보