2015年8月1日土曜日

英語または日本語のフォント指定を一括変更

Microsoft Word では、選択した範囲のフォントを一括して別のフォントに変更することができる。以下、その方法。

文書内の選択範囲にある英字のうち、フォントが「txtt」となっているものを「CourierNew」に一括して変更する例を以下に示す。

メニューから「編集」>「置換」を選ぶ。下図のダイアログが開く。

図1 「検索と置換」ダイアログ

"A" で示した「検索する文字列」と書かれた入力欄をクリックし、そこにカーソルを表示させる。次いで下方の "B"「書式」ボタンをクリック。下図のダイアログが開く。

図2 「検索する文字」ダイアログ

赤丸で囲った「英数字用のフォント」欄に変更の対象としたいフォント名を入力、もしくはプルダウンメニューから選択する。
次に「OK」ボタンを押す。すると図1の画面に戻る。

このとき、図1 "C" の部分に今ほど設定したフォント名が表示されているはず。

今度は 図1の "D" で示した「置換後の文字列」と書かれた入力欄をクリックし、そこにカーソルを表示させる。次いで下方の "B"「書式」ボタンをクリック。下図のダイアログが開く。

図3 「置換後の文字」ダイアログ

赤丸で囲った「英数字用のフォント」欄に変更後のフォント名を入力、もしくはプルダウンメニューから選択する。
次に「OK」ボタンを押す。すると図1の画面に戻る。

このとき、図1 "E" の部分に今ほど設定したフォント名が表示されているはず。

以上で設定は終了。図1の「すべて置換」ボタンをクリックすればフォントの変更が実行される。

2015年7月29日水曜日

TeXをAcrobat経由でWordに変換

 TeX使いの筆者は MicrosoftWord なんて使いたくないのだが,同僚に「みんなから集めたファイルを統合して報告書を作るので .docx 出してちょ。ヨロシク!」と言われた日には渋い顔して「オケ」と言わざるを得ない。

 PDFで渡したって相手にそれをどうにかするスキルが無い事は分かりきっているし,「TeXにしよう,TeXに!」と言い張れば結局仕事が自分の方に回ってくることも目に見えているのだ。

 Word を使って一から文章を書き起こすときはそれほど苦痛でもないのだが,既に TeX で書いた文書がある場合は厄介だ。せっかく手持ちの資源があるのだから,それを最小の労力で Word に変換したい,とつい考えてしまうのだが, TeX→Word の変換をする頻度が低く,作業が自分なりに定型化出来ている訳ではないので,その時々に思いついた方法で変換してみる。ところが,一発で変換できる事など皆無で,変換したWordファイルには体裁の面で色々な不都合が生じる。結局は,その不都合を修正し,成形し直すのに多大な労力を使うハメに陥ってしまう。なんでこんなに面倒なんだ!一から作った方が早かったんじゃないか!?となる。TeX を Word に変換するという選択が適切かどうか,判断が難しいのだ。

 定型化できていないのには理由があって,過去の経験からすると,どうやら文書の様態に応じて変換方法を変えた方が良さそうな気がするのだ。日本語だけの単純な文書ならさして問題は無いが,数式や記号が多い場合,図表がある場合,レイアウトが特殊な場合,などは大抵変換のあとに面倒な作業を強いられたという嫌な経験しかない。

今回は数式や PSTricks で描いた図面を含む TeX 文書を Word に変換する必要が生じたのだが,どうやって変換しようかと考えていた時にふと思い出したのが,Adobe Acrobat のメニューに
 「ファイル」>「別名で保存」>「Microsoft Word」
というのがあったこと。これを試しに使ってみたところ,思いのほか使えることが判明したのでその結果を記録しておく。

 使い方は簡単で,TeXソースを
  foo.tex ー(dvips)→ foo.ps ー(ps2pdf)→ foo.pdf
としたあと,できたPDFファイルを Adobe Acrobat で開き,メニューから
 「ファイル」>「別名で保存」>「Microsoft Word」>「Word文書」
