が使用できます。
%
% uplatex test.tex
% encoding should be utf8
%
\documentclass{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\begin{document}
\includegraphics{予定表.png}
\end{document}
set COMMAND_LINE_ENCODING=utf8
uplatex test.tex
dvipdfmx test
なお
\includegraphics{.//foo.png}
とされることが多いようですが
\includegraphics{.///////////////foo.png} は
\includegraphics{./foo.png}
と同じです。
通常 current directory のものは
\includegraphics{foo.png}
で十分です。
試してみたのですが以下のようなエラーが出ます。
エラーはこの後もまだまだ出ます。
フォントがないようなことが書かれてありますが、どうすれば良いでしょうか?
abtexinst_0_85r1でインストールしたTeX環境を使っております。
よろしくお願いいたします。
D:\後>ptex2pdf -l fffff.tex
This is ptex2pdf[.lua] version 0.8.
Processing fffff.tex
This is e-pTeX, Version 3.14159265-p3.7-150805-2.6 (sjis) (TeX Live 2015/W32TeX)
(preloaded format=platex)
restricted \write18 enabled.
entering extended mode
(./fffff.tex(guessed encoding: Shift_JIS = sjis)
pLaTeX2e <2006/11/10> (based on LaTeX2e <2015/01/01> patch level 2)
Babel <3.9m> and hyphenation patterns for 79 languages loaded.
(c:/w32tex/share/texmf-dist/tex/platex/jsclasses/jsarticle.cls(guessed encoding:
ISO-2022-JP = jis)
Document Class: jsarticle 2014/02/07 okumura
! LaTeX Error: Font family `JY2+mc' unknown.
See the LaTeX manual or LaTeX Companion for explanation.
Type H for immediate help.
...
l.325 ...{mc}{m}{n}{<-> s * [0.924690] upjisr-h}{}
?
! LaTeX Error: Font family `JY2+gt' unknown.
See the LaTeX manual or LaTeX Companion for explanation.
Type H for immediate help.
...
l.326 ...{gt}{m}{n}{<-> s * [0.924690] upjisg-h}{}
?
! LaTeX Error: Font family `JT2+mc' unknown.
See the LaTeX manual or LaTeX Companion for explanation.
Type H for immediate help.
...
l.327 ...{mc}{m}{n}{<-> s * [0.924690] upjisr-v}{}
?
! LaTeX Error: Font family `JT2+gt' unknown.
See the LaTeX manual or LaTeX Companion for explanation.
Type H for immediate help.
...
l.328 ...{gt}{m}{n}{<-> s * [0.924690] upjisg-v}{}
?
%でエラーが出るのはtexファイルだけで
画像では出ません。
以下のようなエラーが出て、コンパイルすることができません。
This is e-upTeX, Version 3.14159265-p3.7-u1.20-150805-2.6 (utf8.uptex) (TeX Live
2015/W32TeX) (preloaded format=uplatex)
restricted \write18 enabled.
entering extended mode
*
> \usepackage{lastpage}
のエラーに関してはコンパイル途中でlastpageが読み込めないといったエラーメッセージが表示されて、コンパイルには成功するのですが最終ページのところが「?」になってしまいます。
> \usepackage[dvipdfmx]{hyperref}
の方はまだ詳しく確認できていません。
最後に出ている * は入力待ちを意味します。
つまり、ファイル名に(おそらく1文字目が)% になっている
ためそれをファイル名として認識できず、何も入力されていないと
勘違いされているのかもしれません。
# 相変わらず今 PC から離れているので推測ですが。
気になるのですが「エラーなのか警告なのか何も出ないのか」は
ちゃんと判別できたほうが良いです。今の場合は「何も出ない」です。
エラーなら ! LaTeX Error とか「Error」という文字が出ますし、
警告なら LaTeX Warning とか「Warning」の文字が出ます。
Error は処理にとって致命的なので絶対にプログラムは失敗します。
Warning はユーザの期待どおりではないかもしれないけど致命的で
ないので一応それらしく処理を継続します。この違いにも留意する
と、Web で検索するときも引っかかりやすくなります。
platex hoge.tex
dvipdfmx hoge.dvi
という1回ずつ連続実行と等価です。
「ptex2pdf -u -l hoge.tex」な
uplatex hoge.tex
dvipdfmx hoge.tex
という1回ずつ連続実行と等価です。
要は、ptex2pdf は日本語 TeX と dvipdfmx を1回ずつ実行する
為のスクリプトです。
TeX Wiki 参照。
https://oku.edu.mie-u.ac.jp/~okumura/texwiki/?ptex2pdf
ということなので、uplatex を3回、dvipdfmx を1回なら
ptex2pdf -u -l hoge.tex
を3回やれば同じ効果が得られますね。
dvipdfmx の -V 7 とは、出力する PDF のバージョンを
1.7 にするためのオプションです。
dvipdfmx -V 7 hoge.dvi
とすると、hoge.pdf のバージョンが1.7になります。
多分 \includegraphics する PDF が1.7の場合に、
出力 PDF がそれより低いバージョンだと取り込めない
場合があったため、付けることにしたのでは?
ptex2pdf の使い方は ptex2pdf --help を見てください。
-od というオプションが見つかるでしょう。
いろいろ試すのも勉強です。聞く前に調べる。
回答したときにすぐに質問した方から返事が来ることは
必ずしも望んでいません。
むしろこちらが回答した内容を一字一句逃さずに間違い
なく実践してもらうことのほうが大事です。
知らないコマンド(uplatex とか ptex2pdf とか)を
指示されたら、とりあえず TeX Wiki に解説がないか
探してみてはどうでしょう?
uplatex を3回実行することも試さずに、なんか変な
メッセージが出たからと「知らないエラーだ!」と
決めつけるのではなく、よくメッセージを見ましょう。
エラーではなく警告で親切に何をすべきか教えてくれて
いる場合も(今回の hyperref のように)あります。
一つ一つ丁寧に自分で調べるのも勉強です。
TeX Wiki に立ち寄って、それでも分からなければ
その部分を引用して「ここがわからない」と聞けば
よいのです。そのほうが、Wiki を書いている私たち
にとって励みになるのです。(もうあそこに書いた
のに…というのは非常に残念なことですから。)
いちから人に尋ねるのではなく、根気よく。
そのくらいの心の余裕を持ちたいものです。
…という独り言です。
ご回答ありがとうございます。
そういえばplatexでもtexファイルに%が含まれていると
コンパイル失敗することに気がつきました。
画像ファイルの方は以前教えていただいた方法で読み込めるようにできてました。
それでtexファイルに%を使う方法なのですが
platex \makeatletter\input\@percentchar.tex
platex \makeatletter\input\@percentchar\relax
両方試してみたのですがdivファイルは生成されるのですが
画像の埋め込みがうまくいきません。
またpdfファイルを出力するために
dvipdfmx \makeatletter\input\@percentchar
を入れてみましたがpdfファイルは出力されませんでした。
昨日の夜からいろいろと試していて、かなり使い方は分かってきたのですが
やはり以下の点が不明なので教えていただけないでしょうか?
ファイル名に%を使う方法に関してですが
platex \makeatletter\input\@percentchar.tex
platex \makeatletter\input\@percentchar.tex
platex \makeatletter\input\@percentchar.tex
dvipdfmx %
とやってみたのですが、コマンドプロンプト上で
最後に
d:\Documents and Settings\desktop\新しいフォルダー>dvipdfmx
stdin -> stdout
というメッセージを残して終了してしまいます。
それでpdfファイルは出力されません。
何が原因でしょうか?
それと、pLaTeX upLaTeX ptex2pdf の速度を比較を行ってみたのですが以下のようになりました。(pLaTeX とupLaTeXは3回実行後にdvipdfmxを一回実行、ptex2pdfは3回実行)
pLaTeX 4.4秒
upLaTeX 20.5秒
ptex2pdf 22.1秒
ptex2pdfは二回余分にdvipdfmxの処理を行っているため、
他よりも遅いのは理解できるのですがなぜかupLaTeXがpLaTeXよりも5倍程度遅くなってしまいます。
その理由は画像ファイルのパス名に全角文字が含まれていると
エラーメッセージが表示され、しばらくその状態でフリーズするためです。
ただ、エラーは出てもコンパイルには成功します。
例えば、ファイル名が004-(010)2-変換前_out.pngというファイルの場合には
LaTeX Warning: File `004-(010)2-螟画鋤蜑浩out.png' not found on input line 35.
<004-(010)2-螟画鋤蜑浩out.png>
というようなエラーメッセージが表示されます。
全角のところが文字化けしており、ファイルが見つからないと書かれてあります。
ただ、エラーは出ても最終的にはコンパイルには成功します。
set COMMAND_LINE_ENCODING=utf8&
の一文は入れているのですがなにが問題でしょうか?
ちなみにかなり苦戦したのですが
set COMMAND_LINE_ENCODING=utf8のあとにスペースを入れると
全角文字の画像を読み込まなくなるようで、1行にコマンドを書きたい場合には
set COMMAND_LINE_ENCODING=utf8& というように
&をすぐ後ろにつける必要があることがわかり、このようにして使っています。
解決策があればよろしくお願いいたします。
>
>
>とやってみたのですが、コマンドプロンプト上で
>
>最後に
>
>d:\Documents and Settings\desktop\新しいフォルダー>dvipdfmx
>stdin -> stdout
>
>というメッセージを残して終了してしまいます。
やってないでしょ…
「dvipdfmx」 だけでEnterキーを押すと
stdin -> stdout
とメッセージが出ます.
「dvipdfmx x」などと存在しないファイル「x.dvi」を指定すると
x -> x.pdf
dvipdfmx:fatal: Could not open specified DVI (or XDV) file: x.dvi
Output file removed.
とエラーメッセージが出ます.
すなわち,あなたはプロンプトで dvipdfmx の後ろにファイル名を指定しないで実行しています.
括弧をファイル名に使わないようにして,例えば以下を試して下さい。
表示の文字化けを無くするには,-sjis-terminal オプションを付けます:
%
% test.tex (utf-8)
%
\documentclass[uplatex]{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{bmpsize}
\begin{document}
\centering
\includegraphics[width=11cm]{004-010-2-変換前_out.png}\par
\end{document}
set COMMAND_LINE_ENCODING=utf8& uplatex -sjis-terminal test.tex
set COMMAND_LINE_ENCODING=utf8& dvipdfmx test.dvi
これはデフォルトでは extractbb が restricted mode で実行
されるからです。 restricted mode では,安全性のため,
shell の特殊文字は全て quoted となります。WIN32 の場合は
^ が prepend されます。
どうしても特殊文字をファイル名に使いたければ,制限なしの
shell escape mode を使えば OK です。 つまり,
set COMMAND_LINE_ENCODING=utf8& uplatex -shell-escape -sjis-terminal test.tex
ありがとうございます。
ご回答を元にいろいろと試してみました。
set COMMAND_LINE_ENCODING=utf8& uplatex -shell-escape -sjis-terminal test.tex
のようにコマンドを書いたとしても
どうもtexと画像ファイルが同じ階層にある時に
\includegraphics[width=7.5cm,bb=0 0 696 696]{004-(010)2-変換前_out.png}
のようにして指定すると画像ファイルを読み込む時に
フリーズしてしまいコンパイルに時間がかかってしまいます。
上の方で.////を連ねるのは無意味だとご指摘を受けました
uplatexの場合にはなぜか
\includegraphics[width=7.5cm,bb=0 0 696 696]{.//004-(010)2-変換前_out.png}
のようにファイル名の最初にスラッシュが入ると
フリーズすることなくコンパイルが終了します。
あるいは
\includegraphics[width=7.5cm,bb=0 0 696 696]{./フォルダー/004-(010)2-変換前_out.png}
のようにして画像ファイルをフォルダー内に入れてしまっても
すんなりとコンパイルが終了します。
何か対症療法的な気がしますが、とりあえずuplatexに関してはこれで問題なく動作しているように思います。
この使い方は問題ございませんでしょうか?
それと
shell escape mode
を使えば、ファイルパスに括弧()があっても処理できることを教えていただきましたが
platexでは特にこれを入れなくとも括弧()を使うことができます。
これはUnicodeおよびuplatex特有の使い方ということで良いでしょうか?
わざわざ、shell escape modeを入れないと使えない文字列ががあるということは
shell escape modeを使うことによって弊害が生じるケースがあるということだと思うのですが
例えばどういう場合に問題が生じますでしょうか?
それと、ファイルパスにパーセントを入れることに関してですが
platex \makeatletter\input\@percentchar.tex
platex \makeatletter\input\@percentchar.tex
platex \makeatletter\input\@percentchar.tex
dvipdfmx %
platex \makeatletter\input\@percentchar/relax
platex \makeatletter\input\@percentchar/relax
platex \makeatletter\input\@percentchar/relax
dvipdfmx %
platex \makeatletter\input\@percentchar.tex
platex \makeatletter\input\@percentchar.tex
platex \makeatletter\input\@percentchar.tex
dvipdfmx %.dvi
などいろいろ試してみましたが
上で書いたエラーメッセージの後で改行を打つと続きが出てきて
以下のようなことが書かれてあります。
LaTeX Warning: There were undefined references.
)
(see the transcript file for additional information)
Output written on %.dvi (1 page, 1192 bytes).
Transcript written on %.log.
d:\Documents and Settings\desktop\platex>dvipdfmx
stdin -> stdout
Found 13 where PRE was expected
dvipdfmx:fatal: Something is wrong. Are you sure this is a DVI file?
どうもDVIファイルは出力されているが何かがおかしいそうです。
このソースファイルをアップしましたので一度何が問題か見ていただけないでしょうか?
http://fast-uploader.com/file/7001836812304/
よろしくお願いいたします。
\usepackage[dvipdfmx]{graphicx}
\begin{document}
\centering
\includegraphics[width=11cm,bb=0 0 440 308]{004-(010)2-変換前_out.png}\par
\end{document}
色々テストされているようですが,仰っているような結論にはなりません。
上の場合は, Bounding Box が与えられているので,extractbb は呼ばれず,
set COMMAND_LINE_ENCODING=utf8& uplatex -sjis-terminal test.tex
で何の問題もありません。
extractbb が呼ばれるときは,platex であろうが uplatex であろうが同じです。
.// を付けたらうまく行くというのも,何か別の原因を誤解しているのでしょう。
例えば .xbb ファイルが存在すると, extractbb が呼ばれません。
platex.zip は後で見てみます。
ありがとうございます。
パーセントに関してですが%%とすることでうまくpdfファイルを出力することができました。
%あ.texの場合には
platex \makeatletter\input\@percentchar あ.tex
後ろに半角スペースを空けることでうまくいきました。
しかし
あ%あ.tex
のように前に文字列がある場合にはどうしてもうまくいかないのですが
どのようにすれば良いですか?
それと、
http://fast-uploader.com/file/7001842570338/
uplatexの方のソースファイルもアップしました
いずれもコンパイルすることはできるのですが
画像のファイルパスをそのまま書いた方は20秒程度かかり
パス名の頭に.//をつけた方は5秒程度で終わります。
ご回答ありがとうございます。
確かに仰るとおり、
パス名に括弧()があったとしても
-shell-escape
をつけなくとも
\usepackage[space]{grffile}
をとるか
パス名の頭に.//をつけるとすんなりコンパイルできることが分かりました。
疑問なのは失敗しているのに
最終的にコンパイルできるというのは一体どういう仕様なのでしょうか?
\usepackage[space]{grffile}
が自動的に無効になっているのかと思ったのですが
画像ファイル名に
あ ...().png
のようなgrffileでしか扱えないようなものを入れてみましたが
普通にコンパイルできました。
あと
あ%あ.tex
のようにパーセントの前に文字列を入れた時がうまくいかないのですが
%あ ().tex
のようにパーセントの後の文字列の後にスペースがあってもうまくいきません。
これは解決策がございますでしょうか?
\documentclass[uplatex]{jsarticle}
に修正します.
そして,端末から
>uplatex \\makeatletter\\input\\@percentchar.tex
および
>dvipdfmx %
を実行すると図が取り込まれた%.pdfが作成されます.
Windows では
>uplatex \\makeatletter\\input\\@percentchar.tex
は
>uplatex \makeatletter\input\@percentchar.tex
なのかもしれません.当方はWindowsを持っていないので検証できず.
今初めて気がついたのですが,
\usepackage[space]{grffile}
あるいは
\usepackage{grffile}
と,ttk さんによる uptex, uplatex on Windows における
command_line_encoding = utf8
による漢字ファイルサポート
は,相性が悪いようです。 image ファイルが見つけられなく
なることがあるようです。
原因はわかっていません。
myu myo さんの問題もこれかもしれません。
myu myo さん,ありがとう御座いました。
(環境は、xelatex, Windows, W32TeX, command_line_encoding=utf8使用)
CP932(いわゆるShift JIS)の文字集合の範囲では
"command_line_encoding=utf8"は上手く動いているようです。
%% hoge.tex 文字コードはUTF-8
\documentclass{article}
\usepackage{graphicx}
\usepackage[space]{grffile}
\grffilesetup{
encoding,
inputencoding=utf8,
filenameencoding=utf8,
}
\begin{document}
ABC.
\includegraphics{000display.eps}
\includegraphics{001表示.eps}
\includegraphics{002表示 - スペース入り.eps}
\includegraphics{003表示.ドット.入り.eps}
%\includegraphics{004♠♦♥♣.eps}%%% 「♠♦♥♣」はCP932外の文字
%\includegraphics{005鷗.eps}%%% 「鷗」はCP932外の文字
\end{document}
"004♠♦♥♣.eps" や "005鷗.eps" を入れると、エラーになります。
途中、
Error: /undefinedfilename in (./005?.eps)
の文字が見えるので、ghostscriptの前後でUnicodeが通らない部分があるように見えます。
それはさておき、myu myoさんのソースの場合の問題は、私見では、
「grffileと"uptex, uplatex on Windows における command_line_encoding = utf8 による漢字ファイルサポート"」の相性ではなく、
「grffileとuplatex」の相性の問題だと今のところ考えています。