秀丸の弱点(文字書式)
秀丸の弱点を補うための工夫について少しづつ書いていきます。
まずは、書式の問題です。
Wordファイル内の、下線部、イタリック体、ボールド体などは秀丸エディターに貼りつけた段階で消えてしまいます。
なので、Wordファイルの内容を秀丸エディターに貼り付ける前に、タグ付けを行います。
そして、秀丸エディターからWordファイルに戻したときに、タグの付いている部分に対して対応する書式を適用します。
ブログやホームページをやっている人もHTMLのタグ付けはご存知だと思います。あれと同じ要領です。
タグはWordファイルの内容とかぶらないもの、後、翻訳した後の文字列とかぶらない物であれば何でもいいです。
要は、タグ付け、タグを外すときに一括置換を行うのですが、不要な部分まで置き換わらないものということです。
エディターを使って翻訳する人は、当然のように同様の作業をやっているので目新しいものでは無いのですが、一例として私のやり方(使用しているタグ)を紹介させていただきます。
私は、
下線部分⇒<U>文字</U>
ボールド体⇒<B>文字</B>
イタリック体⇒<I>文字</I>
取り消し線⇒<S>文字</S>
上付き⇒↑文字↑
下付き⇒↓文字↓
というようにタグを付けます。
下線部を例に取って説明します。
検索置換ダイアログで、検索文字列の書式を下線部有りに設定して検索します。
ヒットした部分を上記したタグで挟みます。
つまり、
<U>文字</U>
ということです。
検索文字列のフィールドは空で、
置換文字列は<U>^&</U>を入力します。
ワイルドカードはOFFにします。
^&は、検索してヒットした文字列を表す特殊文字です。
書式を復元するときは、<U>と</U>とで挟まれた文字列を検索します。
両端のタグ(<U>, </U>)を外して、これらタグの間にある文字列に対応する書式を適用します。
つまり、
検索文字列は、ワイルドカードを使って
\&glU\>(?@)\>/U\>
置換文字列は、
\1
です。
ワイルドカードを使った置換については、また別の機会に説明します。
このタグ付け、タグ外し(書式復元)を一括して行うマクロを作ってみたので、
興味のある方はどうぞ。
まずは、書式の問題です。
Wordファイル内の、下線部、イタリック体、ボールド体などは秀丸エディターに貼りつけた段階で消えてしまいます。
なので、Wordファイルの内容を秀丸エディターに貼り付ける前に、タグ付けを行います。
そして、秀丸エディターからWordファイルに戻したときに、タグの付いている部分に対して対応する書式を適用します。
ブログやホームページをやっている人もHTMLのタグ付けはご存知だと思います。あれと同じ要領です。
タグはWordファイルの内容とかぶらないもの、後、翻訳した後の文字列とかぶらない物であれば何でもいいです。
要は、タグ付け、タグを外すときに一括置換を行うのですが、不要な部分まで置き換わらないものということです。
エディターを使って翻訳する人は、当然のように同様の作業をやっているので目新しいものでは無いのですが、一例として私のやり方(使用しているタグ)を紹介させていただきます。
私は、
下線部分⇒<U>文字</U>
ボールド体⇒<B>文字</B>
イタリック体⇒<I>文字</I>
取り消し線⇒<S>文字</S>
上付き⇒↑文字↑
下付き⇒↓文字↓
というようにタグを付けます。
下線部を例に取って説明します。
検索置換ダイアログで、検索文字列の書式を下線部有りに設定して検索します。
ヒットした部分を上記したタグで挟みます。
つまり、
<U>文字</U>
ということです。
検索文字列のフィールドは空で、
置換文字列は<U>^&</U>を入力します。
ワイルドカードはOFFにします。
^&は、検索してヒットした文字列を表す特殊文字です。
書式を復元するときは、<U>と</U>とで挟まれた文字列を検索します。
両端のタグ(<U>, </U>)を外して、これらタグの間にある文字列に対応する書式を適用します。
つまり、
検索文字列は、ワイルドカードを使って
\&glU\>(?@)\>/U\>
置換文字列は、
\1
です。
ワイルドカードを使った置換については、また別の機会に説明します。
このタグ付け、タグ外し(書式復元)を一括して行うマクロを作ってみたので、
興味のある方はどうぞ。
Sub 書式解除()
'書式を解除して、タグ付けします。
Call Tagging("<U>^&</U>", 1)
Call Tagging("<B>^&</B>", 2)
Call Tagging("<I>^&</I>", 3)
Call Tagging("<S>^&</S>", 4)
Call Tagging("↑^&↑", 5)
Call Tagging("↓^&↓", 6)
End Sub
Private Sub Tagging(ByVal TagString As String, ByVal Mode As Integer)
With ActiveDocument.Range.Find
Select Case Mode
Case 1
.Font.Underline = wdUnderlineSingle
Case 2
.Font.Bold = True
Case 3
.Font.Italic = True
Case 4
.Font.StrikeThrough = True
Case 5
.Font.Superscript = True
Case 6
.Font.Subscript = True
Case Else
Exit Sub
End Select
.Text = ""
With .Replacement
Select Case Mode
Case 1
.Font.Underline = wdUnderlineNone
Case 2
.Font.Bold = False
Case 3
.Font.Italic = False
Case 4
.Font.StrikeThrough = False
Case 5
.Font.Superscript = False
Case 6
.Font.Subscript = False
Case Else
Exit Sub
End Select
.Text = TagString
End With
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = False
.Execute Replace:=wdReplaceAll
End With
End Sub
Sub 書式復元()
'タグを外して書式を復元します。
Call Untagging("\<U\>(?@)\</U\>", 1)
Call Untagging("\<B\>(?@)\</B\>", 2)
Call Untagging("\<I\>(?@)\</I\>", 3)
Call Untagging("\<S\>(?@)\</S\>", 4)
Call Untagging("↑(?@)↑", 5)
Call Untagging("↓(?@)↓", 6)
End Sub
Private Sub Untagging(ByVal TaggedString As String, ByVal Mode As Integer)
With ActiveDocument.Range.Find
.Text = TaggedString
With .Replacement
Select Case Mode
Case 1
.Font.Underline = wdUnderlineSingle
Case 2
.Font.Bold = True
Case 3
.Font.Italic = True
Case 4
.Font.StrikeThrough = True
Case 5
.Font.Superscript = True
Case 6
.Font.Subscript = True
Case Else
Exit Sub
End Select
.Text = "\1"
End With
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub
'書式を解除して、タグ付けします。
Call Tagging("<U>^&</U>", 1)
Call Tagging("<B>^&</B>", 2)
Call Tagging("<I>^&</I>", 3)
Call Tagging("<S>^&</S>", 4)
Call Tagging("↑^&↑", 5)
Call Tagging("↓^&↓", 6)
End Sub
Private Sub Tagging(ByVal TagString As String, ByVal Mode As Integer)
With ActiveDocument.Range.Find
Select Case Mode
Case 1
.Font.Underline = wdUnderlineSingle
Case 2
.Font.Bold = True
Case 3
.Font.Italic = True
Case 4
.Font.StrikeThrough = True
Case 5
.Font.Superscript = True
Case 6
.Font.Subscript = True
Case Else
Exit Sub
End Select
.Text = ""
With .Replacement
Select Case Mode
Case 1
.Font.Underline = wdUnderlineNone
Case 2
.Font.Bold = False
Case 3
.Font.Italic = False
Case 4
.Font.StrikeThrough = False
Case 5
.Font.Superscript = False
Case 6
.Font.Subscript = False
Case Else
Exit Sub
End Select
.Text = TagString
End With
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = False
.Execute Replace:=wdReplaceAll
End With
End Sub
Sub 書式復元()
'タグを外して書式を復元します。
Call Untagging("\<U\>(?@)\</U\>", 1)
Call Untagging("\<B\>(?@)\</B\>", 2)
Call Untagging("\<I\>(?@)\</I\>", 3)
Call Untagging("\<S\>(?@)\</S\>", 4)
Call Untagging("↑(?@)↑", 5)
Call Untagging("↓(?@)↓", 6)
End Sub
Private Sub Untagging(ByVal TaggedString As String, ByVal Mode As Integer)
With ActiveDocument.Range.Find
.Text = TaggedString
With .Replacement
Select Case Mode
Case 1
.Font.Underline = wdUnderlineSingle
Case 2
.Font.Bold = True
Case 3
.Font.Italic = True
Case 4
.Font.StrikeThrough = True
Case 5
.Font.Superscript = True
Case 6
.Font.Subscript = True
Case Else
Exit Sub
End Select
.Text = "\1"
End With
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub