むかーし作ったマクロですが、リクエストがあったので載せます。
青空文庫テキストにルビをふる一太郎マクロですが、長いテキストだとループを起こして終わらないことがあるような感じです。
エラーを検証して直している余裕がないので、エラーを起こしたら報告していただければ、そのうち直すかもしれません。ご自分で直して使っていただいても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 = 1
do 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 if
loop
文字全置換("★",,3,0,0)
!!↑↑ルビの処理↑↑
!!↓↓傍点の処理↓↓
文書頭( )
%ret = 1
do until %ret = 0
%ret = 正規表現検索( "[#「[^」]+」に傍点]",1 )
if(%ret<>"")then
%ルビ = GetString( )
if(MaxSize(%ルビ)>1) then
%ルビ(1) = %ルビ(1) & %ルビ(2)
end if
%字数 = Len(%ルビ(1))-8
カット()
範囲モード(1)
範囲始点( )
前文字(%字数)
範囲終点()
傍点( 2)
end if
loop
!!↑↑傍点の処理↑↑
!!↓↓字下げの処理↓↓
文書頭()
%ret=1
do 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 if
loop
!!↑↑字下げの処理↑↑
!!↓↓スタイルの設定↓↓
!!用紙 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 if
next
!! %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 if
next
文書保存(%題名(0))
!!↑↑文書名の処理↑↑
!!↓↓システムマクロを使ってPDFに変換↓↓
システムマクロ実行("現在の文書をPDF形式に変換(JUST_PDF)")
!!↑↑システムマクロを使ってPDFに変換↑↑
↑↑以上マクロ本文↑↑