を選ぶ。保存用のダイアログが開くので保存ボタンをクリックすれば良い。これで foo.doc というファイルができる。

 できたファイルを Word で開いてみて驚いた。予想以上の出来なのだ。サンプルとして TeX のソースから作成した PDF と,それを変換して得られた DOC をアップしたので見比べて欲しいのだが(DOCの方はダウンロードして Word で開かないと正常に表示されない),DOC はかなり忠実に元のPDFを再現している。

 特筆すべきはPSTricksを使って作成した図面の変換結果。今回はEPS形式で保存した図面を¥includegraphicsで取り込んであるのだが,それが変換後の.docでは文字データと直線や曲線などの図形データにきちんと切り分けられており,その上で元の図が忠実に再現されている。文字は改行やタブを駆使して図面上の所定位置に適切に配置されており,テキストデータとして編集可能。フォントやサイズが変更できる。図形データはオートシェイプに変換されており,これも線の太さを変えたり変形したりという編集ができる。

 図を含む文書をWordに変換するのなら,この方法を使わない手はないだろう。

 その他の点を見ていこう。テキストの色はちゃんと保持されているし,図やキャプションの位置も適切だ。コードを囲んだ枠の大きさが少しおかしいが,この程度の修正ならどうってことはない。

 あとはフォントだが,PDFでは日本語のフォントを HiraMinPro-W3,英語フォントをNimbusRomanNo9 にしておいたものが MS明朝 と TimesNewRoman に置き換えられている。一方,ゴシック体は HiraKakuPro-W6 だったのが MS明朝の太字になっている。MSゴシックになっていないのは残念だが,努力は買おう。

 英字の斜体については情報が失われてしまっている。あとプログラムのコードを書くのに使った等幅フォントだが,Wordではtxttという名前のフォントになっている。この名前はTeX側で指定したフォントの名前がそのまま引き継がれたもので,Windows のシステム内には存在しないフォントだ。実は,txttという名前が残っているのは大変有難いことで,置換機能を使えばこの txtt を Word で使える等幅フォント(たとえばCourieNew)に一括置換できるのだ。

ついでなので、フォントを別のフォントに一括して指定しなおす方法を「英語または日本語のフォント指定を一括変更」にまとめておいた。この方法は実際には存在しないフォントを別のフォントに置換する場合でも有効で、その際はリンク先の図2に示した入力欄に,存在しないフォントの名前を手打ちで入力すれば良い。

TeX側で指定したフォントの名前がそのまま Word に引き継がれる事を応用すれば、もしかしたらTeX側でイタリック体をスラント体に変えるとか,フォント名を別のに変えるとかしておけば,Word側に存在しないフォント名が引き継がれ,それを足がかりに置換できるかもしれない。今回はそこまでする必要がないので,持ち越し課題としよう。

 難点を挙げるとすれば,一行ごとに改行コードが入っていること位か。それも全ての改行コードを検索して削除し,その後必要なところだけ改行しなおす,という力業でなんとかなりそうだ。

 総合的に見て,この方法で変換したWordドキュメントなら,体裁や不具合の修正にそれ程労力を必要とすることは無いだろう。

もうひとつ。AdobeAcrobat は PDF から rtf を作る事もできる。メニューから
 「ファイル」>「別名で保存」>「その他のオプション」
                     >「リッチテキスト形式」
とすればよい。rtf に変換すれば OpenOffice や LibreOffice でもそれなりに読めるかも知れない,と思って変換したのがこれ(RTF形式)。OpenOffice Writer で開いてみたが,結果はあまり芳しくなかった。図が表示されないなど,再現性がいまひとつ。Microsoft Word で rtf を開いたらちゃんと図が表示されるので,データが失われている訳ではない。Writer の変換エンジンが対応していないのだろう。LibreOffice は持っていないのでどうなるかは不明である。

 さて,このエントリを書いている最中にふと思いついたことがある。epsファイルをAcrobatで読み込み,docに変換するとどうなるんだろうか?

さっそくやってみたところ, 変換した doc ファイルは Word や PowerPoint のファイルに図として貼り付け可能であることが分かった。しかも,直線,曲線などの図形データはオートシェイプとして再編集が可能なのだ。これって,PowerPoint で資料作る時でも,図面は PSTricks や xypic で描いていいって事ですよね? なんかちょっとウキッとした。

という訳で,詳細な手順は別エントリ「epsをワードやパワポで再利用 ー ベクトルデータを失わない方法」にまとめることにしたい。


2013年9月20日金曜日

ThunderBird のメールを Spotlight 検索して Quicklook

ThunderBird のメールを Spotlight の検索対象にできないものか,とかねてから考えていたのだが,今日ちょっと思い立って検索してみたら良い情報が見つかった.早速試してみたところ期待通りにうまくいったのでその過程をメモ.
なお、テストしたマシンのOSはSnow Leopard.
mountain Lionなどで動くかどうかは試していないので悪しからず。

 ベースとなるのはブログ「鳥獣保護区」のエントリ「Spotlight で Thunderbird のメールを検索」にある記事.

