https://doratex.hatenablog.jp/entry/20160611/1465601758
を参考に、下記のソースとタイプセットすると、
jsarticle と jlreq で異なります。
jlreq でも和文ゴーストが効くようにはできないでしょうか。
\documentclass[uplatex,jafontscale=0.924690]{jlreq}
%\documentclass[uplatex]{jsarticle}
\chardef\zenkakuSpace=\jis"2121\relax %% 全角スペース
\def\squarestar{%
\zenkakuSpace % 全角スペースを出力
\kern-1zw\relax % 1文字分戻る
\begingroup
\fboxsep=0pt
\fboxrule=.5pt
\framebox[1zw][c]{★}%
\endgroup
\kern-1zw\relax % 1文字分戻る
\zenkakuSpace % 全角スペースを出力
}
\begin{document}
あいう★えお\par
あいう\squarestar えお
\fboxsep=0pt
\framebox[10zw][s]{あいう★えお}\par
\framebox[10zw][s]{あいう\squarestar えお}
ABC★XYZ\par
ABC\squarestar XYZ
\end{document}
手がかりを発見しました。
下記のソースの通り、jlreqだと、全角スペースは通常の和字扱いされていないからと思われます。
では、どうすればいいのか……というのがわかりません。
解決策をご教示いただければと思います。
\documentclass[uplatex,jafontscale=0.924690]{jlreq}
%\documentclass[uplatex]{jsarticle}
\begin{document}
\fboxsep=0pt
\framebox[10zw][s]{あいうえお}
\framebox[10zw][s]{あいう お}
\end{document}
下記のソースの通り、jlreqだと、全角スペースは通常の和字扱いされていないからと思われます。
では、どうすればいいのか……というのがわかりません。
解決策をご教示いただければと思います。
\documentclass[uplatex,jafontscale=0.924690]{jlreq}
%\documentclass[uplatex]{jsarticle}
\begin{document}
\fboxsep=0pt
\framebox[10zw][s]{あいうえお}
\framebox[10zw][s]{あいう お}
\end{document}
こんな感じで行けると思います.
jlreqは独自のjfmを使うので
和文の扱いがちょっと違って,
全角空白がその違う部分に入っています.
ですので,全角空白だけ
「普通」に戻してみました.
\documentclass[uplatex,jafontscale=0.924690,narrow_kanjiskip]{jlreq}
%\documentclass[uplatex]{jsarticle}
\makeatletter
\chardef\zenkakuSpace\ucs"3000\relax %% 全角スペース
\def\jghost@jis@begin{\bgroup
\usekanji{\k@encoding}{jismin}{m}{n}
\zenkakuSpace
\kern-1zw
\egroup}
\def\jghost@jis@end{\bgroup
\usekanji{\k@encoding}{jismin}{m}{n}
\kern-1zw
\zenkakuSpace
\egroup}
\DeclareFontFamily{JY2}{jismin}{}
\DeclareFontFamily{JT2}{jismin}{}
\DeclareFontShape{JY2}{jismin}{m}{n} {<-> s*[0.92469] upjisr-h}{}
\DeclareFontShape{JT2}{jismin}{m}{n} {<-> s*[0.92469] upjisr-v}{}
\def\squarestar{%
\jghost@jis@begin
\begingroup
\fboxsep=0pt
\fboxrule=.5pt
\framebox[1zw][c]{★}%
\endgroup
\jghost@jis@end
}
le}
\makeatother
\begin{document}
あいう\char\ucs"3000 えお
ABC★XYZ\par
ABC\squarestar XYZ
ABC XYZ\par
\fboxsep=0pt
\framebox[10zw][s]{あいう★えお}\par
\framebox[10zw][s]{あいう\squarestar えお}
ABC★XYZ\par
ABC\squarestar XYZ
\end{document}
jlreqは独自のjfmを使うので
和文の扱いがちょっと違って,
全角空白がその違う部分に入っています.
ですので,全角空白だけ
「普通」に戻してみました.
\documentclass[uplatex,jafontscale=0.924690,narrow_kanjiskip]{jlreq}
%\documentclass[uplatex]{jsarticle}
\makeatletter
\chardef\zenkakuSpace\ucs"3000\relax %% 全角スペース
\def\jghost@jis@begin{\bgroup
\usekanji{\k@encoding}{jismin}{m}{n}
\zenkakuSpace
\kern-1zw
\egroup}
\def\jghost@jis@end{\bgroup
\usekanji{\k@encoding}{jismin}{m}{n}
\kern-1zw
\zenkakuSpace
\egroup}
\DeclareFontFamily{JY2}{jismin}{}
\DeclareFontFamily{JT2}{jismin}{}
\DeclareFontShape{JY2}{jismin}{m}{n} {<-> s*[0.92469] upjisr-h}{}
\DeclareFontShape{JT2}{jismin}{m}{n} {<-> s*[0.92469] upjisr-v}{}
\def\squarestar{%
\jghost@jis@begin
\begingroup
\fboxsep=0pt
\fboxrule=.5pt
\framebox[1zw][c]{★}%
\endgroup
\jghost@jis@end
}
le}
\makeatother
\begin{document}
あいう\char\ucs"3000 えお
ABC★XYZ\par
ABC\squarestar XYZ
ABC XYZ\par
\fboxsep=0pt
\framebox[10zw][s]{あいう★えお}\par
\framebox[10zw][s]{あいう\squarestar えお}
ABC★XYZ\par
ABC\squarestar XYZ
\end{document}
ありがとうございます。うまくいきました。
回答を待っている間もいろいろ試していました。\kcatcode` =16 としてもうまくいきません。
jlreq.cls をのぞいてみると、全角スペースに関して何かをされているようですが、読み取れませんでした。
さて、早速ご回答を試させていただきました。
なるほど、全角スペースを使う部分だけ upjisr にしているわけですね。
最初、
! LaTeX Error: Missing \begin{document}.
と出たので、消し忘れと思われる
le}
を削除しました。そうすると今度は
! LaTeX Error: Font JT2/jismin/m/n/10 not found.
と出て、「なぜ縦書きでないのにJT2?」と思い、
\DeclareFontShape の使い方を検索し、
s* の前に <-> を置くとうまくいきました。
おかげさまで解決しました。ありがとうございました。
回答を待っている間もいろいろ試していました。\kcatcode` =16 としてもうまくいきません。
jlreq.cls をのぞいてみると、全角スペースに関して何かをされているようですが、読み取れませんでした。
さて、早速ご回答を試させていただきました。
なるほど、全角スペースを使う部分だけ upjisr にしているわけですね。
最初、
! LaTeX Error: Missing \begin{document}.
と出たので、消し忘れと思われる
le}
を削除しました。そうすると今度は
! LaTeX Error: Font JT2/jismin/m/n/10 not found.
と出て、「なぜ縦書きでないのにJT2?」と思い、
\DeclareFontShape の使い方を検索し、
s* の前に <-> を置くとうまくいきました。
おかげさまで解決しました。ありがとうございました。
ありゃ,なんか変なコピペミス・編集ミス
やらかしてますね.
適宜,読み替えていただけたようでよかったです.
>\kcatcode` =16 としてもうまくいきません。
jlreq.cls をのぞいてみると、全角スペースに関して何かをされているようですが、読み取れませんでした。
最初に考えたのが \kcatcode でしたが,これははずれでした.
全角空白まわりで
\kanjiskip/\xkanjiskjipの入り方が違うので
\inhibitspcodeかと思ったのですが,はずれ.
ここまできて,jlreqはjfmが違うことを思い出して,
jlreqのjfmを読んで,全角空白がtype 12になってるのをみて納得,
という流れでした.
自分でも事情に合わせたオレオレjfmを作ることがあるので,今回のghostの件は,このパターンがありうるかと思いました.
やらかしてますね.
適宜,読み替えていただけたようでよかったです.
>\kcatcode` =16 としてもうまくいきません。
jlreq.cls をのぞいてみると、全角スペースに関して何かをされているようですが、読み取れませんでした。
最初に考えたのが \kcatcode でしたが,これははずれでした.
全角空白まわりで
\kanjiskip/\xkanjiskjipの入り方が違うので
\inhibitspcodeかと思ったのですが,はずれ.
ここまできて,jlreqはjfmが違うことを思い出して,
jlreqのjfmを読んで,全角空白がtype 12になってるのをみて納得,
という流れでした.
自分でも事情に合わせたオレオレjfmを作ることがあるので,今回のghostの件は,このパターンがありうるかと思いました.