ditamap内データのエレメントデータについて

  • 3rd 3月 2016
  • DITA

FrameMakerを利用したDITA案件が増えてきている。
1点今後のためにメモ。

ditamap内に定義される各種データに、2バイト文字が利用されることがある。
メタ情報の設定場所なので多々でてくる。

ditamapのデータは他のFMデータと同じようにしてテキストデータを取得できるのだが
ditamapデータはFMに投げ込まれた時にテンプレートとEDDが紐付いていることを
忘れてはならない。

ある要素の内容についてF_ApiGetTextなどを利用して取得するのだが
ditamap用のテンプレートで各要素に設定されているフォントが
2バイト文字に対応していない場合、プログラム側でどうやって
処理しようとしても必ず文字化けとなってしまい正しい値を取得できない・・・。
また、取得できたとしてもEDD側で要素に対してPrefixが設定されている場合
予定なテキストデータまでくっついて取得できてしまう。

ditamapに定義されているデータを表紙などに利用しようとする場合に
ditamapにはテンプレートとEDDが強く関連していることを念頭に
おいておかなければならない。
単なる各種ditaデータへのパスが定義されているMAPデータではないということ

FDK Reference … dita

  • 10th 2月 2016
  • DITA

FrameMaker12 以降 ditaという点ではかなり頑張ってきたFrameMaker
カスタマイズ用にFDKも公開されており活用させていただいています。

が…マニュアルが英語なのは仕方がないと思っていますが
dita関連のメソッドやプロパティなど利用できるのであれば
FDK Referenceにはしっかりと記述して欲しいものです。

いくつかのプロパティやメソッドはReferenceには書かれていないものの
実際にはAPIが用意されていました…。

Adobeさんにはドキュメント類のアップデートもお願いしたいと思います。

FrameMaker DITA 表の列幅

  • 2nd 2月 2016
  • DITA

FrameMakerで用意されているDITA用構造化アプリケーションだが、
FMファイル上で指定した表幅をそのまま維持したい場合、つまり
表列幅の実サイズをdita、XMLに書き出したい場合は
デフォルトで用意されている構造化アプリケーションのRWルールを
書き換える必要がある。

Rwルールファイルの最後の方に以下の一文があるので
これをコメントアウトする。

writer use proportional width;

これをコメントアウトすることで
tgroup要素直下のcolspec要素のcolwidth属性の属性値に
実サイズがインチで出力される。

※ インチ以外の出力は無理…。

デフォルトの場合は表幅に対する比率がcolwidth属性に指定されることになっている。
pgwide属性を利用することが想定されているということ。

2016.02.02 追記

dita側でcolspec要素を設定して各列の幅を指定するも、テンプレートに充てて構造化データとしてレイアウトされると
colspec要素が邪魔となって表のレイアウトが崩れてしまう…。RWルールでcolspecをdropするとエラーも崩れもなく
表レイアウトされるが、幅の指定がpgwide頼みとなってしまい列幅が均等になってしまう…。解決先を模索中…。

Oxygen XML WebApp

  • 21st 1月 2016
  • DITA

ブラウザベースのXML編集に関してはCKEditorやJQueryを利用したモジュールで構築していることが殆どでしたが
oXygen XML WebAppを利用したシステム構築を検討中です。

demo はこちらです。
https://www.oxygenxml.com/webapp-demo-aws/app/oxygen.html

SDKも公開されているので、細かい部分を調整してかなり便利で安定したEditorに仕上げられそうです。
編集中のツリー表示ができればさらに良いのでこのあたりはJQueryを利用してモジュールを組み込みたいですね。

oxygen

PowerPoint VSTO

PowerPoint VSTO 開発

プロジェクトの初期設定や開発に際しての入り口がプラグイン開発は難しいところですが
取っ掛かりが見つかるとリファレンスを見ながらある程度スムーズに開発は
すすみます。Excel,WordにしろVSTOを利用した開発案件の際には是非一度お声掛け
いただければと思います。

 

Xpath ロケーションパス(開発メモ)

<p>aaaaaaaaaaaaaaaa<graphic src=”インライン用画像”/>bbbbbbbbbbbbbbbbb</p>
<p><graphic src=”通常画像”/></p>

上記のようなXMLがあった場合にXSLTスタイルシートでPタグ中のテキスト部とgraphicタグ部を
分割して処理させる。しかし、同じグラフィック要素でもインライン用の用途と通常画像用の
グラフィック要素が存在している。