やることを大きく分けると以下の3つ.
  1. Thunderbird.mdimporter をダウンロードしてインストール.
  2. ThunderBird の設定を変更.
  3. Quicklook の設定を変更. 
1. Thunderbird.mdimporter のダウンロードとインストール

https://bugzilla.mozilla.org/show_bug.cgi?id=290057#c110
に行って,
コメント番号110(日付は2007-07-11 06:05:58 PDT)の投稿にある
「attachment 271826」
のリンクをクリックすると "Thunderbird.mdimporter.zip" がダウンロードされる.
このファイルを解凍すると "Thunderbird.mdimporter" ができるので,これを
  フォルダ ~/Library/Spotlight (←現在のユーザ用)
もしくは
  フォルダ /Library/Spotlight (←全ユーザ用)
に入れる.

2. ThunderBird の設定を変更

Thunderbird の「環境設定」→「詳細」タブをクリックすると図のような画面になる.
ここで右下にあるボタン「設定エディタ」をクリック.すると警告表示がでるので,「細心の注意を払って使用する」ボタンをクリック.すると下図のような画面が開く.検索窓に 'mail.spotlight' と入れると図のような項目がリストアップされるので,このうち
mail.spotlight.enable の値を false から true に変更する.

変更の仕方は,当該行の false の部分にカーソルをあわせて右クリック.コンテキストメニューが表示されるので,一番上の「切り換え」を選択.
これで,spotlight 用インデックスの構築が開始する.
具体的には,
  フォルダ ~/Library/Caches/Metadata/Thunderbird/
が作成され,その中に設定しているアカウントに応じて階層構造をもったフォルダ群が作られる.最下位のフォルダの名前には '.mozmsgs' という拡張子が付いていて,その中に拡張子 'mozeml' の付いたファイルが格納される.この'mozeml' というのがメールのテキストデータで,spotlight はこの中身を検索してくれるという寸法.

mail.spotlight.enable の値を false から true に変更し,少し間を置いてから自分のメアドで spotlight 検索すると,メールが色々検索にひっかかって「おお!」となった.確かに ThunderBird のメールが検索できている.良い気分.

しかし,すこし間を置いたくらいでは,検索にひっかかるメールの数はごく僅か.インデックスが完成するまでには相応の時間が必要だろう.筆者の場合,6時間ほど経ってもまだ完了していないようだった(インデックス作成の進捗状況を確かめる事ができないので推測の域を出ない).ThunderBird を終了すると,インデックスの作成も中止されてしまうらしいので,ThunderBird を起動したまま,できあがるのをじっくり待つ事としよう.

3. Quicklook の設定を変更

さて,Spotlight 検索できるようになったのなら,検索結果の画面ですぐさま中身を Quicklook したくなるのが人情というもの.検索にひっかかるファイルの本体は先ほど書いた拡張子 ".mozeml" のファイル.このファイルをテキストエディタにドラッグ&ドロップしたところ,中身は普通のテキストデータであることが判明.よって一般のテキストファイルと同じように Quicklook できるはず.

筆者は 'QLColorCode.qlgenerator' を使っているので,こいつに拡張子 ".mozeml" がテキストデータであることを教えてやれば良い.

".mozeml" のファイルを mdls したところ,ContentType は com.mozilla.thunderbird.mozeml となっていた.そこで,
  /Library/QuickLook/QLColorCode.qlgenerator/Contents
を Property List Editor で開き,下のように com.mozilla.thunderbird.mozeml を Document Content Type UTIs に追加した.

これで,Quicklook できるようになった! めでたしめでたし.

2013年9月11日水曜日

OS X でバイナリファイルの比較

OS Xでバイナリファイルを比較する必要が出てきたのだが、ソフトウェアを持っていなかったので探してみた。ところが、日本語で数時間検索してはみたものの、使えそうなアプリケーションが全然出てこない。仕方がないので英語で検索してみたらすぐに良いのが見つかった。

見つけたのは Hex Fiend というバイナリエディタ。なかなかの優れものなのだが、メニューを一瞥しただけではにわかに比較の方法が分からないので、やり方をメモしておく。

ファイルを1つだけ開いている時の「File」メニューはこんな感じ。これではどうすればファイル同士の比較ができるのか分からない。


ところが、ファイルをもう一つ開くと「File」メニューはこうなる。


ここで、「File」メニューから「Compare 〇〇 and 〇〇」を選択すればよい。
すると次のような画面が開いて結果が表示される。

比較結果の表示も見やすいし、なかなか良い。おかげさまで目的が達せられた。ありがたや、ありがたや。

2012年6月26日火曜日

