一太郎で青空文庫ルビ
むかーし作ったマクロですが、リクエストがあったので載せます。青空文庫テキストにルビをふる一太郎マクロですが、長いテキストだとループを起こして終わらないことがあるような感じです。エラーを検証して直している余裕がないので、エラーを起こしたら報告していただければ、そのうち直すかもしれません。ご自分で直して使っていただいてもOKです。↓↓以下説明↓↓ --- 青空文庫のテキストにルビを振る --- --- for 一太郎2008 --- --- ver1.30 --- --- 2010/4/25 Copyright Tsukasa --- ルビを振って、傍点を処理し、一部の字下げ処理をして、題名・作者のファイル名で保存し、JUST PDFで出力します。青空文庫形式の文書にルビを振るマクロです。ルビを振って、傍点を処理し,一部の字下げ処理をします。何回か確認メッセージが出るので、「はい」で実行してください。Willcom NS の画面で見やすいサイズにスタイルを設定して,題名・作者名のファイル名で保存します。JUST PDFのシステムマクロ「現在の文書をPDF形式に変換」を使ってPDFに出力します。JUST PDFがインストールされていない場合はエラーになります。「とりあえず公開」なので、中身は整理されていません。時間があったら整理して、ほかの処理も追加していきます。システムマクロにコピーしておつかい下さい。フリーソフトです。著作権は放棄しませんが,自由に改変・配布して下さい。免責 このマクロの使用によっていかなる損害が生じようと、一切責任は負いません。あらかじめご承知の上ご使用下さい。履歴1.3 2010/4/25 ルビの処理を訂正。長いルビにも対応した。 まだエラーを起こすことがある。 字下げの処理を追加した。 JustPDFを使ってPDFに出力するようにした。1.2 2010/04/12 傍点の処理を追加・NS画面用のスタイルに変更1.1 2010/04/10 ルビを振る処理が失敗することがあるのを修正 題名・作者名のファイル名で保存する処理を追加1.0 20100409 ルビを振るマクロを作成↑↑以上説明↑↑↓↓以下マクロ本文↓↓ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー-----------ーーーーーーーーーーーーーーーーーーーーーーーーーーーー!! --- 青空文庫のテキストにルビを振る ---!! --- for 一太郎2008 ---!! --- ver1.30 ---!! --- 2010/4/25 Copyright Tsukasa ---!!!! ルビを振って、題名・作者のファイル名で保存します。!!ver 1.20 傍点の処理を追加・NS画面用のスタイルに変更!!ver 1.30 ルビの処理を訂正。長いルビにも対応した。まだエラーを起こすことがある。!! 字下げの処理を追加した。!! JustPDFを使ってPDFに出力するようにした。!!↓↓ルビの処理↓↓!!↓↓長い単語のルビの処理↓↓ declare variable %ページ(2) declare variable %行(2) declare variable %字(2) 文書頭() %ret(1) =1 %i = 0 !!一番最初の|は処理しないためのカウンタ do until %ret(1) =0 %ret(1) = 正規表現検索("|",1) if(%ret(1)>0 and %i >0) then %ページ(1)= GetPage() %行(1) = GetRow() %字(1) = GetColumn() 挿入("★") %ret(2) = 正規表現検索("《[^》]+》",1) if(%ret(2)>0) then %ページ(2)= GetPage() %行(2) = GetRow() %字(2) = GetColumn() %ルビ = GetString() try !!エラー発生時はこのルビ処理は飛ばす if(MaxSize(%ルビ)>1)then %ルビ(1) = %ルビ(1) & %ルビ(2) end if 削除() %字数=Len(%ルビ(1)) %ルビ(1) = Mid(%ルビ(1),2,%字数-2) 範囲モード(1) ジャンプ(%ページ(1),%行(1),%字(1)) 範囲始点() ジャンプ(%ページ(2),%行(2),%字(2)) 範囲終点() ルビ( 1, %ルビ(1),1)!! ジャンプ(%ページ(1),%行(1),%字(1))!! 削除() exception case else 挿入("★") end try end if end if %i = %i+1 loop!!↑↑長い単語のルビの処理↑↑!!↓↓短い単語のルビの処理↓↓文書頭( )%ret = 1do until %ret = 0 %ret = 正規表現検索( "《.》|《..》|《...》|《....》|《.....》|《......》|《.......》|《........》|《.........》|《..........》",1 ) if(%ret<>"")then %ルビ = GetString( ) !!エラー発生時はこのルビ処理は飛ばす try try if(MaxSize(%ルビ)>1) then %ルビ(1) = %ルビ(1) & %ルビ(2) end if %字数 = Len(%ルビ(1)) %ルビ(1) = Mid(%ルビ(1),2,%字数-2) 挿入("★") LeftWord( 2 ) 範囲モード( 6 ) 範囲始点( ) 範囲終点() ルビ( 1,%ルビ(1) ,1) exception case else 挿入("★") end try end ifloop文字全置換("★",,3,0,0)!!↑↑ルビの処理↑↑!!↓↓傍点の処理↓↓文書頭( )%ret = 1do until %ret = 0 %ret = 正規表現検索( "[#「[^」]+」に傍点]",1 ) if(%ret<>"")then %ルビ = GetString( ) if(MaxSize(%ルビ)>1) then %ルビ(1) = %ルビ(1) & %ルビ(2) end if %字数 = Len(%ルビ(1))-8 カット() 範囲モード(1) 範囲始点( ) 前文字(%字数) 範囲終点() 傍点( 2) end ifloop!!↑↑傍点の処理↑↑!!↓↓字下げの処理↓↓文書頭()%ret=1do until %ret = 0 %ret = 正規表現検索("[#ここから.字下げ]",1) if(%ret > 0 ) then %文字 = GetString() %数 = han(Mid(%文字(1),7,1))*2 if(%数>0)then 削除() else continue do end if %ページ(1)= GetPage() %行(1) = GetRow() %ret = 正規表現検索("[#ここで字下げ終わり]",1) %ページ(2)=GetPage() %行(2) = GetRow() 削除 ジャンプ(%ページ(1),%行(1),1) 範囲モード(2) 範囲始点() ジャンプ(%ページ(2),%行(2),1) 範囲終点() インデント(1,%数) end ifloop!!↑↑字下げの処理↑↑!!↓↓スタイルの設定↓↓!!用紙 53.0×82.0!!余白 上下左右5.0mm!!縦書き!!字数22!!行数10%用紙名="NS画面"%幅=53%長=82%余白=5%字数=22%行数=10%bool = 0%list = GetPrintPaPerList()for %i = 1 to MaxSize(%list) if(%list(%i)=%用紙名)then %bool = 1 exit for end ifnext!! %bool=1のときは用紙登録済みif(%bool = 0) then 新規用紙名( %用紙名,1,%幅,%長)end if印刷スタイル用紙( %用紙名 )!!マージン印刷スタイルマージン( 5, 5, 5, 5, 1)!!フォント8pt印刷スタイルフォント( , , , , 10,8)!!ページ 中央下 5pt印刷スタイルページ(2 ,3, 1, , 0,0,1,1,,1, , ,1,5, 3)!!レイアウト印刷スタイルレイアウト( %字数, %行数, , ,, 2, 1 )印刷スタイル設定( )!!↑↑スタイルの設定↑↑!!↓↓文書名の処理↓↓文書頭()範囲モード(2)範囲始点()次行(4)範囲終点()%題名 = GetString()%カレント = SplitPath( GetDocumentName(1) )%題名(0) = %カレント("DRIVE") & %カレント("DIRECTORY")for %i = 1 to MaxSize(%題名) if(%題名(%i)<>"") then if(%i = 1) then %題名(0) = %題名(0) & %題名(%i) else %題名(0) = %題名(0) & "・" & %題名(%i) end if else exit for end ifnext文書保存(%題名(0))!!↑↑文書名の処理↑↑!!↓↓システムマクロを使ってPDFに変換↓↓ システムマクロ実行("現在の文書をPDF形式に変換(JUST_PDF)") !!↑↑システムマクロを使ってPDFに変換↑↑↑↑以上マクロ本文↑↑