Win10, uplatex,jlreqの縦組において、表題の、
(\rensuji{\pageref{ラベル名}}頁)の出力は算用数字ですが、これをを漢数字で表示したいのですが、そのマクロを教えていただけますか?
% 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}
\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}
「詳しい方」ではありませんが、手元では、単純に以下で上手くいっているように
見えます:
% ----- 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 が要るのかなと思ったのですが、なくても漢数字になった
# ので、私自身は、なんだか混乱しているのですけれど…。
> 最初、\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}}
\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}}
有り難うございます。
utさんの方法(例示)を私の所で実行したところ、エラーとなりました。
! Missing number, treated as zero.
\protect
l.10 乙は\kansuji\pageref{bar}
頁
?
log fileの添付を忘れていました。
utさんの方法(例示)を私の所で実行したところ、エラーとなりました。
! Missing number, treated as zero.
\protect
l.10 乙は\kansuji\pageref{bar}
頁
?
log fileの添付を忘れていました。
本田さんが作ってくださったマクロを試してみました(すごい!):
%
% ----- 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 -----
%