この場合、スタイルシート側では同じgraphicテンプレートでインライン用の処理と
通常用の画像処理を定義してやらなければならない。

この分岐をするためにXPath で ロケーションステップを書く時に以下の
工夫が必要だった。

following-sibling::text()
preceding-sibling::text()

この書き方でgraphicタグの前や後ろにテキストノードがあった場合は
インライン用の画像処理をするという命令を定義した。しかし、
following-sibling::text()はうまく動作するものの、なぜか
preceding-sibling::text()は動作しない・・・。(プロセッサはXerces)

<xsl:when test=”parent::node()/child::text() != ””>
この定義でまかなおうとするがこれでもダメ
<xsl:when test=”normalize-space(parent::node()/child::text()) != ””>
前後のスペースをトリムしたらうまく動作する。なぜ・・・。苦労した・・・。

FrameMaker12 合成フォントのバグ

FrameMakerでは構造化文書において1バイト文字と2バイト文字が混ざって使われている場合、
合成フォントという定義を利用して1バイトも時にはArial、2バイト文字にはMSゴシック
といったようにフォントを使い分けることができる便利な機能がある。

FrameMaker7でもこの機能が利用できるのだが、構造化文書を利用する場合
つまりXMLからFMデータを自動で生成する(構造化アプリケーションを利用)場合、
2バイト文字に正しくフォントが適用されないというバグがあった。
これに対する対応情報はAdobeのサイトでも公開されていた。

さすがにFrameMaker12ではこのバグが直っているのだと思い込んでいたが
全く同じ状況が生じた・・・。ずっとバグを引きずっているよう。

ただおそらくこれが発生するのは特定の条件が揃った場合のようで
すべての状況では生じないよう。
少なくともFM12で1から作成した構造化アプリケーション
の場合はこの問題は発生しない。

現在対応中の案件でこれが発生!

このバグ回避用のプラグインを開発しました。
この点でお困りの方はご相談下さい。

FrameMaker12 目次項目に文字書式が適用されているとリンクしない

  • 3rd 2月 2015
  • DITA

DITAデータを統合文書としてFM文書へとコンバートしFrameMakerの目次作成機能を利用して目次を作成している。

目次項目のレイアウトはFrameMakerのリファレンスページに設定した内容に基づいて出力される。
目次項目のページ番号が表示される部分にのみ文字書式を設定してある場合、PDFを生成した際に
文字書式が設定されている部分にはリンクが設定されない。

今回の場合はページ番号部に設定したいてため、目次内容(目次テキスト部)にはリンクが設定
されているものの、ページ番号部分にはリンクが設定されないという状況が生じた。

重篤な問題のため早期解決をお願いしたい所…。

WS000158

※ 上記の図でおわかりになるとおり、枠線がない部分はクリックしてもリンクが効かないという状況

DITAで運用した際に、目次項目テキストにkeywordなどのタグが設定される可能性がある。
FrameMakerの標準仕様ではDITAのkeywordタグには自動的に文字書式が設定される。
この場合も文字書式が設定されるためPDFではリンクが設定されない。

FrameMaker12 表内の上付き文字…

FrameMaker12の表レイアウトについての注意点

添付の図のように1つの行において上付き文字が設定されている場合
該当行のベースラインがどうしてもズレてしまう。

WS000148

下付き文字の場合も厳密にゆうと若干ズレがあるのかもしれない。
ちなみにInDesignでやってみるとこのようなズレは生じない。

FrameMakerの利用用途からすると大き目の表を多用することが考えられ
表内に単位系の文字を利用することは絶対。

Adobe様側で早めに対策について検討していただけることを願う。

ditamapからFrameMaker統合文書作成時の注意

  • 21st 1月 2015
  • DITA

FrameMakerにてDITAを運用する中で、ditamapファイルから統合文書を作成する場合がある。

この場合、FrameMakerではcompositeつまり統合文書等の構造化アプリケーションに設定された
テンプレートが利用される仕組みになっている。

このditamapから統合文書変換時にテンプレートは正しく適用されるが、
RWルールは適用されない。また統合文書用のテンプレートがconceptや
topic,taskなどが利用していたテンプレートとカラー定義やコンディショナルの
設定が異なる場合にすべてエラーとして認識しブックエラーが多数出力される。

ある程度の大きさのditamapを統合文書に変換する際にはエラーの出現により
数十分間作業ができなくなることがあるので注意が必要。
また、ditamapを統合文書に変換する際にはすべての構造化アプリケーションの
適用がされるよう改善されることを望みたい。(主にRWルールの適用)