069664 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

All season with my Dear

All season with my Dear

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

カレンダー

プロフィール

Tsukatsuka

Tsukatsuka

キーワードサーチ

▼キーワード検索

2017年06月25日
XML
カテゴリ:開発系の話

むかーし作ったマクロですが、リクエストがあったので載せます。
青空文庫テキストにルビをふる一太郎マクロですが、長いテキストだとループを起こして終わらないことがあるような感じです。
エラーを検証して直している余裕がないので、エラーを起こしたら報告していただければ、そのうち直すかもしれません。ご自分で直して使っていただいても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に変換↑↑

↑↑以上マクロ本文↑↑






お気に入りの記事を「いいね!」で応援しよう

最終更新日  2017年06月25日 20時12分16秒
コメント(0) | コメントを書く


お気に入りブログ

ねこせん ねこせん編集長さん
アーサー@西風の道標 arthursさん

コメント新着

コメントに書き込みはありません。

ニューストピックス


© Rakuten Group, Inc.