質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.12%

windowsにおけるパスに日本語を含むtexファイルのlatexmkを用いたコンパイル

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 1,047

tama14142356

score 6

実現したいこと

texファイルのフルパス中に日本語が入っていても、Windows10のVisual Studio Code上でlatexmkを用いてショートカットキーを用いて楽にコンパイルできるようにしたいです。

また、補足情報になぜ日本語のパス名でコンパイルしたいのか、今の状況、譲れない点、譲歩できる点を記載しています。

発生している問題・エラーメッセージ

フルパス中にC:\Documents\プログラミング\main.texのようにして、フルパス中プログラミングなどの日本語が入るとUTF-8に変換された際に文字化けし、texファイルとしては許されていない文字に文字化けするようで、コンパイルできません。
実際にC:\Documents\プログラミング\main.texのファイルをコンパイルした時のエラーメッセージは以下のようになります。

Latexmk: This is Latexmk, John Collins, 26 Dec. 2019, version: 4.67.
Latexmk: Filename 'c:/Documents/�v���O���~���O/main' contains character not allowed for TeX file.
Latexmk: Stopping because of bad filename(s).
C:\texlive\2019\bin\win32\runscript.tlu:907: command failed with exit code 2:
perl.exe c:\texlive\2019\texmf-dist\scripts\latexmk\latexmk.pl -synctex=1 -interaction=nonstopmode -file-line-error -pdfdvi c:/Documents/�v���O���~���O/main


この時のmain.texのファイルの中身は以下です。

\documentclass[dvipdfmx, a4paper, 11pt]{jsarticle}%A4用紙縦、明朝(デフォルト)11ポイント
\begin{document}
テンプレートです.
\end{document}

応急処置的な解決法

フルパス中にプログラミングという文字が含まれている場合は、ターミナルで、以下を実行してフルパスで実行しないようにしています。

$ cd C:\Documenst\プログラミング
$ latexmk main.tex

環境

  • OS : Windows10 pro
  • エディタ : Visual Studio Code 
  • texディストリビューション : Tex Live
  • texのコンパイルレシピ: latexmk
  • pdf Viewer :  texworks
  • VSCode で TeX を書こう
    上記のサイトを見て、Vscodeの設定をしました。ただし、viewerの部分はtexworksに変えています。
#!/usr/bin/env perl
# file          .latexmkrc
# author        Ryotaro Onuki
# created_at    2019.01.25
# modified_at   2019.02.05

## latex commands
$latex            = 'platex -synctex=1 -halt-on-error';
$latex_silent     = 'platex -synctex=1 -halt-on-error -interaction=batchmode';
$bibtex           = 'pbibtex -kanji=utf8';
$dvipdf           = 'dvipdfmx %O -o %D %S';
$makeindex        = 'mendex %O -o %D %S';
$max_repeat       = 5;

## pdf mode
$pdf_mode         = 3; # 0: none, 1: pdflatex, 2: ps2pdf, 3: dvipdfmx

## viewer settings
$pvc_view_file_via_temporary = 0;
if ($^O eq 'darwin') {
    # OSX
    $pdf_previewer = 'open -a Preview';
} elsif ($^O eq 'linux') {
    # linux
    $pdf_previewer = 'evince';
} else {
    # Windows
    $pdf_previewer    = '"C:\texlive\2019\bin\win32\texworks.exe" -reuse-instance %O %S';
}

## output directory
$aux_dir          = "build/";
$out_dir          = "build/";

補足情報

なぜ日本語のパス名でコンパイルしたいのか

  • texファイルの名前を英字にするのは構わないのですが、フォルダの名前まで英字にするとファイル整理の際に見づらくなると思っているためです。

今の状況

  • TeXにとってやばい入力ファイル名
    このサイトから文字化けした時に~が入っているため、コンパイルできないことまではわかりましたが、Windowsでの日本語の文字化けを解決する方法は載っていなかっため、今回質問しました。

  • また、いらない情報かもしれませんが、記載しておきます。
    今のところプログラミングという文字以外で許されない文字に文字化けするものは見つけていません。
    そのため、プログラミングという文字さえ入っていなければコンパイルできる状態ではあります。

譲りたくない点

  • エディタはVscodeでお願いします。
  • 理由にも書きましたが、あくまでフォルダ名は日本語にしたいと思っていますので、フォルダ名を英字にしろっていうのは無しでお願いします。

譲歩できる点

  • latexmkを使用しているのはあくまでも中間ファイルをまとめてbuildフォルダに置くことができて、フォルダ内がすっきりするため使用しているだけです。
    そのため、中間ファイルがまとめられる、または消せて、その上でVscodeでショートカットキーが使えるのであれば、latexmkでなくても構いません。
  • 何か設定する際にコマンドを使う際にはgit bash、(power shell)、wslがインストールされている状態ですので、Linuxコマンドであっても構いません。

追記

大変長くなってしまい、申し訳ないです。
コンパイルする方法がない、あるいは、推奨されない(texの挙動がおかしくなる)等の理由で解決できる方法がなければそれでもかまいません。
解決できる方法があるのであれば、知りたいと思って、質問した次第です。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

ターミナルで、以下を実行してフルパスで実行しないようにしています。

latexmk-cdというオプションがあって、当該フォルダ内へのカレントディレクトリの移動を自動で実行するとのことです。

とはいえ、VSCodeからlatexmkに引数を渡した時点でパス名が文字化けしているのであれば、打つ手は限られます。

さらに、「現状ではシフトJISでパスが行ってしまっていること」、そして「チルダを含むパスではTeXが正常に動作しない(シフトJISでの2バイト目がチルダと同じコードです)こと」など、これで解決するかも試してみないとわからないです。


理由にも書きましたが、あくまでフォルダ名は日本語にしたいと思っていますので、フォルダ名を英字にしろっていうのは無しでお願いします。

日本語のファイル名・フォルダ名は、エンコードの関係で数多くの問題を巻き起こします(例えば、macOSで作ったプログラミングというフォルダと、LinuxでUTF-8エンコードして作ったプログラミングというフォルダは、名前が一致しません)。

ツールを作る側としてはできるだけ対応すべきなのは間違いないですが、使う側としては諦めも必要かと思います。

あくまで作りたいものがTeXの文書なのであれば、その出来具合にフォルダ名は関係してきません。その本質的ではないこだわりのために工数を費やすより、そこは割り切って本題の文書作成に時間をかける、あるいは浮いた時間を別なことに活用するほうが合理的です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/24 07:41

    > フォルダの名前まで英字にするとファイル整理の際に見づらくなると思っているためです。

    慣れの問題です。

    キャンセル

  • 2020/01/24 10:12

    > 日本語のファイル名・フォルダ名は、エンコードの関係で数多くの問題を巻き起こします

    はい、身に染みて感じています。
    そのため、一時期、windows全体のエンコードをUTF-8に変える設定をしたりもしましたが、アプリをインストールするときに文字化けしてしまって、セキュリティの観点から危険な気がして、断念しました、、、。

    キャンセル

  • 2020/01/24 10:12

    > ツールを作る側としてはできるだけ対応すべきなのは間違いないですが、使う側としては諦めも必要かと思います。

    ですよね、、。
    時にはあきらめも大事ですよね。
    その言葉が欲しくて質問したようなものなので、ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる