lineno.sty の pagewise オプションと xr.sty の併用について

Re: lineno.sty の pagewise オプションと xr.sty の併用について

- 匿 名 の投稿
返信数: 0

便利に使わせていただいておりましたが,右段と出力してほしい状況で左段と表示されるケースがあり,ChatGPT5.2に相談したところ解決したと思いますので,シェアします.
(修正内容(に限らず本スレッドで議論されている内容全般)を理解しておりませんので,不適切な修正となっているかもしれません)


修正前

\makeatletter
\def\WriteLineNo{%
  \ifx\theLineNumber\thePagewiseLineNumber
  \testNumberedPage
  \fi
  \unvbox\@cclv
  \expandafter \@LN@xnext \@LN@labellist \@@
  \@LN@label \@LN@labellist
  \protected@write\@auxout{}{\string\newlabel{\@LN@label}%
    {{\the\c@linenumber}{\thepage}\@LN@ExtraLabelItems}}%
}
\def\WriteColumnSideInfo#1{%
  \if@firstcolumn \def\left@right{左}%
  \else           \def\left@right{右}%
  \fi%
  % \immediate\write\@auxout{\string\newlabel{columnside:#1}{{\left@right}{\left@right}}}%
  \protected@write\@auxout{}{\string\newlabel{columnside:#1}{{\left@right}{\left@right}}}%
}
\newcommand{\LINELABEL}[1]{\linelabel{#1}\WriteColumnSideInfo{#1}}
\newcommand{\LABEL}    [1]{    \label{#1}\WriteColumnSideInfo{#1}}
\makeatother

修正後

\makeatletter
\def\WriteLineNo{%
  \ifx\theLineNumber\thePagewiseLineNumber
    \testNumberedPage
  \fi
  \unvbox\@cclv
  \expandafter \@LN@xnext \@LN@labellist \@@
  \@LN@label \@LN@labellist
  % 左右段の判定は,ここ(出力ルーチン内)でのみ信頼できる
  \if@firstcolumn \def\left@right{左}%
  \else           \def\left@right{右}%
  \fi
  \immediate\write\@auxout{%
    \string\newlabel{columnside:\@LN@label}{{\left@right}{\left@right}}%
  }%
  \immediate\write\@auxout{%
    \string\newlabel{\@LN@label}{{\the\c@linenumber}{\thepage}\@LN@ExtraLabelItems}%
  }%
}
\newcommand{\LINELABEL}[1]{\linelabel{#1}}
\newcommand{\LABEL}[1]{\label{#1}}
\makeatother


修正前後のコードを含むtex(修正後をコメントアウト)ファイル,これをコンパイルしたときのaux, pdfを添付しています.