以前のやり取りで https://okumuralab.org/tex/mod/forum/discuss.php?d=3009#p17800 の ut さんの記事を利用したサンプルを
作成してみました。
それを使った限りでは、懸念される障害は見受けられませんでした。(macOS でコンパイル)
ですので、これを使った時の、ログ及び .pdf を添付ファイルでアップロードしていただけませんか?
PS
サンプルソースや生成されたものもてん王しますが、
私は texlive を /opt/texlive にインストールしているので、.log はそれを考慮してください。
本田さんのフォローと前後して、スレッドがぐちゃぐちゃになりそうな気がしますが、ちょっと追跡した情報をお伝えしておきます。
numumi.4
が生成されてしまうようなのでenumerate
環境を利用するよう追加してみたところ
mr2h さんの報告する不具合を確認しました。
添付のソース 24335-with-enumerate.texでご確認お願い致します。
今の所、jreq.cls
なソースを uplatex
で処理すると少なくとも再現するようです。
力不足で、これ以上の追跡はできないので、識者の方、フォローお願いします。
念の為、生成された .log .pdf .aux も添付します。
なお、追跡していただく際の読み替えの煩わしさを軽減する目的で、 .log は標準的な /usr/locat/texlive のパスに書き換えておきました。
このあたりはこの数年で大幅な仕様変更があったので,
実際はあのマクロではアウトです.
\pagerefがxparse系のマクロで定義されるようになって
完全展開できなくなって問題が起きたなんて話題もありました.
たぶん,mr2hさんは入れ子になっていないenumerate環境の四番目の\itemに\labelをつけて
それに対して\pagerefで参照しているのではないですか?
\documentclass[tate,uplatex,paper=b5j,dvipdfmx]{jlreq}
%\usepackage{plext}
\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\@empty\@empty\@empty\protect\@setref@{}%%
\def\@kernel@spageref#1{\expandafter\page@setref\csname r@#1\endcsname
\@secondoffive{#1}}
\let\@kernel@pageref\@kernel@spageref
\makeatother
\begin{document}
\begin{enumerate}
\item\label{poem:01}
春草とラベル付けしたのを、注(\pageref{poem:01}ページ参照) というふうにページ参照
\end{enumerate}
\end{document}
\page@setrefの元の\@setrefのlatex.ltxでの新定義の意図が読み切れていない
(\@emptyが3つありますけどこれ不要?なんか修正漏れにも思える)ので
ひとまず,plcore.ltxで以前の\@setrefにあてたパッチを
今のlatex.ltxの\@setrefにあてて
今回の目的に合わせた\kansujiを追加しておきます.
#何かの意図で本当に\@emptyが3つ必要ならplcoreの方にも必要なはずで
#不具合が起こるケースがあるはずですが, \@secondoffiveがうまくやってくれてるはず
たぶんこれで期待通りの動きになるのではないかと思います.
なお,こういう書き換えは仕様変更に対応できないので要注意です.
本田さんの提示されたソースではなぜかコンパイルできない :-(
さて、mr2h さんから、問題となるソースを送っていただきました。
そのソースでは非標準パッケージや別途読み込み .pdf や画像が含まれているので
そのまま提示はできませんが 4
となっている原因は、
ちょっと前に示した私の回答では一つでしたので enumi.1
でしたが、
別途入手したソースでは、enumerate 環境で \item を以下のように4つ利用しているので enumi.4
になっているのかなと思っています。
\begin{enumerate}
\item 釈清譚注解「王右丞集」(続国訳漢文大成本)昭和四年七月東京国民文庫刊行会刊
\item 鈴木豹軒校閲・喜多尾城南著「王維詩評釈」大正十二年十二月京都彙文堂刊
\item 小林太市郎著「王維の生涯と芸術」昭和十九年十二月大阪全国書房刊
\item 吉川幸次郎・三好達治共著「新唐詩選」(岩波新書)昭和二十七年八月東京岩波書店刊
\end{enumerate}
以上、参考になればと思います。
# 流れを乱さないように、ここにぶら下げさせていただきます。
私の手元のシステムは W32TeX [2020/07/19] と古いので、手元では
確認できないのですが、ltxref.dtx の現在のバージョンは:
\ProvidesFile{ltxref.dtx}
[2024/09/20 v1.1r LaTeX Kernel (Cross Referencing)]
なのですね。
> このあたりはこの数年で大幅な仕様変更があったので,
に当たる 2022 年以降の更新は:
% \changes{v1.1p}{2022/04/12}{Add starred variants for the ref commands}
% \changes{v1.1q}{2023/05/12}{(UFi)extended to store five arguments}
% \changes{v1.1q}{2023/05/12}{(UFi)added a hook with argument}
% \changes{v1.1r}{2024/09/20}{set also \@currentHref}
% \changes{v1.1r}{2024/09/20}{provide a kernel copy \@kernel@refstepcounter}
% \changes{v1.1r}{2024/09/20}{add sockets}
となっていて、2022 年と 2023 年の変更の影響がかなり大きかった
んですよね(see also, LaTeX News Issue 35 & 37)。
それで、本田さんがおっしゃっている、
> pagerefがxparse系のマクロで定義されるようになって
> 完全展開できなくなって問題が起きたなんて話題もありました.
に該当するトピックは、確か、
whichpageマクロが動きません
2023年 02月 26日(日曜日) 16:48
https://okumuralab.org/tex/mod/forum/discuss.php?d=3545
のことだったような気がします。
いつもフォローありがとうございます.
目次関係やラベルの引数が増えたり,xparse系のものになったり,
いろいろなものがrobustになったり,
個人的にはlatex.ltxの中にexpl3が現れたのが一番「おおっ!?」なことでした.
#NFSS2の大改修やhookはよくわかってないという認識
mr2hさん
>ltxref.dtx の現在のversion は、どのように調べたらよいでしょうか
texdoc source2e
とするとでてくるpdfを見るのが手っ取り早いのです.
これがLaTeX2eそのもののソースと解説です.
ただ。。。いわば「原典」なので結構つらい面があります.
(余談の続きです)
「将来に同種の問題が発生する可能性が残っている」
以上は「問題が解決した」とはいえない気もチョットするのですが
、それは措いといて。
自分ではすっかり忘れていたのですが、以前にブログでこの辺りの話題を扱ったことがあって、そこではrefcountパッケージが使われていました。
- ラベルに紐づくカウンタ番号を取得する真っ当な方法(マクロツイーター)
様々な事情(※)の考えると、LaTeXカーネルの改修が進められても、refcountについてはその仕様通りの動作が維持される可能性が高いと判断しています。
※LaTeXチームの「Tagged PDF Project」においてTagging Statusの評価対象になっていること、および、Oberdiek氏作成の重要なパッケージについては現在はLaTeXチームがメンテナンスをしていること。
そこで、refcountを使ったブログの例示コードを\pageref
にも対応させてみました。
これなら「問題が解決する」のかもしれません……。