latexmkにおけるdvipdfmxのオプションについて

latexmkにおけるdvipdfmxのオプションについて

- 09 Sasa の投稿
返信数: 7
Windows10でTeX Live 2022のlatexmk 65485(4.79)を使っています。
見出し等のフォントを一部変更するため、変更するフォントを記載したmymap.mapをカレントディレクトリに置いてあります。
.latexmkrcにこのmapファイルを使用してPDFを作成するようにと
$dvipdf = 'dvipdfmx "-f mymap.map" -o %D %S';
を記述しました。
この状態でlatexmkにて処理するとPDFの作成まで行われるのですが、mymap.mapの内容が反映されていません。
dvipdfmx -f mymap.mapで処理すると期待通りのフォントが埋め込まれたPDFとなります。
以上から、latexmkにおけるdvipdfmxのオプションの記述を誤っていると思われますが、正しくはどのように記述すべきなのでしょうか。
09 Sasa への返信

Re: latexmkにおけるdvipdfmxのオプションについて

- 和田 勇 の投稿
×    $dvipdf = 'dvipdfmx "-f mymap.map" -o %D %S';
○  $dvipdf = 'dvipdfmx -f mymap.map -o %D %S'; # 二重引用符を除去

コマンドプロンプトか Powershell のコンソールで実行される
以下のような警告メッセージが表示されていませんか?

  Running 'dvipdfmx "-f mymap.map" -o "XXX.pdf" "XXX.dvi"'
  ------------
   dvipdfmx:warning: Couldn't open font map file " mymap.map".
   XXX.dvi -> XXX.pdf

上記のメッセージから推測すると空白のついた「 mymap.map」を
map ファイルとしてオープンしようとしています。

この動きから -fmymao.map でも良いようですが、
一般的には空白で分けた方が見やすく感じますので冒頭の回答です。
和田 勇 への返信

Re: latexmkにおけるdvipdfmxのオプションについて

- 09 Sasa の投稿
回答ありがとうございます。
ご教示のとおり""を外してみましたが変化はありませんでした。
latexmkはコマンドプロンプトから行っていますが、そちらの
画面にはエラーや警告らしきものは表示されておりません。
dvipdfmxの処理に関すると思われる箇所は

Running 'dvipdfmx -o "main01.pdf" "main01.dvi"'

となっており、オプションが全く無視されているような状況です。
09 Sasa への返信

Re: latexmkにおけるdvipdfmxのオプションについて

- 和田 勇 の投稿
では、以下の情報を提供してください。

1) latexmk を実行すると、以下のように読み込んだ .latexmkrc が表示されます
 
   Rc files read:
     ホームディレクトリ\.latexmkrc
     .latexmkrc     ← .latexmkrc と latexmkrc が両方あると .latexmkrc を読み込みます

  表示された latexmk の読み込んだファイルをパスのわかる形で提供してくさい。

2)使用されている map ファイル
3).tex ファイル
  これは 以下のものが含まれていれば良いです

   \documentclass{使用されているもの}
   フォントを変更するための最低限の usepackage などの設定
    \begin{document}
   フォントを変える記述
   \end{document}
  
和田 勇 への返信

Re: latexmkにおけるdvipdfmxのオプションについて

- 09 Sasa の投稿
回答いただいた内容から原因が判明しました。
上記の設定をした.latexmkrcをホームディレクトリに置いていたのですが、
別途latexmkrcがカレントディレクトリにありました。
設定ファイルはドット付きの.latexmkrcでなくてはならないと思い込んでおり、
カレントのlatexmkrcの存在を失念していました。
latexmkrcを削除して処理したところ、想定した結果となりました。
ありがとうございました。

#TeX Wikiでは.latexmkrcである旨の記述となっていますが
#いつごろからドットが無くても良くなったのでしょうか?
09 Sasa への返信

Re: latexmkにおけるdvipdfmxのオプションについて

- 和田 勇 の投稿
◆いつから latexmkrc は使えてるか?

変更履歴までは調べていませんが、
手元に残っている 2014 ですでに latexmkrc と .latexmkrc を扱おうとしています。
以下は、 2022 でカレントのを読み込もうとしていると思われる記述から。

   read_first_rc_file_in_list( ".latexmkrc", "latexmkrc" );

この設定も以前は latekmkrc が先に来ていましたが、2021 から今の形に変更されていますね。
和田 勇 への返信

Re: latexmkにおけるdvipdfmxのオプションについて

- 09 Sasa の投稿
余談にまで答えていただきありがとうございます。
調べた限りでは.latexmkrcという形しか見当たらなかったので、
ヒントをいただかなければ思い至らなかったと思います。
改めてお礼申し上げます。
09 Sasa への返信

Re: latexmkにおけるdvipdfmxのオプションについて

- ut の投稿
# もうご覧になってらっしゃらないと思われますし、私自身は latexmk
# を使ったこともないので、自分でもでしゃばりだなとは思うのですが。

latexmk(version 4.79)のマニュアル(7 January 2023)を見てみま
すと、まず、Configuration/Initialization (rc) Files については:

------------------------------------------------------------
CONFIGURATION/INITIALIZATION (RC) FILES

      Latexmk can be customized using initialization files, which are read at
      startup in the following order:

      1) The system RC file, if it exists.  . . .

      2) The user's RC file, if it exists.  . . .

      3)  The  RC  file  in  the current working directory.  This file can be
      named either "latexmkrc" or ".latexmkrc", and the first of these to  be
      found is used, if any.

      4) Any RC file(s) specified on the command line with the -r option.

------------------------------------------------------------
と説明されています。

また、$dvipdf の設定については、マニュアルと、latexmk.pl とを
見てみますと:

------------------------------------------------------------
LIST OF CONFIGURATION VARIABLES USABLE IN INITIALIZATION FILES

      Default values are indicated in brackets.

      $dvipdf ["dvipdf -dALLOWPSTRANSPARENCY %O %S %D"]
              Command  to convert .dvi to .pdf file.  A common reconfiguration
              is to use the dvipdfm command, which needs its  arguments  in  a
              different order:

                  $dvipdf = "dvipdfm %O -o %D %S";

------------------------------------------------------------
latexmk.pl

## Command to convert dvi file to pdf file directly.
#  Use option -dALLOWPSTRANSPARENCY so that it works with documents
#  using pstricks etc:
$dvipdf  = 'dvipdf -dALLOWPSTRANSPARENCY %O %S %D';
# N.B. Standard dvipdf runs dvips and gs with their silent switch, so for
#      standard dvipdf $dvipdf_silent_switch is unneeded, but innocuous.
#      But dvipdfmx can be used instead, and it has a silent switch (-q).
#      So implementing $dvipdf_silent_switch is useful.

------------------------------------------------------------
となっています。

(デフォルトは:

  dvipdf -dALLOWPSTRANSPARENCY %O %S %D

となっているとのことですが、dvipdfm を使用する場合には:

  dvipdfm %O -o %D %S

という順番に変更してください、と説明されています)

"Standard dvipdf runs dvips and gs with their silent switch"
ということなので "-dALLOWPSTRANSPARENCY" は gs 用のオプショ
ンみたいですが、%D、%O、%S については、それぞれ:

------------------------------------------------------------
FORMAT OF COMMAND SPECIFICATIONS

      %D    destination file (e.g., the name of  the  postscript  file  when
              converting a dvi file to postscript).

      %O    options

      %S    source  file  (e.g.,  the name of the dvi file when converting a
              .dvi file to ps).

------------------------------------------------------------
という意味とのことです。