Textwellで原稿イメージを印刷プレビューしてみるアクション Prin

年末の予告を実行してみました。


Textwell 1.3.5
分類: 仕事効率化,ユーティリティ
価格: \300 (Sociomedia)

下書きとして万能な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="&amp;";break;
    case c=="<":c="&lt;";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>