bxjsarticleにおけるmktextfmエラー

bxjsarticleにおけるmktextfmエラー

- texer の投稿
返信数: 4

pdfLaTeXを使用してbxjsarticleクラスの文書を作成しようとすると以下のエラーが出力されます。


類似のエラー出力を探すと、「texlive-fonts-recommended」をインストールするという対処法がありましたが、そちらでは解消されませんでした。


以下に示しているコードは、エラーが発生しているコードを抜粋したものです。

こちらをコンパイルしようとすると別のエラー(! Missing $ inserted.)が発生してしまいますが、構造としては大きく違いはないものと思っています。


試しに抜粋元コードで「\three」の部分を英数字や「日本」に置き換えた場合は正常に実行が終了しますが、「国」に置き換えた場合は同様のエラーが発生します。


CJK関連のエラーではないかと考えていますが、解決の糸口が見えてこないのでご助力いただきたいです。


エラー出力の内容:

------------------------------------------------------------------------------------------

kpathsea: Running mktextfm ipxm-r-u56sat

mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; ; nonstopmode; input ipxm-r-u56sat

This is METAFONT, Version 2.71828182 (TeX Live 2022/dev/Debian) (preloaded base=mf)



kpathsea: Running mktexmf ipxm-r-u56sat

! I can't find file `ipxm-r-u56sat'.

<*> ... mag:=1; ; nonstopmode; input ipxm-r-u56sat


Please type another input file name

! Emergency stop.

<*> ... mag:=1; ; nonstopmode; input ipxm-r-u56sat


Transcript written on mfput.log.

grep: ipxm-r-u56sat.log: No such file or directory

mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; ; nonstopmode; input ipxm-r-u56sat' failed to make ipxm-r-u56sat.tfm.

kpathsea: Appending font creation commands to missfont.log.

! Font C70/mc/m/n/10/56=ipxm-r-u56sat not loadable: Metric (TFM) file not found

.

<to be read again>

                   9

l.173 \end{document}


?

! pdfTeX error (font): invalid font identifier.

\font@name ->\C70/mc/m/n/10/56


l.173 \end{document}


!  ==> Fatal error occurred, no output PDF file produced!

------------------------------------------------------------------------------------------


バージョン:

------------------------------------------------------------------------------------------

$ pdflatex -v

pdfTeX 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian)

kpathsea version 6.3.4/dev

Copyright 2021 Han The Thanh (pdfTeX) et al.

There is NO warranty.  Redistribution of this software is

covered by the terms of both the pdfTeX copyright and

the Lesser GNU General Public License.

For more information about these matters, see the file

named COPYING and the pdfTeX source.

Primary author of pdfTeX: Han The Thanh (pdfTeX) et al.

Compiled with libpng 1.6.37; using libpng 1.6.37

Compiled with zlib 1.2.11; using zlib 1.2.11

Compiled with xpdf version 4.03

------------------------------------------------------------------------------------------


抜粋コード:

------------------------------------------------------------------------------------------

% test.tex

\documentclass[pdflatex,b5j,ja=standard]{bxjsarticle}

\usepackage{graphicx}


\usepackage{test}


\begin{document}

  test

\end{document}

------------------------------------------------------------------------------------------

% test.sty

\def\width{182}

\def\height{257}

\def\rwidth{100}

\def\rheight{8}

\def\ROOT@X{0}

\def\ROOT@Y{0}


\def\@list{

  A:B:C:,

  D:E:F:,

  G:H:I:

}


{\catcode`\p=12\catcode`\t=12\gdef\num#1pt{#1}}

\newdimen\result

\def\Add#1#2#3{\result=#1pt \advance\result by #2pt

\edef#3{\expandafter\num\the\result}

}


\def\SetPos(#1,#2)#3{

\Add{#1}\ROOT@X\root@x

\Add{#2}\ROOT@Y\root@y

        {#3}

}

\def\Put(#1,#2)#3{

\Add\root@x{#1}\xpos

\Add\root@y{#2}\ypos

\Sub\height\ypos\ypos

\put(\xpos,\ypos){#3}

}


\def\disassemble#1:#2:#3:{

\def\one{#1}\def\two{#2}\def\three{#3}

}


\def\write#1{

\@for\linebuf:=#1\do{

\expandafter\disassemble\linebuf

\Put(0,\offset){\makebox(\rwidth,\rheight)[c]{\normalsize \three\hspace{20mm}}}

\Add\offset{\rheight}\offset

}

}


\let\enddocumentorg=\enddocument

\def\enddocument{

  \writepages

  \enddocumentorg

}


\def\writepages{

  \def\ROOT@X{10}

  \def\ROOT@Y{10}

  \begin{picture}(\width,\height)

  \SetPos(0,0) {

    \def\offset{20}

    \write\@list

  }

  \end{picture}

}

------------------------------------------------------------------------------------------

texer への返信

Re: bxjsarticleにおけるmktextfmエラー

- 和田 勇 の投稿
行数が多い場合は、ファイルの添付での提供をお願いします。
また今回の場合、test.tex test.sty のほか test.log も zip やtar+圧縮したものを提供してください。

さて、
pdfTeX 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian)
kpathsea version 6.3.4/dev
とのことですが、texlive は独自にコンパイルされたものですか?
であれば、そのコンパイル時の方法も検討する必要がありますので教えてください。

今回のご報告では、二つのエラーがある様におもいます。

エラー1)(! Missing $ inserted.)

これは、実際には以下のようなものだとおもいます。(← .log ファイルの提供して欲しい理由の一つ)

(./test.sty)
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
! Missing $ inserted.

$
l.46 \cs_new_protected:Npn \__
kernel_backend_literal:n #1
?

test.sty を追いかけてゆくと最後の方にある以下の記述に問題がある様です。
まだ、なぜエラーになるか追いかけていないのですが ....

\def\write#1{
\@for\linebuf:=#1\do{
\expandafter\disassemble\linebuf
\Put(0,\offset){\makebox(\rwidth,\rheight)[c]{\normalsize \three\hspace{20mm}}}
\Add\offset{\rheight}\offset
}
}
\let\enddocumentorg=\enddocument
\def\enddocument{
\writepages
\enddocumentorg
}

エラー 2) kpathsea: Running mktextfm ipxm-r-u56sat 関連

「 ipxm-r-u56sat 」に関する設定を変更等しましたか?(←texlive の導入方法を知りたい理由)
お試しになっているソースは 173行ある様なので、その中に記述されているのかもしれません。
恐らくpdflatex したときエラーを無視して pdf を作る様にオプションを指定されているので
test.sty の記述ミスを無視してしまっているからではないのでしょうか?(←実際にエラーとなったソースやログが必要な理由)

以上、これから test.sty の二箇所の定義が何故ダメなのか調べますが、
できれば test.sty で何を実現したいか、表明していただけると幸いです。
(これもお試しのソースファイルの提供が必要な理由です)
和田 勇 への返信

Re: bxjsarticleにおけるmktextfmエラー

- 和田 勇 の投稿
test.sty の独自マクロについての中間報告です。

1) \def\write は  tex プリミティブの \write と競合してしまうと思います。
    他の独自定義マクロのように先頭文字を大文字にするよう \Write などにすると良いでしょう。
  それに伴い、\def\writepages 内の \write\@list も \Write\@list のように変更数する

2)マクロ \Write 内から \Put を利用しようとしているが
  3番目のパラメータが空になるようなので
    \Put マクロの定義と調整が必要

3) \disassemble マクロでパラメータを区切り文字「:」で分解して
      \one \two \therr に代入しようとしているが、
    それをexpandafter で呼ぶのが良いかどうか、仕様がわからないので不明。
      多分『「\three」の部分を英数字や「日本」云々』とのことの原因かしらと想像中。

4) \Put マクロで \Add マクロを利用して \xpos \ypos を動的に生成しようとしているけど、
    うまくいっていないので undef になってしまう。

5) \Put マクロで利用しようとしている \Sub マクロが未定義

未定義なので何をやろうとしているか不明なのででデバッグ継続できず中断。

もしよろしかったら、test.sty を作成した際の参考にした URL や書籍名を教えてください。
あるいは、うまく動いていた texlive のバージョンと、
そのときのサンプルソースとログをアップロードしてください。


和田 勇 への返信

Re: bxjsarticleにおけるmktextfmエラー

- texer の投稿
ご返信ありがとうございます。
ご指摘いただいた部分を中心に修正したところ、無事コンパイルできるようになりました。
ありがとうございました。
texer への返信

Re: bxjsarticleにおけるmktextfmエラー

- 和田 勇 の投稿
test.sty の独自マクロの方はともかく、
「mktextfmエラー」の方の解決方法が報告されていなかったので、
症状から、検証してみました。

pdflatex のバージョン情報から ubuntu 22.04 かその派生のもの環境で発生したと
想定して検証しました。

texlive 自体はおそらく「sudo apt install texlive」を行ったのではないかとおもいます。
しかし、この texlive だけでは、使用されたドキュメントクラスや日本語を含むソースの
タイプセットに必要なパッケージがインストールされません。

調査したところ texlive のほか、texlive-lang-japanese texlive-fonts-extra の二つは
最低限必要と思われます。なお、texlive-fonts-recommended はtexlive-lang-japanese
の関連・依存関係でインストールされます。

CTAN 提供のインストーラと同等に texlive 環境を整備するには、私の経験上ですが
texlive-full でインストールする必要がありますので、今後、スタイルファイルが見つからない
などの症状が出た場合は、 sudo apt install texlive-full をお試しください。

今回のことに関連して調べた情報を添付しましたので、一読していただけたらとおもいます。