テクデップ(Techdep)

コンピュータ、プログラミング、DTP(InDesign)に関する備忘録

PerlスクリプトのExe化(Active Perl 5.16.3)

 PerlスクリプトをExe化して(実行に必要なライブラリをまとめてくれる)、Active PerlがないWindows環境下でも実行できる様にしてくれるPerlパッケージャ(pp)に関するエントリ。Perlを扱うエントリ関連で時折見かける定番めいたもの。
 PAR::Packerなるモジュールを導入すればお終いであるけれども、筆者と同じ様な環境(Active Perl 5.16.3)で導入した事例を見つけられなかったので書いておく。

必要なモジュールを入れる。

 いきなり、PAR::Packerを導入したいのであれば以下のコマンドを実行すればよいが、

cpan isntall PAR::Packer

 大抵の場合、必要なモジュールがないと警告が出てインストールに失敗するので、最初にPAR::Packerが必要とするモジュールをcpanなりppmなりでインストールする。

  • Getopt::ArgvFile 1.07
  • Module::ScanDeps 1.15
  • PAR 1.005
  • PAR::Dist 0.22
  • Win32::ShellQuote 0.002
  • Win32::Exe 0.17

 実行コマンドは、

ppm install [module_name]
 或いは、
cpan isntall [module_name]

インストール

 これで再度、下記のコマンドを実行する。

cpan isntall PAR::Packer
 これでもモジュールが足りないと出たら適宜対処すること。

インストールの確認

 以下のコマンドを実行して、下記の様に出力されれば導入は無事成功した。

$ pp
Set up gcc environment - 3.4.5 (mingw-vista special r3)
C:\Perl\site\bin/pp: No input files specified

 単純な使用方法は以下の通り。スクリプトの実行に必要なパッケージなどを全部自動的に探して、一つのファイルにまとめてくれる(出力されるファイルのサイズは単純なスクリプトでも数MBになる)。

pp -o [output] [input]

参考リンク

PAR-0.75(Perldoc)

字割りの自動化

 InDesignで見出しや柱の字割りを実現するとしたら、
 

  1. 文字後のアキ量
  2. 字送りの設定
  3. スペースの挿入
  4. 字取り

の四つで実現できようか。何れの手段にせよ、手作業であれば見落としによる適用漏れや作業ミスなどが発生しうる。
 これを防ぐためには自動化が一つの有効な解決策であるかもしれない。その実現手段として、スクリプトという手段ももちろん間違いではないけれども、「正規表現スタイル」と「文字スタイル」とを利用すれば、スクリプトを持ち出さずとも字割りの自動化ができる。今回はそれを紹介したい。
 

注意

  • InDesign CS6(Windows版)で動作を確認。
  • 基本篇では正規表現について多少の解説を入れるが、応用篇では正規表現について一通り理解しているものとして、細かい解説は省略して話を進めさせていただく。
続きを読む

InDesignの文字組アキ量と行頭における始め括弧類の組方

 InDesignの文字組みアキ量設定による段落1字下げ - なんでやねんDTPで解説されているものの二番煎じであるが、行頭の始め括弧類について今日は考えたい。
 今日々、多くの書籍は段落行頭を字下げする組版、それも本文一字分を下げる組版である。この段落行頭における字下げであるが、始め括弧類が行頭に来たときは少し注意が必要で、行頭における始め括弧類の組方として三通りにわけられる。

  1. 段落行頭:全角二分下げ/折返行頭:二分下げ
  2. 段落行頭:全角下げ/折返行頭:ベタ
  3. 段落行頭:二分下げ/折返行頭:ベタ

f:id:seizo_igawa:20140902230824j:plain

 どの組方を採用するかは自由であるけれども、一般的には(1)の組方は雑誌や新聞を中心に採用されており、(2)は一般書籍で広く採用されており、最後の(3)は小説といった文藝で最も広く採用されている。これらの組方が本文中に混在させないのが、行頭における始め括弧類の組方の基本。
 
 さて、ここで漸く本題に入れる。InDesignでは文字組みアキ量が既定では14種類あるが、自動字下げする設定と自動字下げしない設定とがあり、各設定において行頭の始め括弧類がどう組まれるのかを見てみたい。また、行頭の字下げを実現する方法としては、原稿の段階でテキストデータとして全角スペース「 」が挿入される場合と、DTPソフトウェアの段階で自動字下げする場合との二つが考えられるので*1、今回はその二つの場合においても比較する。尚、比較に利用するのはInDesign CS6(Windows版)である。

 比較結果としては以下の様になって、行頭における始め括弧の組方として妥当なものは○を、妥当でないものは×とした。△については、文字組版を解説する書籍によっては是とすることもある組方である(実際にお目にかかった経験はない……)。
 適切な組方は設定数の半分にも満たない有様である。テキスト段階で全角スペースがあるのに文字組アキ量設定で自動字下げする場合と、その逆の場合とにおいては、どれも不適切な組方となってしまったが、それに当てはまらない場合でも不適切な組方が結構あることがよくわかる*2

始め括弧類の字下げ量(テキストで行頭に全角スペースを挿入しない場合)

