ltjsclassesで生じる\phantom{...}とのずれ

ltjsclassesで生じる\phantom{...}とのずれ

- Ryuta Kudo の投稿
返信数: 3

LuaLaTeX + ltjsarticleを利用しているのですが、\phantom{...}を使うとずれが生じます。

原因が分かる方いらっしゃいましたらご教示いただけますと幸いです。

問題が再現される最小限のソースを以下に示します。私の環境での出力を画像で添付しております。

なお、jlreqでは本件の問題は発生しませんでした。


\documentclass{ltjsarticle}
  
\begin{document}
  apple\hspace{1em}「りんご」
  
  \phantom{apple\hspace{1em}}「りんご」
\end{document}
添付 sample.png
Ryuta Kudo への返信

Re: ltjsclassesで生じる\phantom{...}とのずれ

- Yamamoto Munehiro "munepi" の投稿
一般に、JFM(ならびに、場合によって用いるクラスファイルの仕様)が異なれば、文字組みが変わります。
したがって、本件は、「問題」ではなく、仕様です。

実際に、ltjsarticleとjlreqで標準的に用いるJFMが異なるので、文字組みが異なります。
以下が再現例です。

* 1節では、ltjsarticle標準のujisを用いています。
* 2節では、jlreq標準のjlreqを場当たり的に用いています。

%#!lualatex
\documentclass{ltjsarticle}
\makeatletter
\DeclareKanjiFamily{JY3}{jlreqmc}{}
\DeclareFontShape{JY3}{jlreqmc}{m}{n}{<-> s * [\Cjascale] \ltj@stdmcfont:-kern;jfm=jlreq}{}
\makeatother
\begin{document}
\section{ujis}
  apple\hspace{1em}「りんご」

  \phantom{apple\hspace{1em}}「りんご」

\section{jlreq}
\usekanji{JY3}{jlreqmc}{m}{n}\selectfont
  apple\hspace{1em}「りんご」

  \phantom{apple\hspace{1em}}「りんご」
\end{document}
Yamamoto Munehiro "munepi" への返信

Re: ltjsclassesで生じる\phantom{...}とのずれ

- Ryuta Kudo の投稿
フォントメトリックの差異に起因しており、この挙動は仕様であって問題ではないとのこと、ご教示ありがとうございます。
ご気分を害してしまったようで申し訳ございません。無知ゆえ「問題」と書いてしまいましたが、批判・非難の意図は一切ございませんでした。

ぜひお伺いしたいですが、ltjsclassesにおいて、上記例における「りんご」を揃えるにはどうするのが適切なのでしょうか。

上記例は最小限のものでしたので、抽象的で意図が伝わりにくいかもしれませんから、別のもう少し具体的な例もお示しいたします(添付画像)。
添付画像における「走る」と「を経営する」のように、括弧の頭が揃って出力されるようにしたいです。
\phantom の使用にこだわりがあるわけではございませんので、より良いマークアップ/実装がございましたらぜひご教示いただけますと幸いです。
 
よろしくお願いいたします。
 
添付 sample.png
Ryuta Kudo への返信

Re: ltjsclassesで生じる\phantom{...}とのずれ

- 林 かぐら の投稿

最初の質問は munepi さん指摘のようにJFMの問題です。
次の質問は「位置揃え」の問題のようにみえます。
以下はこの「位置揃え」についての回答です。

\documentclass{ltjsarticle}
\newcommand{\enja}[2]{\leavevmode\hbox to 7\zw{#1\hfil}#2}% 幅は適当に
\begin{document}
\noindent
\enja{1. apple〔名〕}{「りんご」}\\
\enja{2. farm〔名〕}{「農園」「農場」}\\
\enja{3. run〔動〕}{「走る」}\\
\enja{}{「を経営する」}
\end{document}

簡易的な表です。ある意味タブ機能かも。
普通に「表」を使えば横幅を取得してくれますが,
ちょっと大袈裟にみえます。