niszetの日記

アナログCMOS系雑用エンジニアが頑張る備忘録系日記

OOXML

(Pandoc) docx 出力の場合、BlockQuote 中の HorizontalRule は別段落になる

コード読んだけどまだよくわかってない。 HRはそもそもBlock要素なんですが、ParaなどのBlock要素は正しくBlockQuote中に取り込まれるので、段落要素であることが原因ではないとはわかっていますが、コード見てもまだよくわかってません。docx形式で出力する…

(Pandoc) VerbatimChar文字スタイルはスタイル一覧に表示されないが、これはSourceCode段落スタイルのリンクスタイルなのであった。

linkスタイル死すべし慈悲はない 以前からPandocのdocxのスタイルについて調べていましたが、最近はHaskellのコードも読んでいるので以前よりもさらにわかってきました。 以前… niszet.hatenablog.com いつかちゃんとまとめたいですね…。 でもそれは大変なの…

(Pandoc)Docx/ODT Writer中の文字コードの確認処理

時間を無駄に溶かしたのでメモをする。 はじめにPandocじゃない話を書いておくと、Rは"\uxxxx"でunicode文字を入れることが出来る。"\u2603"とかやれば☃だ。大文字のUを使えば、4桁で済まない文字も入れられるし、上4つを0で詰めておけば先と等価な文字コー…

(Pandoc)Span記法を使うとdocx出力にコメントを残すことが出来る