文字組みアキ量 段落行頭 折返行頭 評価
行末約物半角 ベタ ベタ ×
行末受け約物半角・段落1字下げ(起こし全角) 全角二分 ベタ ×
行末受け約物半角・段落1字下げ(起こし食い込み) 半角 ベタ
約物全角・段落1字下げ 全角 半角
約物全角・段落1字下げ(起こし全角) 全角二分 半角
行末約物全角/半角・段落1字下げ 全角 ベタ
行末受け約物全角/半角・段落1字下げ(起こし全角) 全角二分 ベタ ×
行末受け約物全角/半角・段落1字下げ(起こし食い込み) 半角 ベタ
行末約物半角・段落1字下げ 全角 ベタ
約物全角 半角 半角 ×
行末受け約物全角/半角 ベタ ベタ ×
行末句点全角・段落1字下げ 全角 ベタ ×
行末句点全角・段落1字下げ(起こし全角) 全角二分 半角
行末句点全角 ベタ ベタ ×

始め括弧類の字下げ量(テキストで行頭に全角スペースを挿入する場合)

文字組みアキ量 段落行頭 折返行頭 評価
行末約物半角 全角 ベタ
行末受け約物半角・段落1字下げ(起こし全角) 二倍 ベタ ×
行末受け約物半角・段落1字下げ(起こし食い込み) 二倍 ベタ ×
約物全角・段落1字下げ 二倍 半角 ×
約物全角・段落1字下げ(起こし全角) 二倍 半角 ×
行末約物全角/半角・段落1字下げ 二倍 ベタ ×
行末受け約物全角/半角・段落1字下げ(起こし全角) 二倍 ベタ ×
行末受け約物全角/半角・段落1字下げ(起こし食い込み) 二倍 ベタ ×
行末約物半角・段落1字下げ 二倍 ベタ ×
約物全角 全角 半角
行末受け約物全角/半角 全角 ベタ
行末句点全角・段落1字下げ 二倍 ベタ ×
行末句点全角・段落1字下げ(起こし全角) 二倍 半角 ×
行末句点全角 全角 ベタ

 実際の組版結果については外部リンクを参照(各設定ごとの行頭における始め括弧類)。
 ※ファイルをGoogleドライブに移管。(H26-09-09追記)
 ※無料版ではPDFをはてなブログに置けないので、筆者が放置気味のウェブサイトを一時的にファイル置き場とした。

 InDesignの既定の文字組みアキ量設定は評判が悪いが、行頭の始め括弧類の組方から見ても、よろしくないことがよくわかった。やはり、利用する前に色々と調整しないといけない(この調整については後日時間があれば書きたい)。

*1:余談であるが、テキスト原稿の段階で全角スペースを挿入するやり方でも、行頭に始め括弧類が来たときは全角スペースを挿入しない人も居る。経験上、小説を書く人に多い。さらに正確に述べると、台詞を示すカギ括弧の類が行頭に来たときのみ、全角スペースを挿入しないという、えらくちぐはぐなやり方がほとんどである。

*2:先述の脚注の様に行頭の全角スペース挿入の方式が未統一状態であると、どの設定を適用しても不適切な組方になるから、編集の段階で行頭の全角スペース挿入に対する整理が必要になる。

Adobe Reader XIのオンラインサービスを無効にする

 Adobe Reader XIを起動すると、毎回々々次の様なダイアログが出る。これはAdobe Reader XIの関連オンラインサービス(acrobat.com関連サービスとも)の一つ、Adobe SendNowの機能らしい。

f:id:seizo_igawa:20140901215443p:plain

 このダイアログは起動してから時間差で表示されることもあり、この機能を利用することがない筆者としてははっきり言って邪魔であった。それで無効にする方法はないかと環境設定を見廻すもそれらしき項目がない……。調べてみたところ、無効にする方法がAdobeの公式ページに掲載されて居たが、
 

  • 複数のコンピュータにインストールする場合(Adobe Customization Wizardを使用する場合)、予め無効にできる。
  • インストール済みの場合はレジストリを編集して無効にする。

 
の二通りしかなく、既にインストール済みであると後者の方法で無効にするしかない。
 レジストリ編集については、引用の通り単純にレジストリキーの追加するだけである。

以下のレジストリキーにアクセスします。Workflows キーが存在しない場合は作成します。

  1. HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\11.0\Workflows
  2. Workflows キーに bEnableAcrobatHS という DWORD 値を追加します。値は「0」にします。
Adobe Reader のオンラインサービスを無効にする方法

 この設定を適用させるにはOSの再起動は必要はなく、アプリケーションの再起動だけでよい。尚、この機能を再度有効にする場合は、上記の追加キーを「1」にするか、或いはキーごと削除する。

cronで起動したスクリプトの出力ログの文字化けとその対処

結論から書くとターミナルの環境変数の引継ぎがされないため。

使用中のCent OSで、rsyncを用いたバックアップスクリプトを定時に動作させている。このときにどの様なファイルが転送/削除せられたかを把握するために、ログを出力する様にしていた(単純にrsyncコマンドに-vオプションを付加しただけであるが)。

しかし、出力されたログを見ると、ものの見事に文字化けが発生しており、これでは全くログの意味をなさない状態であった。

スクリプト自体の文字コードがShift JISであったため、それが原因かと疑って、OS既定の文字コードに保存し直すも、結局文字化けが再発した。

この原因は至極単純なことであって、環境変数の引継ぎがないためである。ログインしたシェルでは通常文字コードは次の様に表示される。

$ echo $LANG
ja_JP.UTF-8

しかしながら、cronで起動された場合、この環境変数LANGが設定されない状態であるため文字化けが発生する様である。

回避策

この現象を回避するためには、スクリプト冒頭に、

export LANG=ja_JP.UTF-8
と記述しておけばよい。

文字コードの類は嵌ると本当に地獄である……。