忍者ブログ

ぼんぷろぐ

InDesign、イラレ、フォトショ(CS6 Win)の勉強中。。。(旧まとめいみブログ)

[InDesign]
inDesignにTeXの数式を貼り込むスクリプト「インてふてふ」


(2015.05.24 ちょこっと更新ver1.31)
・Ghostscript 9.16で出るエラーを回避するため、中間ファイルのファイル名に2バイト文字を使わないようにした。(回避できたかしら?)
・オマケのidmlファイルが古かったのを更新

ダウンロード

[インてふてふ1.31]

(2015.02.11 ちょっと更新ver1.3)

前バージョンからの変更点

・設定ダイアログが出るようになった
・数式画像をイラレでai形式にする機能を追加
・フレームの複数選択に対応
・数式をテキストに戻すスクリプトと統合
・数式をテキストに戻す機能がフレームにも対応



ダウンロード

[インてふてふ1.3]

ダイアログが付いてちょっとまともなツールっぽくなった!
スタイルの設定のコツとかいろいろ書いた解説文を載せたいと思ってるのだけど、
いつになるやら分からないので本体だけ先に公開します。

動作確認は相変わらずCS6でしかできないのですが
わりと広い範囲で動くように作ってるつもりです。
CS2~CS5.5で動いたって人がいたらご報告いただけるとうれしいです。

初期設定

(2015.2.19追記)
はじめに、インてふてふ.jsxをExtendScript Toolkitか適当なテキストエディタで開き、
9~11行目にあるTeX、dvipdfmx、GhostScriptのコマンドをご自分の環境に合わせて書き換えて下さい。デフォルトでは
var TexExe="platex";
var DvipdfExe="dvipdfmx";
var GsExe="gswin32c";
になってます。いわゆる「PATHを通す」をしてない場合は実行ファイルのフルパスでもOKです。(フルパスを書く場合は\を\\に置き換えて下さい。例:var TexExe="c:\\w32tex\\bin\\platex.exe";)

また、古いバージョン(9.13以前?)のGhostScriptを使ってる場合は12行目の
var GsDevice="eps2write";

var GsDevice="epswrite";
に書き換えて下さい


以下はver1.0と1.1の説明



(2014.10.04 ちょっと更新ver1.1)


適当な初期設定ができていれば、↓このようなドキュメントがスクリプトを1回実行するだけで
 
こう↓なります。
 
プレビュー表示するとこう↓。
 

しくみ

inDesignのドキュメント上にTeX書式で書かれた数式を、適当なプリアンブルを追加してtexファイル(テキストファイル)として保存し、TeXでコンパイル(dvi化)→dvipdfmxでpdf化→GhostScriptでアウトラインをとったeps化し、ドキュメントに配置します。
テキストから$...$や\[...\]で囲まれた部分を検索し、それぞれを数式画像で置き換えることができます。
配置した数式画像に、自動的にオブジェクトスタイルなどを適用できます。スタイルの設定次第でいろんな使い方ができると思われます。

動作環境

動作はinDesign CS6 Win版でしか確認してません。
ほとんどJavascriptで書いてますが、TeX、dvipdfmx、GhostScriptの呼び出しにはVBScriptを使ってます。従って、そのままではマックでは絶対に動きません

また、inDesign向けのVBScriptを一度も使ったことない多くのWindows環境でも、アドビのアホアホインストーラーのせいで動かない可能性があります。(Type Libraryが見つかりません系のエラーが出ます。)
その場合はこちらなどを参照→http://osito.hatenablog.jp/entry/2013/09/08/231935Adobe InDesign CS6でVBScriptが使用出来ない場合の対処法 - 歴史的仮名遣は生きてゐる - 「はなごよみ」公式ブログ

当然ながらTeX、GhostScriptがインストールされてる必要があります。dvipdfmxはTeXに含まれています。
新規にインストールする場合はこちらのインストーラーがおすすめ→http://www.math.sci.hokudai.ac.jp/~abenori/soft/abtexinst.html

