pxrubricaとupmendexによるルビ付き索引

pxrubricaとupmendexによるルビ付き索引

- 温盛 息子 の投稿
返信数: 6
ルビのパッケージでpxrubricaを使用しています。
また、upmendexで「ルビ付き」の索引を作ろうとしてます。

この時、upmendexのオプションで ! (エクスクラメーションマーク)を用いると、段落頭で進入ができるのですが、upmendexの実行時にエラーが発生してしまいます。
! がなければエラーは生じないのですが、見栄え上、できれば段落頭の進入を使いたいです。

解決策あるいは代替案をご存じの方、教えていただけると幸いです。

温盛 息子 への返信

Re: pxrubricaとupmendexによるルビ付き索引

- 本田 知亮 の投稿
こういうのは簡単なサンプルがあると意味が
伝わりやすいのですが・・・

mendexの子要素指定の「!」 と,
pxrubricaのルビの指定の「!」が重なってしまって
ルビの指定がmendexに解釈されてしまう
ということですよね

\rubyの「!」を隠ぺいすればうまくいきませんか

\def\rubyOpExcl{\ruby[!]}
みたいにしてマクロで隠蔽しても
いけるんじゃないかと思いますが,
すでに入力済だときびしいですね

それなら,
全部をTeX+mendexでするのではなく
前後に変換をかければいいとおもいます

・main.texからmain.idxができる
・main.idxから[!]を削除してtemp.idxをつくる
・mendexでtemp.indをつくる
・temp.indの\rubyに[!]を追加してmain.indをつくる

sedならこんな感じかな

sed 's/\[!\]//g' main.idx > temp.idx
mendex temp.idx
sed 's/\\ruby/\\ruby[!]/g' temp.ind > main.ind


全部の\rubyに[!]がついてるのではないなら
[!]の削除の際に何から[!]をとったのか記録して
それをもとに[!]を戻せばよいですけど
こうなるとsedだと厳しいので
perlとかrubyとかpythonとかで書くことに
なるでしょうね.
luaでもいけるかな.
気合入れればTeXでもいけるかも


本田 知亮 への返信

Re: pxrubricaとupmendexによるルビ付き索引

- 和田 勇 の投稿
sed だけでやるなら  's/\[!\]//g' を  's/\[!\/存在しない文字列/g' と
「[!]の削除の際に何から[!]をとったのか記録」しておけば良いでしょう。
和田 勇 への返信

Re: pxrubricaとupmendexによるルビ付き索引

- 本田 知亮 の投稿
>sed だけでやるなら  's/\[!\]//g' を  's/\[!\/存在しない文字列/g' と

あ,そうか.消すんじゃなくて,
マーカをつければいいんですね.

重複しないような冗長なマーカをつければ・・・
-Exclamation-in-Option-
とかで問題ないでしょうね

温盛 息子 への返信

Re: pxrubricaとupmendexによるルビ付き索引

- はやて (h20y6m) の投稿
! は " でエスケープする必要があるみたいです。

https://okumuralab.org/tex/mod/forum/discuss.php?d=2508 の ワトソン さんの回答を参照
はやて (h20y6m) への返信

Re: pxrubricaとupmendexによるルビ付き索引

- Z. R. の投稿

試してみましたが、普通に「!"でエスケープする」でうまくいくようです。

\documentclass[uplatex,a4paper]{jsarticle}
\usepackage{makeidx}
\makeindex
\usepackage{pxrubrica}
\rubysetup{<J>}
\begin{document}
家鴨\index{あひる@\ruby{家鴨}{あひる}}や
梟\index{ふくろう@\ruby["!-]{梟}{ふくろう}}は
微妙。

\printindex
\end{document}
はやて (h20y6m) への返信

Re: pxrubricaとupmendexによるルビ付き索引

- 本田 知亮 の投稿
escape忘れてた orz

ご指摘感謝.

idxを変換して,mendexして,さらに変換するのも
ありふれた手法だとは思うので,
ご参考になれば。。。

#索引つくるときには
#idxいじらないとやってられません
#「ちょうふく」「じゅうふく」とか・・・