特定のTweet引用時の正書法

英語論文で特定のツイート引用時の正書法について書かれているブログ記事を拝見しました。
英語論文におけるツイートの正しい引用のしかた[MLAスタイル]:エディテック:ITmedia オルタナティブ・ブログ

この正書法に則るために、なんどもコピペするのがめんどい人のためのrubyスクリプト(要nokogiri)

#!/usr/bin/ruby
# -*- coding: utf-8 -*-

require "open-uri"
require 'nokogiri'

if ARGV.length != 1 then
  puts "Error: No parameter."
  exit
end

my_uri = ARGV[0].dup #パラメータは.dupしないと変更できない。
if my_uri =~ %r{^https://twitter.com/.+/status/\d+$} then
  my_uri.sub!(%r{^https://twitter.com/#!/}, "https://twitter.com/")
else
  puts "Error: Is not Twitter-uri."
  exit
end


#XHTMLのパース
doc = Nokogiri::HTML(open(my_uri))

#XPathで各エレメントから文字列を取り出す
my_fullname = doc.search('div[@class="full-name"]').text.to_s#ユーザーフルネーム
my_id = doc.search('meta[@name="page-user-screen_name"]').attribute('content').to_s#ユーザーID
my_entry_content = doc.search('span[@class="entry-content"]').text.to_s#エントリー内容
my_time = doc.search('span[@class="published timestamp"]').attribute('data').to_s#エントリー時間
my_time.sub!(/^{time:'(.+)'\}/) {$1}


#書式にあわせてprint
print "#{my_fullname} (@#{my_id}). “#{my_entry_content}” #{my_time}. Tweet.\n#{my_uri}\n"

パーマリンクを指定して実行すると、こんな感じになります。
f:id:seuzo:20120310173443p:image
本当はTwitter APIでとってくればXMLでより正確にtextを取れるのかもしれないけど、とりあえずclass名とかで取れています。まあ、日付をパースしなおして日本時間にしてもいいかな。
もし万が一、ちゃんと使う人がいるようだったら -j オプションで日本語引用風にするとか考えます。
とりあえず。

Illustratorの「ドキュメントを SVG として保存.jsx」をちょっと改造して「ドキュメントを PNG として保存.jsx」にする

 印刷用のIllustratorドキュメントをWeb用(とかEPUB用)にPNGフォーマットへ変換したい時ってあります。ひとつづつドキュメントを開いて、「Webおよびデバイス用に保存」ダイアログを出し、プリセットを選んで変更し、名前を付けて保存... って数百点もやってられっか! と泣きながら作業している人も多いでしょう。
 Illustratorの「ファイル」メニューの「スクリプト」-「ドキュメントを SVG として保存」ってのはあるんだけどなー、と思った人もいるかもしれません。それ、ちょっと改造するとPNG書出しもできる子になりますよ! というお話。初めての人向きにステップバイステップで説明してみます。
 この「ドキュメントを SVG として保存」のスクリプトそのものはどこにあるかというと、Mac環境だとたいてい「/Applications/Adobe Illustrator CS5/Presets.localized/ja_JP/スクリプト/ドキュメントを SVG として保存.jsx」にあります。このファイルを複製して「ドキュメントを PNG として保存.jsx」と名前をつけておいてください。
f:id:seuzo:20120308221810p:image
 複製したファイルをExtendScript Toolkitで開くとこんな感じになっているはずです。
f:id:seuzo:20120308222728p:image
 左上の対象アプリケーションのポップアップを「Adobe Illustrator CS5」に直して、さあカイゾーだ!@|@

(1)ダイアログの文字列を変更する

 書出し用の保存フォルダを選択するダイアログと、最後の作業完了ダイアログに「SVG」という文字が出てきます。完全に見た目の問題ですが、気分が悪いので、さっさと変えちゃいましょう。
 31行目と52行目にある「SVG」という文字を「PNG」に変更します。
f:id:seuzo:20120308235420p:image
 これらを変更することで、ダイアログ内の文字が変更されるようになります。
f:id:seuzo:20120308235256p:image

(2)保存拡張子の変更

 保存する時に自動で「.png」拡張子をつけるようにします。44行目の「.svg」を「.png」に変更してください。
f:id:seuzo:20120308225732p:image

(3)書出しタイプの変更

 書出しタイプをSVGからPNG24に変更します。47行目の「ExportType.SVG」を「ExportType.PNG24」に変更します。
f:id:seuzo:20120308230204p:image
 ちなみに、ExportTypeは他にも「JPEG」や「GIF」「PHOTOSHOP」なども選べます。詳しくはExtendScript Toolkitのオブジェクトモデルビューアで確認してください。
f:id:seuzo:20120308230430p:image

(4)オプションを指定

 PNG24の書出しオプションをいくつか設定します。67行目の「function」から82行目の「}」までをざっくり下記と入れ替えてください。

function getOptions()
{
	// Create the required options object
	var options = new ExportOptionsPNG24();
    
    options.antiAliasing = true;//アンチエイリアス処理
    options.artBoardClipping = false;//オブジェクトのみ
    options.horizontalScale = 200;//200%拡大
    options.verticalScale = 200;//200%拡大
    	
	return options;
}

f:id:seuzo:20120308231044p:image
 原寸で印刷用に描かれたイラストは、Webブラウザなどで見るとけっこう小さく見えてしまいます。文字なども含まれるでしょうから、ここでは200%拡大で書き出しています。
 ちなみにPNG24の他の設定については、オブジェクトモデルビューアで確認できます。
f:id:seuzo:20120308231506p:image

(5)バグの修正

 SVG書出しの場合はこれで終わりなのですが、PNG書出しでは、なぜかうまく書き出されません。書き出すドキュメントが最前面にないと、同じものを書き出してしまうバグがあるようです(舌打ちっ
 42行目に1行追加してください。

sourceDoc.activate();

f:id:seuzo:20120308232227p:image

(6)テスト

 じゃあ動かしてみましょう! 改造したスクリプトを保存し、書出しをしたい複数のドキュメントを開いてください。ExtendScript Toolkitから直接動かしてもいいですし、Illustratorを再起動させれば、メニューからアクセスできるようになっているはずです。


 スクリプトに馴れてくると、いちいちダイアログなしで閉じられたらいいなーとか、ソース元フォルダを指定するだけで.ai拡張子をもつファイルだけ処理してくれるようになったらいいなーとか、いろいろヨッキューが高まってくるかもしれません。まあ、そういうリビドーを感じればしめしめ...

ReVIEWの自動採番やプレフィックス、番号参照を制御する

 以下の記事はReVIEW ML(要アカウント)でKADOさんにお教えいただいたことを、自分なりにメモしたものです。


 例えば、このようなReVIEWマーキングしたテキストを用意したとします。
f:id:seuzo:20120306165636p:plain
 これをまあ、スタイルシート以外のオプションをつけないで、review-compileしてHTML変換します。

$ review-compile --target html --stylesheet=main.css ch01.re > ch01.html

 HTMLだと変換後にすぐに確認できます*1
f:id:seuzo:20120307131111p:plain
 ReVIEWは当初、技術書を書くために設計されたので、下記の自動採番や番号参照などがデフォルトになっています。

  • 見出しのプレフィックスと採番
  • (図|表|リスト)のプレフィックスと採番
  • (図|表|リスト)の番号参照

見出しのプレフィックスを変更する

 章見出し(h1)のプレフィックスがデフォルトで「第n章 」になっています。これを「chapter n 」変更してみましょう。
 ReVIEWドキュメントと同じ階層に「locale.yaml」という名前のテキストファイルを用意します。このテキスト内容を下記の通りにしてみてください。

locale: ja
chapter: "chapter %d"
chapter_postfix: " "

f:id:seuzo:20120307135609p:plain
 このファイルを設置し終えたら、先ほどと同じコマンドでHTMLを生成してみます。
f:id:seuzo:20120307135728p:plain
 「第1章 」が「chapter 1 」になっていますね。.yaml上の「locale: ja」は日本語環境であるロケールを、「chapter: 」がh1要素のプレフィックス文字列を、「%d」が章番号の自動採番を、「chapter_postfix: 」がchapterプレフィックスと見出しとの間の文字列をそれぞれ表しています。
 YAMLのキーと値の初期値は「lib/review/i18n.yaml」にあります。GitHubでいうとこちら

 現在、定義されているキーの簡単な意味はこんな感じです。

キー 初期値 意味
image 図版(とその参照)の最初に置かれるプレフィックス
table 表(とその参照)の最初に置かれるプレフィックス
list リスト コードリスト(とその参照)の最初に置かれるプレフィックス
chapter 第%d章 章見出しのプレフィックス
chapter_postfix " " 章見出しのプレフィックスと見出しとの間にはさむ文字列"
numberless_image "図:" 自動採番をつけない「indepimage」マーキングを使った時の、図キャプションプレフィックス
format_number "%s.%d" 番号参照のフォーマット
format_number_header "%s.%d:" キャプションプレフィックスのフォーマット
format_number_without_chapter "%d" --level=0で章番号の自動採番をしなかった時、番号参照で使われるフォーマット
format_number_header_without_chapter "%d:" --level=0で章番号の自動採番をしなかった時、キャプションプレフィックスのフォーマット
caption_prefix " " キャプションプレフィックスとキャプションの間にはさむ文字列
caption_prefix_idgxml " " キャプションプレフィックスとキャプションの間にはさむ文字列(idgxmlを選んだ時)
ruby_prefix "(" rubyタグに非対応のデバイスでルビを開くとき、ルビ開始文字を表す文字列(rpタグに入る文字列)
ruby_postfix ")" rubyタグに非対応のデバイスでルビを開くとき、ルビ終了文字を表す文字列(rpタグに入る文字列)

見出しやキャプションのプレフィックスを抑制する

 技術書以外では見出しやキャプションのプレフィックスが不要な場合も多くあります。上の表を参考に、見出しやキャプションのプレフィックスをすべて生成しないようにしてみましょう。「locale.yaml」をこのように変更してみます。

locale: ja
image: ""
table: ""
list: ""
chapter: ""
chapter_postfix: ""
numberless_image: ""
format_number: ""
format_number_header: ""
format_number_without_chapter: ""
format_number_header_without_chapter: ""
caption_prefix: ""
caption_prefix_idgxml: ""

ruby_prefixとruby_postfix以外をすべて空文字列にしてみました。この時、生成したHTMLはこうなります。
f:id:seuzo:20120308001326p:plain
 自動採番をすべて空文字列にしているので、本文中の番号参照も空になるのを注意してください。
 ここで節見出しに「1.1 」という自動採番が残ってしまっているのにお気づきでしょうか。この部分を制御するには、review-compileコマンドに見出しレベルを追加するオプション「--level」が必要です。「--level=3」とすれば項見出しまでの自動採番を追加し、「--level=2」であれば節見出しまで、「--level=1」ならば章見出しのみ、「--level=0」では見出しの自動採番は追加されなくなります。つまり、この場合は「--level=1」以下を指定すればよいことになります。

$ review-compile --target html --level=0 --stylesheet=main.css ch01.re > ch01.html

f:id:seuzo:20120308003042p:plain

見出しの自動採番は追加しないが、図の参照番号やキャプションのプレフィックスは必要な場合

 先ほどのようにすべてを削除するのではなくて、図の参照番号やキャプションのプレフィックスは使いたいという場合もあります。この場合ですと、「--level=0」だけで目的は果たせそうです。「locale.yaml」ファイルを削除(またはリネーム)してください。生成したHTMLはこのようになるはずです。
f:id:seuzo:20120308005053p:plain

*1:xmlにしてInDesign流しても同じです

段分割にこんな使い方があったなんて!

InDesign CS5の段分割というと、こんな感じの箇条書きのデモばかり紹介されています。

もうちょっと段分割を使うと、こんなことできるんだよね、という例を紹介しましょう。まずはこれ、画像とキャプションをひとつのストーリーの中で回り込みのように配置できます。


こちらも画像とキャプションですが、それぞれを2段で並べてます。

ただし、ビデオの後半を見るとわかるように、段分割される最終行に「段落分離禁止オプション」が設定されていると、正しく段分割できません。まあ、段分割しようって時は「段落分離禁止オプション」をオフにしておいてください。←たいてい気づかずに「あれ? なんでできないんだろう?」と悩んだりするんですが^^

参照

段分割といえば...

いき♂さんがレポートされているこのバグ:段分割の最終行の改行を削除すると分割が解除され、さらにゴミみたいな設定が残りつづけるバグは、CS5.5でも修正されていません。さて、CS6では修正されるのでしょうか

選択した画像イメージを任意の大きさ(%)に拡大縮小して、フレームを内容に合わせる

/*
    選択した画像イメージを任意の大きさ(%)に拡大縮小して、フレームを内容に合わせる
    
    2012-03-01  とりあえず
*/


////////////////////////////////////////////設定
#target "InDesign"
var my_scale = 85;//縮小拡大率(%)

////////////////////////////////////////////エラー処理 
function myerror(mess) { 
  if (arguments.length > 0) { alert(mess); }
  exit();
}


////////////////////////////////////////////以下メイン実行
////////////////まずは選択しているもののチェック
if (app.documents.length === 0) {myerror("ドキュメントが開かれていません")}
var my_doc = app.documents[0];
if (my_doc.selection.length === 0) {myerror("画像を選択してください")}
var my_selection = my_doc.selection;

for( var i = 0; i < my_selection.length; i++) {
    var tmp_obj = my_selection[i];
    var my_class =tmp_obj.reflect.name;
    if (my_class === "Image" ) {
        tmp_obj.horizontalScale = my_scale;
        tmp_obj.verticalScale = my_scale;
        tmp_obj.parent.fit(FitOptions.FRAME_TO_CONTENT );
    } else if ("Rectangle, Oval, Polygon".match(my_class)) {
        if (tmp_obj.images.length === 1) {
            tmp_obj.images[0].horizontalScale = my_scale;
            tmp_obj.images[0].verticalScale = my_scale;
            tmp_obj.fit(FitOptions.FRAME_TO_CONTENT );
        }
    }
}

InDesignの正規表現で^行頭をクリップボードの内容と置き換えると文字が消える

 InDesignでは以前から、行頭位置「^」が置換文字列と置き換わらないバグがありました。
 置換文字列に通常のテキストではなくて「クリップボードの内容」を指定すると、行頭の1文字目が消失します。

 こちらも以前のバージョンから修正されていませんね。見出しなどに対してインラインを挿入する時によく使うテクニックなのに残念です。
 回避方法としては:

検索:^(.)
置換:~c$1

などとすればいいんですが、気持ち悪すぎます。「すべてを置換」もできたりできなかったりだし。
 InDesignのバグってもう直らない運命にあるのでしょうか...

TypeSquare使ってみた

 本日から、株式会社モリサワが提供するWebFonts「TypeSquare(タイプスクウェア)」のサービスがオープンしました。

クラウドフォント・シミュレータ

 Webブラウザ上で書体や組版の表示を確認できる「クラウドフォント・シミュレータ | [TypeSquare]」なども利用できます。文字の色や大きさ行間、そして書体などのパラメータを変えていろいろな組版を試してみることが可能です。
f:id:seuzo:20120222110628p:plain
f:id:seuzo:20120222110636p:plain
 また、TypeSquareを使わなかった場合(通常のデバイスフォントのみ場合)を2ペインで比較することもできます。
f:id:seuzo:20120222110833p:plain


WebFonts

 クラウドフォント・TypeSquareはWeb上で使えるフォントです。あなたのマシンにフォントがなくても意図通りのフォントをブラウザ上に表示します。
 2012年12月31日(月)まで、TypeSquareのオープン記念としてTypeSquareのWebFontsを無料で使用できます。
 したがって、今年末まではこのブログ上でもリアルフォントが楽しめるでしょう。ビバ!

愛のあるユニークで豊かな書体:新ゴ M


愛のあるユニークで豊かな書体:ゴシックMB101 B


愛のあるユニークで豊かな書体:A-OTF リュウミン Pr6 L-KL


愛のあるユニークで豊かな書体:フォーク R


愛のあるユニークで豊かな書体:ハルクラフト


愛のあるユニークで豊かな書体:はるひ学園


愛のあるユニークで豊かな書体:新丸ゴ エンボス


愛のあるユニークで豊かな書体:角新行書 L


愛のあるユニークで豊かな書体:勘亭流

 最初に反映されるまで、10分くらいかかりましたが、概ねちゃんと表示されているようです。をを、ガゾウジャナイヨ...テキストで選択できる!


TypeSquareを使うには

 まず、会員登録をしなくちゃいけません*1。これも現在は無料です。
 会員はTypeSquareを利用するサイトを登録できます。これ、下記画面で見るとわかるんですがいくでも登録できます。
f:id:seuzo:20120222115111p:plain
 つまり将来、有料でTypeSquareを利用する際に、PVによって価格が違うわけですが、ここで管理しているドメインなりサイトのPVを合算できる。ってことらしいです(page2012でお会いしたモリサワの方に教えていただきました。)。
 実際にWebサイトやブログに使うには、左側の「導入方法」に従ってステップバイステップで設定できます。
f:id:seuzo:20120222115713j:plain
 会員に専用のscriptタグが付与されますので、使用するページに貼付けてください。
 あとはCSS上で「font-family: 'Ryumin Light KL';」などと追加すればよいかと思います。ブログなどでCSSが書けないような場合はstyle属性で直接ont-familyを指定してもよいようです。
 いろいろわかった人は教えてください!

Enjoy Happy Fonts Life!