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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

Q&A

解決済

2回答

17302閲覧

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

tama14142356

総合スコア6

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

0グッド

2クリップ

投稿2020/01/23 12:58

実現したいこと

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のファイルの中身は以下です。

main

1\documentclass[dvipdfmx, a4paper, 11pt]{jsarticle}%A4用紙縦、明朝(デフォルト)11ポイント 2\begin{document} 3テンプレートです. 4\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に変えています。

latexmkrc

1#!/usr/bin/env perl 2# file .latexmkrc 3# author Ryotaro Onuki 4# created_at 2019.01.25 5# modified_at 2019.02.05 6 7## latex commands 8$latex = 'platex -synctex=1 -halt-on-error'; 9$latex_silent = 'platex -synctex=1 -halt-on-error -interaction=batchmode'; 10$bibtex = 'pbibtex -kanji=utf8'; 11$dvipdf = 'dvipdfmx %O -o %D %S'; 12$makeindex = 'mendex %O -o %D %S'; 13$max_repeat = 5; 14 15## pdf mode 16$pdf_mode = 3; # 0: none, 1: pdflatex, 2: ps2pdf, 3: dvipdfmx 17 18## viewer settings 19$pvc_view_file_via_temporary = 0; 20if ($^O eq 'darwin') { 21 # OSX 22 $pdf_previewer = 'open -a Preview'; 23} elsif ($^O eq 'linux') { 24 # linux 25 $pdf_previewer = 'evince'; 26} else { 27 # Windows 28 $pdf_previewer = '"C:\texlive\2019\bin\win32\texworks.exe" -reuse-instance %O %S'; 29} 30 31## output directory 32$aux_dir = "build/"; 33$out_dir = "build/";

補足情報

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

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

今の状況

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

  • また、いらない情報かもしれませんが、記載しておきます。

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

譲りたくない点

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

譲歩できる点

  • latexmkを使用しているのはあくまでも中間ファイルをまとめてbuildフォルダに置くことができて、フォルダ内がすっきりするため使用しているだけです。

そのため、中間ファイルがまとめられる、または消せて、その上でVscodeでショートカットキーが使えるのであれば、latexmkでなくても構いません。

  • 何か設定する際にコマンドを使う際にはgit bash、(power shell)、wslがインストールされている状態ですので、Linuxコマンドであっても構いません。

追記

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

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

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

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


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

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

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

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

投稿2020/01/23 22:39

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/01/23 22:41

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

2020/01/24 01:12

> 日本語のファイル名・フォルダ名は、エンコードの関係で数多くの問題を巻き起こします はい、身に染みて感じています。 そのため、一時期、windows全体のエンコードをUTF-8に変える設定をしたりもしましたが、アプリをインストールするときに文字化けしてしまって、セキュリティの観点から危険な気がして、断念しました、、、。
tama14142356

2020/01/24 01:12

> ツールを作る側としてはできるだけ対応すべきなのは間違いないですが、使う側としては諦めも必要かと思います。 ですよね、、。 時にはあきらめも大事ですよね。 その言葉が欲しくて質問したようなものなので、ありがとうございました。
guest

0

Latex workshopはきちんと現在のワークスペースを認識しているようなので、%DOC% (ファイルのフルパスから拡張子を除いたもの)の代わりに %DOCFILE%(フォルダを含まないファイルの名前から拡張子を除いたもの)を指定すると、フォルダの日本語がlatexmkに渡されないので、正しくコンパイルできるようになると思います。

私の場合は setting.json に以下のように書いています。

json

1{ 2 "latex-workshop.latex.recipes": [ 3 { 4 "name": "latexmk", 5 "tools": [ 6 "latexmk", 7 ] 8 }, 9 ], 10 "latex-workshop.latex.tools": [ 11 { 12 "name": "latexmk", 13 "command": "latexmk", 14 "args": [ 15 "-f", 16 "-synctex=1", 17 "-interaction=nonstopmode", 18 "-file-line-error", 19 "%DOCFILE%" 20 ] 21 } 22 ], 23}

投稿2021/09/15 04:47

tatsy

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tgmknmt

2021/10/02 13:03

長らく困っていたことの1つであった問題が解決したので、とても助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問