更新情報 ver1.1(2014.10.04)

Subiさんにコメントいただきまして、
最新のGhostScriptではどうやら
-sDEVICE=epswrite じゃなくて -sDEVICE=eps2write と書かなきゃいけないようなのでそちらに修正しました。
古いバージョン(9.13以前?)のGhostScriptを使ってる場合は201行目の eps2write を epswrite に書き換えて使って下さい

そのほか以下を修正しました。
・コードをちょっと整理
・古いバージョンのInDesignでも動くようになりそうなおまじないを追加
・同梱ファイルをinddじゃなくidmlにした
できることは何も変わってません。

ダウンロード

[インてふてふ1.1]
[インてふてふ1.0]

初期設定

インてふてふ.jsxをExtendScriptToolkitかなにかで開き、
上の方の項目を環境に合わせて書き換えて下さい。
以下の使い方等をふまえて読めばだいたいわかる…かなぁ…
存在しないスタイル名を指定してたらエラーになるのでそこはお気を付けて

つかいかた その1

①テキストフレームを作成し、1行目に「%TeX」、2行目以降にTeXのコードを入力します。

②テキストフレームを選択した状態で、インてふてふ.jsxを実行します。
③テキストフレームがグラフィックフレームに変わり、作成したeps画像が配置されます。(画像は自動フィットを使用してます)

つかいかた その2

①適当なグラフィックフレームを選択し、スクリプトラベルパネルの1行目に「%TeX」、2行目以降にTeXのコードを入力します。

②グラフィックフレームを選択した状態で、インてふてふ.jsxを実行します。
③作成したeps画像が配置されます。

つかいかた その3(画像は冒頭)

TeXにおいて数式は、『インライン数式』『ディスプレイ数式』と呼ばれる2つの種類があります。
任意の『ε>0』に対してある『δ』が存在し…みたいな文章の中に出てくる短い数式がインライン数式、別行立てで場合によっては式番号をつけたりするのがディスプレイ数式です。

①TeX書式の数式を含む文章を用意します。TeXの文法にならい、インライン数式は『$』、ディスプレイ数式は『\[』『\]』で囲みます
②テキストフレームに①の文章を流し込みます。
③テキストに挿入点を置くか範囲選択してインてふてふ.jsxを実行します。
④挿入点を置いてた場合はストーリー全体、範囲選択してた場合はその範囲にある数式が画像に置き換わります。

インライン数式について

インライン数式はベースラインを揃えたいわけですが、
このスクリプトでは式ごとにバラバラにeps画像化するので、
たとえばxとAxとxyで、xの高さがバラバラになってしまいます。
そこで苦肉の策として、式全体を \Biggl| (めっちゃ長い縦棒)で囲み、
その棒が隠れる程度に左右をクリッピングして、
行送り内に収まる程度に上下をクリッピングするという方法をとっています。
これなら\Biggl|よりも縦に長い式にならない限り揃ってくれるはずです。
あくまで苦肉の策なので、もっとウマい方法を募集中です。

数式を修正する

配置した数式画像のフレームのスクリプトラベルに、もとになったTeXコードが保管されています。
スクリプトラベルパネルからこれを書き換えて、再度インてふてふ.jsxを実行すると数式が更新されます。
ただしスクリプトラベルパネルはものすごく見にくいです。

インライン数式とディスプレイ数式は、
同梱の「数式もどす.jsx」を使ってインてふてふ実行前の状態に戻すことができます
カーソルを置いて実行するとストーリー全体、テキスト範囲選択して実行するとその範囲、数式画像を選択して実行するとその画像だけが、TeXのコードに戻ります。

オマケ

テキストフレームとフレームグリッドでのスタイルの設定例をサンプルファイルとして同梱してます。
つっても作者は『行送りの基準位置』とか『文字揃え』とかの関係性がろくに理解できてないレベルなので参考までに。

ちゅうい

・他のスクリプトラベルを使用するスクリプトとの相性は最悪です。併用しないでください。


武道館おつかにょん
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

無題

素晴らしいスクリプトですね。Windows7+InDesign5.0で動作しました。
上の方のGSのバージョンの書き換えと、181行目のデバイスの指定が 9.14以降はepswriteからeps2writeに代わっていますので、書き換えて使用しております。

なぜかepsファイルができません。

IdMathのサポートがCS6で終わってしまって、CC以上でてふをつかうとなると、本スクリプトに期待大です。
ただ30行目でundefinedはオブジェクトではないというエラーが出て止まります。tex,GSは正常に動いています。Indesign5を利用しています。対処法ありましたらお願いします。

無題

mc2lvsさん
ひょっとしてExtendScript Toolkitで、ターゲットをInDesignに変更せずに実行してませんか?

203 Type Library(バージョン1.0)を読み込めません

すばやい対応をありがとうございました。あまりにCS5がWindows 8 64bit下で落ちるので期待もこめてタイマイはたき、CCにしてみました。今度は203行目でライブラリが読み込めないとのエラー番号104705のエラーが出ます。64ビットのVBが怪しいかと思い197行目のWScriptをCScriptに変え、SysWON64にパスを通しても同じエラーがでます。本当に申し訳けありません、解決法がありましたら教えてください。

自己レスです。

解決方法はWEBをよく見ればありました。CCもまさかともいましたがレジストリを見るとVer10.1のところがVer10.0になっていました。ひどい!Adobe!
これを修正しましたが、やはりepsがなぜかできません。のメッセージが出て進まず。。
ターゲットはIndesignにしてます。あーどなたかHelp!

さらに自己レスです

何度もすみません。
指定のepsフォルダには複数のファイルはきちんと吐き出されていたので。ステップでスクリプトを追うことで
ファイル名のとなりにある空白が原因とわかり修正したら、見事数式に変換されました!ありがとうございます!ただ、数式をもとのTexに戻す方がうまくいきません、少々疲れたので明日、試行錯誤します。

Re:さらに自己レスです

mc2lvさん
お疲れ様です。。。
説明も動作確認もエラー処理もかなりいい加減なスクリプトなもので
ホントご苦労おかけしますね。
エラー内容など報告していただけたらできるだけ対応します。
あと要望とか改善案とかもあればぜひ言ってくださいませませ。

それにしてもCCでも直ってないんですねVBのバグ。直ってないというより新たなアホをやってる?

CCなんて何も期待できませんよCS5に戻しましょう。CS5用のPCを1から整えてもCC数か月分ですよーとか適当なことを言ってみる。

  • あるふぁ(仮)
  • 2014/10/21(Tue.)

同感ですが。。。要望です。

ほんとうにできたらCS5を使いたい。ところがハードをwindows8 64にしてしまったので、頻繁にCS5は落ちるようになってしまいました。サポートに電話するとCS5はWIN8で動作保障しないとのこと。今回もCCからCS6への変換はむずかしい。。。電話代の無駄でした。。
さて、なんとか動くようになりました。さっそく要望ですが、できたらでけっこうです。インライン数式を多用しています。ただ、分数式の分数乗を持つ関数を書くとどうしても指数部分の上が欠けます。もう少し、幅をとってくれるとよいかと、こちら側でなんとかなる期もしますので、セルフTRYもしてみます。もう一つ、文字を赤にしたかったり、字体を選びたいのです。できるようにしていただけると幸いです。時間がありましたらよろしくお願いします。

Re:同感ですが。。。要望です。

・上が欠ける件について
22行目あたりの
var YohakuInline=[0,-2,-0.5,-2];//インライン数式の[上,左,下,右]の余白
の一つ目の数字(0のとこ)に適当な数を入れて下さい
たとえば5にしたら5ptほど上に広がります。

なお、YohakuInlineで上下の余白が0のときのインライン数式の縦幅は、その段落の行送りと同じです。
これをさらに縦に伸ばすわけですから、自動行送りの場合はその行だけ行間が変わることになり、固定行送りの場合は上の行に被ってしまう可能性があります。お気をつけて。

・色について
colorパッケージを読み込んでるのでTeXの機能で色付けできます。
たとえば$x$を赤くしようと思ったら、
$\color{red}x$
でいけると思います。具体的にCMYK値を設定する場合は
$\color[cmyk]{0.0,1.0,1.0,0.0}x$
$xyz$のyだけ赤にするならこう。
$x\textcolor{red}{y}z$

字体もある程度TeXの機能で選べると思いますがよく知りません。

  • あるふぁ(仮)
  • 2014/10/22(Wed.)

ありがとうございます。

返信ありがとうございました。
色々調整していきたいと思います。
スクリプトを公開していただけてるので助かります。
また、使い込んで報告したいと思います。
長い式やなんかは外部のlyxやwinshellとリンクできるとコードエラーを返してくれるのでいいかなぁと思っていますがインライン数式がEPSとTEXTで相互に変えられるのでとても便利です。

Ver1.3 CCでエラー

お久しぶりです待ち望んでいたVerUPをありがとうございます。ただCCでは[epsがなぜかできません]のエラーが出ます。スクリプトでデバッグしようとしてもCS5のものが動作中…起動できないのエラーが出てしまいます。旧バージョンは使えています。

Ver1.3 CCでエラー

バージョンアップありがとうごいました!!
ただ、CCでは「なぜかepsファイルができません」
が出てしまします。スクリプト編集からデバックができないので詳しく報告できませんが、とりあえず、報告です。旧バージョンは使えます。

Re:Ver1.3 CCでエラー

mc2lvさんお久しぶりです。ご報告ありがとうございます。

前のバージョンではTeXとGhostscriptの実行ファイルのフルパスを長々と書いてたんですが、
ver1.3では、いわゆる「PATHを通す」作業ができているだろうという前提で、platex、dvipdfmx、gswin32cっていうコマンドだけにしてます。
それが原因の可能性が高いと思います。

まずは生成ファイルの保存フォルダ(デフォルトではinddファイル保存フォルダ内の『tex』フォルダ)を覗いて、どこまで出来てるか確認してみて下さい。
うまくいけば.tex→.dvi→.pdf→.epsの順に生成されるのですが、どこかで止まってると思います。
もし.texしかなかったらおそらく上記が原因なので、
PATHを通すか、あるいは9~11行目の
var TexExe=…
var DvipdfExe=…
var GsExe=…
を前の動いてるバージョンの奴からコピペして書き換えてみて下さい

もしpdfまで出来ててepsが出来てないようなら
12行目
var GsDevice="eps2write";

var GsDevice="epswrite";
に変えるのを試してみて下さい。

  • あるふぁ(仮)
  • 2015/02/19(Thu.)

Windows8.1+InDesignCCで動作確認しました!

さっそくのRESをありがとうございます。ご指摘の通り、パスを通すと無事動作しました。旧バージョンで作成したものもフレームの種類を合わせると無事もどることもできました。ありがとうごいました。
 ただ、起動すると設定メニューになるので、ここでいろいろな設定を保存できて、EPS化と、戻す、メニューは今までのようにスクリプトパネルからワンクリックでできると効率がいいです。また使い込んでいきたいと思います。

更新ありがとうございます

いつもお世話になっております。ver1.3も問題なく使えております。
位置やサイズの微調整はオブジェクトスタイルでしていますので、今回のバージョンアップはありがたいです。

構文エラー

IndesignでTeXが使えるすばらしいスクリプトですね!!
公開に感謝です!
早速、実行してみたのですが、次のような構文エラーが出てしまいました。

「エラー
行6: #targetengine "intextex"
構文エラー」

Windous7(32bit)+Indesign CC

です。TeXは,platexを使っていて,通常の文書などを作成するときは正常に稼動しています。

対処法がありましたらよろしくお願いいたします。

Re:構文エラー

ちょっと原因の想像がつかないですね…

一応ai化機能以外はtargetengineの指定がなくても動くはずなので
6行目を削除して試してみてもらえますか?

  • あるふぁ(仮)
  • 2015/05/20(Wed.)

Re:構文エラー

試してみましたが,上手くいきませんでしたので,こちらの環境を探っていろいろ試してみます。

EPSの生成失敗

>>EPSファイルの生成で躓いております。

>ちょっと修正してみました。
>試してみてもらえますか?

現在、私のWindowsが起動できない状態なので試すことができません。
EPSが生成できなかったのもWindowsそのものが不安定だった可能性が高いので参考にならないと思います…
申し訳ありません。
素晴らしいスクリプトを作っていただき感謝しています。

Re:EPSの生成失敗

ちょっと修正してみました。
試してみてもらえますか?http://file.sysys.blog.shinobi.jp/intextex1_31.zip

ーーーーーーーーーーーーーーーーーーーー

>EPSが生成できなかったのもWindowsそのものが不安定だった可能性が高いので参考にならないと思います…

いえいえ、ウチの環境でもGhostscriptの最新版を入れてみたら挙動がおかしかったので修正してみたのです。
(ファイル名に2バイト文字を使わないようにしただけですが)
ご報告いただけてありがたいです。

  • あるふぁ(仮)
  • 2015/05/24(Sun.)

2015CC 動作しない!!

お久しぶりです!安易に2015CC版にアップしたら
内部バージョンの相違のせいか、動作しなくなって
しまいました。対応策がありましたら教えてください。

Re:2015CC 動作しない!!

むむ…
こちらはCC2015は入れてないので何とも言えませぬ。
エラーメッセージとか何かヒントになりそうなことを書いていただければ何か分かるかもしれませんが

  • あるふぁ(仮)
  • 2015/06/19(Fri.)

自己レス

2015ccでIndesignの設定リセット後に使えるようになりました。ただ、テキストボックスにTeXを書いて、処理後に戻すとなぜか、縦書きになっています。

Re:自己レス

>テキストボックスにTeXを書いて、処理後に戻すとなぜか、縦書きになっています。

グラフィックフレームをテキストフレームに変換したときの各種設定って、そういえばどこから引き継がれるのかよく分からないので、それはCC2015でなくても起こりうることかもしれませんね。
とりあえずフレーム数式をテキストに戻す場合は常に横組みになるようにしときましょうか。

  • あるふぁ(仮)
  • 2015/06/22(Mon.)

2015CCでの利用

2015CCでメモリを大量に消費するせいか、64BIT8GBの環境でもインてふ使用中にテキストボックス内の文字が消えるという現象が頻発します。みなさんはどうでしょうか、画像表示をあらくしてもどうも、時々発生し、編集がとてもつらくなりました。2014CCでは画像を詳細に表示してもおこらなかった現象です。
 画面の書き換えのタイミング、メモリの管理で対応できるようでしたご検討してみてくださいませ。

win10 64bit+CC2015

何とか動いています。
一発変換とはいかないのですが
かなり助かっています。
作者さんには本当に感謝です。

preamble

役立つスクリプトを作って下さり本当に敬服いたします。
今回,お尋ねしたいのですが,preambleを設定することはできますか。

emathやceoフォントなどを使えるとうれしいです。

Re:preamble

emathもceoフォントもよく知らないのですが
プリアンブル(\begin{document}の前まで)を外部テキストファイルから読み込むようにしたものを作ってみました。どうでしょうか

http://file.sysys.blog.shinobi.jp/intextex1_31p.zip

  • あるふぁ(仮)
  • 2016/03/28(Mon.)

preamble

迅速に対応してくださり感謝致します。
試してみましたところ,中間ファイル.texに反映されませんでした。

スクリプトを開いて,pathを設定する必要がありますか。
よろしくお願いいたします。

Re:preamble

むむむ…設定無しでjsxファイルと同階層にあるpreamble.txtを読むようにしたつもりなのですが、なんでだろう。
お使いのOSとInDesignのバージョンは何ですか?

  • あるふぁ(仮)
  • 2016/03/29(Tue.)

無題