ThunderbirdがSymantecに撃たれた!

Windows には欠かせないが OS X には不要なユーティリティーが二つある。
それは、デフラグツールとウィルス対策ソフトだ。
そう思っている。思い込みかも知れないが、多分正しい。

 デフラグツールについては実証済み。
Leopard の時にうっかり有料ソフトを買ってHDDを分析したら、ち〜〜っとも断片化していなかったのだ。Windows のしっちゃかめっちゃかに断片化したHDDマップを見慣れていたものだから、Macの整然としたHDDマップを見た時は本当にビックリした。

ウィルス対策ソフトも多分 OS X には要らない。
こちらの方は、OS X が堅牢だからじゃなくてマイナーだから、だけど。

という訳で、家でも職場でも OS X マシンにはウィルス対策ソフトを入れていなかった。

しかし、職場の方でウィルス対策ソフトを入れろ入れろとうるさいので、嫌々ながらSymantec の Endpoint Protection をインストールした。

で、早速ウィルススキャンを実行したところ、Inbox に "report 485770.pdf.exe" という Downloader.Dromedan ウィルスがあるという。
Inbox は多分 Thunderbird のヤツだろうな、そんなもん添付ファイルに潜ませたって OS X にはカンケーネーと思いつつ、一応削除した。

ところがところが。

このウィルスを削除したあと、Thunderbird を起動したら、受信フォルダ直下のメールがぐちゃぐちゃになってしまった。

メール一覧からメールを選択したとき、全然違うところからデータを拾ってきて表示してしまう。HTML形式メールのソースが表示されたり、別のメールの添付ファイルがデーコード前のテキスト状態で表示されたりで、どうしようもない状態なのだ。

うっかりメールのデータをいじらせたのは失敗だった。
下手にウィルス対策ソフトなんか入れたら、そのソフト自体がおかしなことを引き起こしてしまったという典型的な例。
まるで、予防接種をしたその日の夜に発熱する幼児のよう。

くっそー、どうやって修復するか。

メールがぐちゃぐちゃになったといっても、症状から見る限りデータ自身は生きていそうだ。
そこで考えた。

そもそも、電子メールというのはメールを一つ一つ個別のファイルとして保管する訳ではなく、複数のメールのデータ(送信者などが書かれたヘッダと本体)を順に繋げていったものを、一つのファイルにつらつら並べて書き込んでいく、というやり方をする。
メールソフトはデータの先頭から順にヘッダを探しつつスキャンしていき、当該のメールを探し出す。だからメールのデータ本体さえあればメールは基本的に読める訳だ(UNIXのmailコマンド懐かしス)。
しかしそれでは効率が悪いということで、メールのヘッダだけ取り出してメールの目次を作っておき、それを使って管理するというのが一般的なやり方。

Firefox の場合は拡張子 .msf のファイルが目次になっている。

今直面しているトラブルは、Inbox からウィルスが除去されてファイルが縮んだせいで、 .msf ファイルとの間で整合性がとれなくなったために起こってるのだろうと見当をつけた。そこで、Inbox の目次である Inbox.msf ファイルを修復させてみたところ、あっさり解決することができた。

という訳で、以下その手順。

(1) Thunderbirdを終了させる。

(2) 以下のディレクトリに移動。

~/Library/Thunderbird/Profiles/<name>/Mail/<pop server>/
 
<name>
 ⇒ Thunderbirdが勝手に付けた名前(ヘンな記号の羅列.default とかになってると思う)
 <pop server>
 ⇒ popサーバーの名前

(3) このディレクトリの中に、Inbox というファイルがあるはずなので、それを複製し、別の名前にする。inbox_copied とか。

(4)  Thunderbirdを起動する。左側の、フォルダが表示されるカラムに、inbox_copiedという名前のフォルダが見えるはず。
 そのフォルダを選択してみる。見れなくなっていたメールも読めるようになっているはず。
 inbox_copiedの msf ファイルが無いということで、Thunderbird が自動的に生成してくれたのだ。

(5) 壊れていたメールが復活したのを確認したら、再度 Thunderbirdを終了させる。

(6) さっきのディレクトリに移動。
inbox_copied に 対応する inbox_copied.msf が出来ていることを確認する。
Inbox と Inbox.msf を別のディレクトリに移す。念のため、一応捨てずにとっておく。
inbox_copied を inbox に、
inbox_copied.msf を inbox.msf に名称変更する。

 (7) 再度、Thunderbirdを起動する。これでもとの状態に復元できた。

