最近あった事例紹介です。
化合物名に使われているアポストロフィをシングルクォーテーション(Right Single Quotation Mark:[Shift]+[7]で入力する文字列)にそろえたくて置換をしてみました。
すると、Right Single Quotation Mark にしたかった箇所が勝手にLeft Single Quotation Mark に切り替わってしまったのです!
そう、こういう挙動はWordのおせっかい機能として有名な「オートコレクト」の仕業です。
どのように対処したらよいのか紹介します。
<目次>
問題点
アポストロフィをシングルクォーテーションに[検索と置換]ダイアログボックスを使って置換します。
「4,4'-(4,4'-Isopropylidenediphenoxy)diphthalic Anhydride」の和名である「4,4'-(4,4'-イソプロピリデンジフェノキシ)ジフタル酸無水物」で使われているアポストロフィを置換します。
(置換前)
(置換後)
下記のようにひげの向きが違いますね。
欲しかった結果は以下のような感じです。
原因と対策
オートコレクトの「左右の区別がない引用符を、区別がある引用符に変更する」が原因で上記のような挙動になります。デフォルトではオンになっています。
[Alt]+[A]のショートカットキーでオートコレクトのダイアログを開き、以下の項目をオフにします。
この項目をオフにすれば、置換をしても以下のような結果になります。
もう少し詳しく
いろいろ実験してみたところ、この引用符を変更するか否かは、引用符が文字列の開始位置だと推定される場合に変換がされてしまうようです。
アポストロフィが直前の文字列「4」の直後に書かれている場合を見てみましょう。
(置換前)
この場合には、このアポストロフィは前の文字列から連続した箇所の一部ですから、このアポストロフィが文字の開始位置とは推定されないのです。結果、「左右の区別がない引用符を、区別がある引用符に変更する」がオンの場合でもひげの向きが変更されませんでした。
(置換後)
上記のようにアポストロフィは直前の数字の直後に書くことが正しいのですが、翻訳や執筆の最中に間違って半角スペースが入ってしまうことはあります。
この状態で置換をすると、今回のように文字列の開始位置としてLeft Single Quotation Mark に変更されてしまうということです。
文書中の表記の揺れはどうしても発生すると思います。もし置換をするような場合には、オートコレクトの「左右の区別がない引用符を、区別がある引用符に変更する」をオフにしておけば安心です。
マクロでの対処方法
この変更の挙動はWordマクロを使った置換でも起こります。
置換を行う前に以下のコードを使って「左右の区別がない引用符を、区別がある引用符に変更する」をオフにしておけばよいでしょう。処理後に元に戻しいます。
Dim blnAutoFormatAsYouTypeReplaceQuotes As Boolean blnAutoFormatAsYouTypeReplaceQuotes = Options.AutoFormatAsYouTypeReplaceQuotes Options.AutoFormatAsYouTypeReplaceQuotes = False (処理内容) Options.AutoFormatAsYouTypeReplaceQuotes = blnAutoFormatAsYouTypeReplaceQuotes