本当に恐縮です。返答下さってありがとうございます。

os:windows7
indesignバージョン:cs6
tex:win32tex

例えばですが,自分で書いた\usepackage{txfonts}を入れてみますと,正常にフォントが変わって動作します。

 しかし,作成してくださった,プリアンブルに
\usepackage{txfonts}を入れて,中間ファイルの.texを見てみますと,

\usepackage{txfonts}の部分が書かれていませんでした。

すみませんがよろしくお願いいたしまう;;

Re:無題

ちょっと書き換えたので試してみてください
もし、「preamble.txtが見つかりません」もしくは「開けません」というアラートが出たら、どっちが出たかお知らせください

http://file.sysys.blog.shinobi.jp/intextex1_31p2.zip

  • あるふぁ(仮)
  • 2016/03/29(Tue.)

無題

本当に申し訳ありません。自分で打った文が何度もあってびっくりしました。
主様が投稿した下さってると思いリロードをして見てました。m(_ _)m

結果ですが,アラートが出ました。
「preamble.txtが見つかりませんとでました。」

ありがとうございます。

Re:無題

原因わかったかもしれません
InDesignのスクリプトパネルからではなく、jsxファイルのダブルクリックで実行してるのではないですか?
そうした時にjsxファイルのファイルパスがうまく取得できないことが分かりました。

ということでjsxファイルのあるフォルダではなく、編集中のinddファイルの保存場所からpreamble.txtを読み込むようにしました。
ドキュメントごとに違うプリアンブルを使いたい場合もあるでしょうから、最初からそうしとけばよかったですね。

http://file.sysys.blog.shinobi.jp/intextex1_31p3.zip

  • あるふぁ(仮)
  • 2016/03/30(Wed.)

無題

ありがとうございます!!!いけました!!
感謝感激雨あられですm(_ _)m

問題なく表示されました。これで仕事がはかどります;;

本当にありがとうございました。

すみません。もう一つご質問したいと思います。
分数を表示するとき,分母の数字が見えなくなります。
この対処法はありますでしょうか。 

Re:無題

よかったです。
おかげ様でこちらもファイルパス取得の思わぬ落とし穴に気づけました。


分母が見えなくって、フレームからはみ出すという意味ですか?

  • あるふぁ(仮)
  • 2016/03/31(Thu.)

無題

お恥ずかしい質問してしまいました。
自己解決です。

この度,主様ほんとうにありがとうございました。
m(_ _)m

新PC(windows10)で使えない

PCを新しくするとVisual Basic.tlbのエラーで使えない状況になってます。これは多分レジストリの表記が違うためで、インストールした新しいIndesignのVisual Basic.tlbの参照先を正しく書き直せばいいと思うのですが、今のところエラーが出て消えません。

テキストフレームの文字が消える現象

お久しぶりです。大量にEPSの数式をつくって、さらに普通に文字を書いて編集しているとテキストフレームの文字全てが消える現象が新しいCCで出るようになりました。はじめはメモリの問題かとPCを新しくしましたが、だめです。テキストフレームの再描画みたいなコマンドをつけてくれると助かります。

Re:テキストフレームの文字が消える現象

Win10もCCもこちらに環境がないためなんともできませぬ…
申し訳ない

  • あるふぁ(仮)
  • 2016/04/03(Sun.)

困っています

TEXのものをInDesignへ変換させようとしている者なんですが、皆が書いている問題とは違う問題が出てきて困っています。環境はwin10(or Win8.1), CS6で試してみたのですが、intextex1_3をExtendscript toolkit CS6からindesign指定で実行するとExecution finished.Result:undefinedというエラーがconsoleに出て何もファウルを吐き出せてない状況です。またindesign内部からintextex1_3をダブルクリックで実行してみたのですが、なんの変更もなしです。助けて下さい。

プロフィール

あるふぁ(仮)
InDesignで新聞組版のようなことをしてる人です。

InDesignスクリプトについて

つくったInDesignスクリプトのまとめ

twitter

フリーエリア