誰得だよ… マニュアルの何処にも書いてないと思いますが、docxに出力するときにSpanに特定のclassを与えることでWordのコメント機能を使えるということに気づきました。 入力にこんな感じの文を与えてdocxに変換します。 aaa[bbb]{.comment-start}ccc[ddd]{.…

(R/OOXML)namespaceがないとw:を入れられない…

という気付きが結構前にあったらしい… 下書きのまま放置していたので、忘れてしまわないうちに書く。 stylexパッケージ、docxのstyleをR上で加工しやすくしようと思って作っていたのですが、docxファイルを記述しているOOXMLは、w:nameのようにw:のnamespace…

(OOXML/Word)w:themeFillTint とか w:themeFillShade とか(メモ)

現れたり消えたりするタグ theme系の情報の取得はちょっと癖がありますね。ついこの間テーマ色を使った方が良いと書いたとはいえ…。 テーマの色は、こんな感じで色選択で出てくるときに上の方に出てくる色のことを指しています。 で、縦方向に段々と色が濃く…

(OOXML/MS Word)各項目で取り得る値の対応を見る(メモ)

MS Word上で値を変更して、xmlから値を引き抜いてきて表示値との対応表を作る簡単なお仕事 各項目ごとにまとめないといけないのでキリがありませんね、これ。 でも、やっていきです。今はpPr下のshdの値をまとめています。特徴的な名前なのでどこかに定義済…

(Word/OOXML)Wordはテーマの色を使うと便利そう。テーマ色の内部での値について。

テーマを変更するだけで同じ設定した箇所は一括で変更されるので。 OOXMLの解析をしています。OOXMLのタグ構造は何かしらの資料で見ればいいものの、実際に何が値として設定されているかは実際に作ってみてみないとわからないなーという感じなのです(何か方…

(R)Wordのスタイルを変更するRのコードをパッケージ化した

忘れないうちにどんどんやる 先日書いていたコレ、 niszet.hatenablog.com ある程度形になったので、パッケージ化しました。 github.com しかし、現状では使い方がわからないと思うので、usageというか、使用例をいくつか書く予定。内部の関数名などは今後大…

(OOXML)w:pPr/w:spacingのw:beforeは表示値の20倍の値(メモ)

大きすぎませんかね…? 段落スタイルで、段落の前後にスペースを取ることができます。この値はMS Word上での表示値の20倍の値になっています。480が入っていたら24ptということです。 これも実際に動かしてみないとよくわかりませんね…。

(ooxml)w:sz の値はMS Word上の文字サイズ(pt)の2倍の数字が入っている(メモ)

こちらもメモレベルの話。 Wordがどのようにooxmlを解釈しているかはooxmlを直接書き換えて結果がどうなるかを見ていく必要がある。ドキュメント化されているものもあるだろうが、探すよりも見たほうが早い。xmlとしては箱の形は決まっているが、値をどのよ…

(R)ooxmlでxml2::xml_set_attrする場合はw:をつける(メモ)

私的メモがしばらく続きますが… ooxmlで書かれたdocxファイルのスタイルの一括修正が面倒なのでRでやろうと思ってコードを書いています。基本的にはxml2パッケージを使う。あとはofficerの関数を一部使わせてもらう形(処理そのものはofficerと異なるので全…

(Word/ooxml) customStyleでないスタイルはWordの保存時にStyleIdが変更される(メモ)

これはおそらくWordの仕様 PandocのWordのテンプレートファイルを調べています。 Pandocが生成する、reference.docxには何点か注意しないといけない点があり、そのうちのひとつがStyleIdがWord文書保存時に変更されてしまう、というものです。これはそのスタ…

(R) xml2::xml_structure() が便利だった

コミケが終わったので技術書典に向けて走り始めます。 次回は無謀にもWordのスタイルの話をしたいと考えていますが、そのためにはまずWordをxmlに分解してその中身を見ていかねばなりません。 私が一番手馴れているのがR言語なので、xml2パッケージを使って…

docxのstyle id とstyle nameの問題

ようやく問題が何かがわかってきました… 半年くらい前からK4氏が見つけたこのIssueが解決しておらず、 github.com 春の技術書典で話聞いたときはふ~んって思ってましたが、掘り下げてみるとこれは結構厄介な問題でした。ので、とりあえず議論に参加してみた…

(OOXML) 行番号 (メモ)

今日もunzipして整形の日…。 Wordには行番号を振るという、いつ使うのかわからない機能がある。これはSection毎に振られるようで、w:sectPrの中に書かれているw:lnNumTypeが対応するようだ。行番号を振らない場合はこの行が存在しない。 <w:sectPr w:rsidR="000A7504" w:rsidSect="005518E1"> <w:pgSz w:w="11906" w:h="16838"/> </w:pgsz></w:sectpr>

(OOXML) ドロップキャップ (メモ)

そもそもそんな機能があったのね 本文のはじめの文字を大きな文字にして表示することをドロップキャップというのですね。Wordでもこの機能があり、これを例のようにooxml部分を抜き出すとこんな感じだった。 <w:p w:rsidR="00703FE7" w:rsidRPr="00703FE7" w:rsidRDefault="00703FE7" w:rsidP="00703FE7"> <w:pPr> <w:keepNext/> </w:keepnext/></w:ppr></w:p>

(OOXML) 囲み文字(メモ)

いつもの。 <w:bookmarkStart w:id="0" w:name="_GoBack"/> <w:p w:rsidR="00C73A63" w:rsidRDefault="00C73A63"> <w:r> <w:fldChar w:fldCharType="begin"/> </w:r> <w:r> <w:instrText xml:space="preserve"> </w:instrText> </w:r> <w:r> <w:rPr> <w:rFonts w:hint="eastAsia"/> </w:rPr> <w:instrText>eq \o\ac(</w:instrtext></w:r></w:p></w:bookmarkstart>

(OOXML) 囲み線(メモ)

いつもの。 抜き出してみた。 <w:p w:rsidR="00C73A63" w:rsidRPr="00C73A63" w:rsidRDefault="00C73A63"> <w:pPr> <w:rPr> <w:bdr w:val="single" w:sz="4" w:space="0" w:color="auto"/> </w:rPr> </w:pPr> <w:r w:rsidRPr="00C73A63"> <w:rPr> <w:rFonts w:hint="eastAsia"/> </w:rfonts></w:rpr></w:r></w:p>

(OOXML) 蛍光ペンの色(メモ)

いつもの。 抜き出してみる。highlightで指定しているようだ。 <w:p w:rsidR="00C73A63" w:rsidRDefault="00C73A63"> <w:r w:rsidRPr="00C73A63"> <w:rPr> <w:rFonts w:hint="eastAsia"/> <w:highlight w:val="yellow"/> </w:rPr> <w:t>い</w:t> </w:r> </w:p> rFontsのhintってやっぱり必要なんだろうか。optionalで指定するにしても、毎回やるのは面倒くさいのではという気持ち…。rmd2docxsupでどう実装す…

(OOXML) 文字の網かけ(メモ)

必要最小限の構成が分からん…。 ひとまずいつものように書いてunzipして抜き出してみるとこんな感じ。 <w:p w:rsidR="00360B6D" w:rsidRPr="00E40D32" w:rsidRDefault="00360B6D"> <w:pPr> <w:rPr> <w:shd w:val="pct15" w:color="auto" w:fill="FFFFFF"/> </w:rPr> </w:pPr> <w:r w:rsidRPr="00E40D32"> <w:rPr> <w:rFonts w:hint="eastAsia"/> </w:rfonts></w:rpr></w:r></w:p>

(OOXML) ルビ周りのメモ

OOXMLは仕様が良く分からないので掘り下げていく… さて、RMarkdownからWord文書を作るにあたって、まだ色々とWordの機能を使いこなせていませんでした。今年はOOXMLの要素を少しずつ解読していこうと思っています。とりあえずルビから。 適当にWord上でルビ…