Textwellで原稿イメージを印刷プレビューしてみるアクション Prin
年末の予告を実行してみました。
下書きとして万能なTextwell。けれど、長い文章を書くとiPadでさえ全体のイメージが掴みづらくなります。最終的にはパソコンに移して仕上げることになる。それは何が違うのでしょう? たぶん、完成イメージなんですよね。もしプリンターに打ち出すとしたら何枚くらいになるかとか、章立てごとの分量にバラツキがないかとか、これが把握しづらい。勢い、パソコンに転送して印刷プレビューをしながら推敲することになる。
でも、簡単な全体像ならアクションで表示すればいいんじゃないか。それが年末の宿題でした。とりあえず、最低限のことは実現できたので載せてみます。
Import Textwell ActionPrin(for iPad)
アクションを実行すると、二枚一組の印刷イメージが出ます。自動でカーソル行に移動。各用紙にはページ番号も付いています。ページの横幅は全角40字、縦は40行の設定。1600字の原稿イメージ。縦横の文字数はソースの初めでカスタマイズできるようにしました。
ダブルタップすると、その用紙を拡大表示します。再度ダブルタップで元のサイズに戻る。ヒラギノ明朝で印刷するイメージ。半角文字もプロポーショナルフォントなので、若干ズレが生じます。一応、半角文字2個で全角1文字分とする計算になっています。
シングルタップすると、そのページの先頭に移動し、編集画面に戻ります。修正したい部分を見つけたとき、この方法で画面を切り替えてください。
iPadに合わせてありますが、iPhoneでも同じようにプレビューできます。その場合は下記アクションを入れてください。font-sizeを6pxにしてあります。さすがに小さいですけど。長文の全体像を得るのが目的なので、読みづらいのはトレードオフで。
Import Textwell ActionPrin(for iPhone)
【ソース】
<div id=wine></div> <script> // 縦横の文字数を指定します。 height=40; width=40; // プログラム本体 page=1; text=T.text; loc=T.range.loc; draft="<div onclick=Jump(0) class=page>"; wc=0; hc=0; char=0; for(i=0;i<text.length;i++){ c=text.charAt(i); switch(true){ case c=="\n":c="<br>";wc=0;hc++;break; case c=="&":c="&";break; case c=="<":c="<";break; case /%u/.test(escape(c)):wc++;break; } draft+=c; char++; if(char==loc) draft+="<a name=pointer></a>"; wc++; if(wc>=width*2){ draft+="<br>"; wc=0; hc++; } if(hc>=height){ draft+="<br><div align=center>- "+page+" -</div></div>\n<div onclick=Jump("+char+") class=page>"; page++; hc=0; } } for(;hc<height;hc++) draft+="<br>"; draft+="<br><div align=center>- "+page+" -</div>"; wine.innerHTML=draft; location="#pointer"; function Jump(x){ T("replaceRange",{ text:text, replacingRange:{len:text.length}, selectingRange:{loc:x} }); } </script> <title>Prin</title> <style> body{ background:darkgray; } .page{ font-family:Hiragino Mincho ProN; font-size:10px; width:430px; float:left; color:black; background:#fafafa; white-space:pre; word-wrap:break-word; padding:20px; margin:5px; border-radius:5px; border:1px solid gray; } </style>