このトラブルのせいで、何時間も使ってしまった。
導入するのに余計な時間と労力を使わされたからには、それなりの働きをしてもらわないと。いざという時役に立ちませんでした、なんて事になったら暴れるぞ。
 

2011年8月19日金曜日

Evernoteでマルチアカウント(続き)ー 共有する

Evernote のアカウントを新しく作ったら,そこに文献管理用のノートブックを作る.

そして,クライアントソフトの「共有」タブをクリックして,作ったノートブックを選び,古い方のアカウントのメールアドレスを入力して設定を完了.

古いアカウントのメアドにメールが届くので,ブラウザ上の Evernote を古い方のアカウントでサインインした状態にしておいて,メールにあるリンクをクリックする.これで受ける側にも共有したノートブックが表示される.
リンクされたノートブック(Linked Notebooks)というのが左欄にでる.

クライアントソフトの方でも同じように閲覧できるようになる.
クライアントソフトの「共有」タブをクリックすると,左欄に共有したノートブックが表示される.これを右クリックすると設定画面が出るので,データをローカルに保存するか,や同期の頻度を設定する.

なお,無料アカウントの場合,共有したデータの編集はできない.有料ならできるらしい.

Evernoteでマルチアカウント

集めた文献の管理を Evernote でやることにした.

これまでやってきた, PDF を Google Document にアップして階層タグで管理する方法も捨てがたいが,文献にコメントを付けたり,それを閲覧したりする方法が面倒なので,収集した文献の活用がすごくやりにくい.

逆に Evernote はタグを階層構造にすることができないので(有料版なら可?),雑誌名のタグや分野のタグが混在してすっきりしない.しかし,書誌データとPDFを一つのノートにまとめることができ,さらにコメントも楽々追記できるという使い勝手の良さは,これぞ待ち望んでいたもの,という感じ.

さて,となると問題は文献データの移行.

延々と単純作業を繰り返すのは仕事に差し支えるので,他人に請け負ってもらいたいのだが,そうなると自分の Evernote アカウントを使わせることになるが,それだと文献以外のデータも見られることになってしまうからウマくない.

ウェブブラウザで Evernote にアクセスするだけならアカウントの切替には何の問題もないが,僕は OS X,Windows ともに Evernote のクライアントソフトを使っているので,このソフト上でアカウントを切替えたい.

しかし,このソフトはマルチアカウントに対応していないようだ.

そこで調べてみたところ,『人力検索はてな』「Evernote の Windows版クライアントを使っています。
複数アカウントを簡単に切り替えたいのですが、便利なツールありませんでしょうか?」
というのを発見.

Macだと Evernote Account Switcher(http://www.jazzaround.net/eas/)がある


Windows だとツールを使う方法とバッチファイルを使う方法があるようです。

1.ツール
Evernoteアカウント切替くん 
http://free-soft.justit.us/

2.バッチファイル:
:::::::::::::::::::::::::::::::::ここから:::::::::::::::::::::::::
set U=ここにユーザーネームを入力
set P=ここにパスワードを入力
reg add "HKEY_CURRENT_USER\Software\Evernote\Evernote" /v "LastLogin" /t "reg_sz" /d "%U%" /f
if exist "C:\Program Files (x86)" (
start "" "C:\Program Files (x86)\Evernote\Evernote\Evernote.exe" ENScript showNotes /q "*" /u "%U%" /p "%P%"
) else (
start "" "C:\Program Files\Evernote\Evernote\Evernote.exe" ENScript showNotes /q "*" /u "%U%" /p "%P%"
)
::::::::::::::::::::::::::::::::ここまで::::::::::::::::::::::::::::


バッチファイルの方はEvernoteが起動中だと切り替えできず、登録したパスワードも見えてしまうので、
私はツールの方を使ってみています。

(このような便利なソフトを公開されている作者様には大変申し訳ないのですが)
なお、フリーソフトにパスワードを管理させるのは不安ですので、念のためファイアウォールで監視させています。
今のところパケットが送信されることもありません。

まずは,Mac用に Evernote Account Switcher を落として動かしてみた.Evernote Account Switcher を起動する前に,以下のフォルダのバックアップを取っておく:
  ~/Library/Caches/Metadata/com.evernote.Evernote

Evernote Account Switcher を起動するとアカウント情報などを聞かれるので入力して,設定完了.あとは Evernote のクライアントソフトが起動中であっても,Evernote Account Switcher でアカウントが切替えられる.

うむ.これはいい.これで,新しく作った Evernote のアカウントを教えて作業をしてもらえば問題ない.

切替えたとき,以前閲覧していたノートブックやノートが選択されていないのは,ちょっと残念.