(\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

(\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

- mr2h の投稿
返信数: 10
Win10, uplatex,jlreqの縦組において、表題の、
(\rensuji{\pageref{ラベル名}}頁)の出力は算用数字ですが、これをを漢数字で表示したいのですが、そのマクロを教えていただけますか?
mr2h への返信

Re: (\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

- TONE Kozaburo の投稿
% upLaTeX
\documentclass[tate,uplatex,paper=b5,dvipdfmx]{jlreq}
\usepackage{plext}%

\renewcommand{\thepage}{\Kanji{page}}%

\pagestyle{plain}
\begin{document}
\section{ほげ}\label{1st}%
ほげほげほげほげほげほげほげほげ

\clearpage%
\section{ほげ}\label{2nd}%

最後のページ\pageref{last}

真ん中あたり\pageref{center}

\setcounter{page}{8}\clearpage%

\section{ほげ}\label{front}%

\setcounter{page}{123}\clearpage%
\section{ほげ}\label{center}%

\setcounter{page}{999}\clearpage%
\section{ほげ}\label{last}%

最初のページ\pageref{1st}

その次のページ\pageref{2nd}

次のページ\pageref{front}

\end{document}
TONE Kozaburo への返信

Re: (\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

- mr2h の投稿
ありがとうございます。

本文のページ表示は、算用数字で、相互参照のページ表示のみ漢数字で表示したいのです。

これって、少しヘンでしょうか?
或る書籍がそうなっているので、それを忠実に再現しようとしているのですが。

でも、理屈からすると、本文が算用数字のページ表示なら、相互参照のページ表示も、算用数字にするほうがよいのでしょうか?
mr2h への返信

Re: (\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

- TONE Kozaburo の投稿
これは難しいですね。私では無理です。

どなたか詳しい方から回答頂けるかもしれませんので、気長にお待ち下さい。
mr2h への返信

Re: (\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

- ut の投稿

「詳しい方」ではありませんが、手元では、単純に以下で上手くいっているように
見えます:

% ----- qa_3009 -----
\documentclass[tate,paper=b5,dvipdfmx]{jlreq}
\usepackage{plext}

\begin{document}

\setcounter{page}{100}
\section{甲}
\label{foo}

乙は\kansuji\pageref{bar}頁

\newpage
\setcounter{page}{150}
\section{乙}
\label{bar}

甲は\kansuji\pageref{foo}頁

\end{document}
% ----- qa_3009 -----

# 最初、\expandafter が要るのかなと思ったのですが、なくても漢数字になった
# ので、私自身は、なんだか混乱しているのですけれど…。

ut への返信

Re: (\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

- 本田 知亮 の投稿
> 最初、\expandafter が要るのかなと思ったのですが、なくても漢数字になった

\kansuji って,\romannumeralとかと同じで
数字を求めて展開しまくるタイプですよね,たしか.
expl3とかZRさんの論考でよく話題になる
展開可能性できわめて重要なパーツ.

このあたり,古くは2002年の黄色本のp92脚注20,
最近だと2017年のpLaTeX2eの更新で話題になってた
\null/\relax/space factorの絡みで
微妙だけど大事な修正が入ってますね.

\pagerefだけに\kansujiをうめこんで
こんな感じでいけるのではないかと思います.



\def\page@setref#1#2#3{%
\ifx#1\relax
\protect\G@refundefinedtrue
\nfss@text{\reset@font\bfseries ??}%
\@latex@warning{Reference `#3' on page \thepage \space
undefined}%
\else
\kansuji\expandafter#2#1\protect\@setref@{}% change \null to \protect\@setref@{}
\fi}
%%\def\@setref@{\ifhmode\spacefactor\@m\fi}


\def\pageref#1{\expandafter\page@setref\csname r@#1\endcsname
\@secondoftwo{#1}}
本田 知亮 への返信

Re: (\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

- mr2h の投稿
本田さん有り難うございました。

作つていただいたマクロで、目的が完全に果たせました。
心よりお礼申しあげます。
ut への返信

Re: (\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

- mr2h の投稿
有り難うございます。

utさんの方法(例示)を私の所で実行したところ、エラーとなりました。

! Missing number, treated as zero.

\protect
l.10 乙は\kansuji\pageref{bar}

?
ut への返信

Re: (\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

- mr2h の投稿
有り難うございます。

utさんの方法(例示)を私の所で実行したところ、エラーとなりました。

! Missing number, treated as zero.

\protect
l.10 乙は\kansuji\pageref{bar}

?


log fileの添付を忘れていました。
mr2h への返信

Re: (\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

- ut の投稿

さっきの投稿は、\documentclass のオプションをご覧いただくとお分かりいただける通り、実は platex で試してました。

今、uplatex でやってみましたら、確かにご提示の log のように言われてしまいますね…。

で、uplatex の場合は、

  乙は\expandafter\kansuji\pageref{bar}頁

としてみましたら、上手くいきました。

# 本田さんが作ってくださったマクロはまだ試していないのですけれど、まずは取り急ぎ。

ut への返信

Re: (\rensuji{\pageref{ラベル名}}ページ)を漢数字で表示したい

- ut の投稿

本田さんが作ってくださったマクロを試してみました(すごい!):

%
% ----- qa_3009_uplatex -----
%
\documentclass[tate,uplatex,paper=b5,dvipdfmx]{jlreq}
\usepackage{plext}

% ----- 2021/01/11 honda: qa_3009 -----
% cf. 2017/09/27 plcore.dtx v1.2s: \@setref: 相互参照のスペースファクターを補正.
\makeatletter
\def\page@setref#1#2#3{%
  \ifx#1\relax
    \protect\G@refundefinedtrue
    \nfss@text{\reset@font\bfseries ??}%
    \@latex@warning{Reference `#3' on page \thepage \space
              undefined}%
  \else
    \kansuji\expandafter#2#1\protect\@setref@{}% change \null to \protect\@setref@{}
  \fi}

\def\pageref#1{\expandafter\page@setref\csname r@#1\endcsname
                                  \@secondoftwo{#1}}
\makeatother
% ----- 2021/01/11 honda: qa_3009 -----

\begin{document}

\setcounter{page}{100}
\section{甲}
\label{foo}

乙は\pageref{bar}頁

\newpage
\setcounter{page}{150}
\section{乙}
\label{bar}

甲は\pageref{foo}頁

\end{document}
%
% ----- qa_3009_uplatex -----
%