niszetの日記

細かい情報を載せていくブログ

本を入れる段ボールを買った

本のサイズとぴったり合う段ボールに本を入れていく

いろいろあって、身動きできるように身の回りの整理をしています。今週は散らかっている本をまとめてました。 今までAmazonの空き箱を使っていたのですが、Amazonで調べると本のサイズに合う段ボールが売られていたので試しに購入してみたところ、丁度良いサイズで(当たり前ですが)本が収まりよく入っていきます。

とはいえ、最近大量に本を購入してしまったのでいくらかは処分コースです。それの選別とかがツライ…。しかしやらねば終わらないので、やっていきます。

近くのホームセンターで良いサイズのモノを探したのですが、ありませんでした。値段はそちらの方が半分以下になるのですが、収まりの悪い状態だと運ぶのも大変なので…。

他にも色々課題があるのですが、まぁひとつひとつやっていくしかありませんね。頑張ろう。

6月の目標

ひとまずの目標。今週中に再度更新する見込み

はじめる前系

  • 統計検定に向けての勉強
  • 宅建の勉強をはじめるか検討

はじめる系

  • Kaggle本を読み始める
    • スタートブック
  • Scheme本を読み始める

つづける系

5月の振り返り

全体としてはまずまず…か?

  • 勉強時間をちゃんと?つけて目標を達成した
    • 目標が低すぎる気もするが、まずは続けることから
  • Isabelleのセミナーを受けはじめた
    • 復習が大事なので記録が残る形でやっていく
  • Redmine.Tokyoに参加
  • ブログは17件
    • Pandocが8件
    • 読書感想文が3件
  • 本を読んだ
    • マンガも含めると18冊。
    • 技術書は以下の6冊(前の月から読んでいて5月中に読み終わった者も含む)
    • 読了扱いにしているものは現時点でこれ以上読めないというところに至ったものも含む。
      • 論理と集合から始める数学の基礎 は演習を6月中に解く
    • マンガを読むペースが落ちているのでもうちょっと読むべき…。
  • 以下に手を付け始めた
    • 生活関係あれこれ
    • LaTeX
    • EPUB3
    • パーサ

6月は毎週目標と成果を確認したい。5月は1週間やる気が出ない週があったので、そのくらいのつもりで目標を立てる(ずっと全力疾走は出来ない)

(Pandoc) デフォルトファイルの項目名を突き合わせる作業

コードを読むのが一番。

Pandoc 2.8からデフォルト設定をまとめたファイルを扱うことが出来るようになりました。これについては去年のアドカレにてsky_y氏ががっつりまとめていますのでそちらを参照してください。

qiita.com

しかし、この記事でも言われていますが、項目名がオプション名と必ずしも一致していないということなので、調べました。具体的には現時点のソースコードgrepして目検しながらエクセルに貼りつけるお仕事です。仕事じゃないのに何故こんな苦行を私は…?

今後のことも考えると自動化しておくと良さそうですね。

ソースコードについて、オプション周りはこの辺りで処理してそうです。

github.com

また、コマンドラインオプションはこの辺りで処理しているので、これを見ました。

github.com

コマンドラインからの入力できるオプションとデフォルトファイルのキー名について列挙した表は次のようになります。違いがある箇所はコメントをつけています。また、個別にサブオプションがあったりしますが、これは公式のマニュアル中にある、デフォルトファイルの記述例を見てみてください。実際にはこれらの追加のオプションは元々のコマンドで省略可能なオプションを明示的につけるときの挙動のようですので、サブ項目があるかどうかは各オプションの説明を見てみてください。デフォルトファイルの記述例と対比して確認すればわかると思います(確認が面倒なので投げました

また、上記のとおり目視でチェックしているので、抜け漏れや間違いもあるかもしれません。何か気づいたらご連絡ください。一応抜き取りでいくつかはソースコード上で一致を確認していますが、実際に動作して確認したわけではありません。

補足として、cmd側でNoteとして書いてあるものは、対応するキー名が表の下部にあります。また、Noteと書かれている項目はデフォルトファイル中の項目にのみだけ現れます。例えばinput-fileがそうです。

省略記法 cmd入力1 cmd入力2 ファイルのキー1 ファイルのキー2 コメント
fr from read from reader read/readerで違いあり
tw to write to writer write/writerで違いあり
o output output-file output/output-fileで違いあり
data-dir data-dir
M metadata metadata
metadata-file metadata-file metadata-files 単数形はリストでなくても良い。
d defaults このファイルを指定するオプションなので対応する記述はない
file-scope file-scope
s standalone standalone
template template
V variable variables コマンドラインと単複が異なる
wrap wrap
ascii ascii
toc table-of-contents toc table-of-contents
toc-depth toc-depth
N number-sections number-sections
number-offset number-offset
top-level-division top-level-division
extract-media extract-media
resource-path resource-path
H include-in-header include-in-header
B include-before-body include-before-body
A include-after-body include-after-body
no-highlight スタイルにnoneを当てればよいのか?要調査
highlight-style highlight-style
syntax-definition syntax-definition syntax-definitions 単数形はリストでなくても良い。
dpi dpi
eol eol
columns columns
p preserve-tabs preserve-tabs
tab-stop tab-stop
pdf-engine pdf-engine
pdf-engine-opt pdf-engine-opt pdf-engine-opts 単数形はリストでなくても良い。
reference-doc reference-doc
self-contained self-contained
request-header request-headers コマンドラインと単複が異なる
abbreviations abbreviations
indented-code-classes indented-code-classes
default-image-extension default-image-extension
F filter filters コマンドラインと単複が異なる。typeとpathが子要素にある
L lua-filter 拡張子が.luaの場合に自動認識。
shift-heading-level-by shift-heading-level-by
track-changes track-changes
strip-comments strip-comments
reference-links reference-links
reference-location reference-location
atx-headers atx-headers
listings listings
i incremental incremental
slide-level slide-level
section-divs section-divs
html-q-tags html-q-tags
email-obfuscation email-obfuscation
id-prefix identifier-prefix コマンドラインと名前が異なる
T title-prefix title-prefix
c css css
epub-subdirectory epub-subdirectory
epub-cover-image epub-cover-image
epub-metadata epub-metadata
epub-embed-font epub-fonts コマンドラインと単複が異なる
epub-chapter-level epub-chapter-level
ipynb-output ipynb-output
bibliography bibliography
csl csl
citation-abbreviations ファイルにはないが、別の記法で対応できる。
natbib *Note4
biblatex *Note4
mathml *Note3
webtex *Note3
mathjax *Note3
katex *Note3
gladtex *Note3
trace trace
dump-args dump-args
ignore-args ignore-args
verbose *Note5
quiet *Note5
fail-if-warnings fail-if-warnings
log log-file
bash-completion ファイル側にはない
list-input-formats ファイル側にはない
list-output-formats ファイル側にはない
list-extensions ファイル側にはない
list-highlight-languages ファイル側にはない
list-highlight-styles ファイル側にはない
D print-default-template ファイル側にはない
print-default-data-file ファイル側にはない
print-highlight-style ファイル側にはない
v version ファイル側にはない
h help ファイル側にはない
*Note1 input-file input-files 入力ファイル名はコマンドライン上ではオプションナシ
*Note2 strip-empty-paragraphs deprecated Optionなのになぜか指定できる。"+empty_paragraphs" のextensionで使うべき。
*Note3 html-math-method plain, webtex, gladtex, mathml, mathjax, katex。Urlも指定できる。
*Note4 cite-method citeproc, natbib, or biblatex
*Note5 verbosity ERROR, WARNING, or INFO
補足 オプション名のあとに[=***]の形で指定が出来るものはデフォルトファイル中でもその名前で値の設定が可能

(Pandoc) ブロック引用の罠(?)

仕様がちょっとわかりづらいよね…

Pandoc方言のMarkdownではブロック引用を>で始まる行であらわすことが出来ます。

> 引用だよ

ちょっと気をつけないといけないのが、このブロック要素は改行を無視してしまうことです。例えば以下のような書き方をすると、引用だよ。この行は改行せずに続くよ。と1行で出力されてしまいます。

> 引用だよ。
> この行は改行せずに続くよ。

これを回避するには、間に空行を入れるか、>で始まる空の行を入れるかどちらかです。

> 引用だよ。

> この行は改行せずに続くよ。

か、

> 引用だよ。
> 
> この行は改行せずに続くよ。

ということですね。これはどちらの書き方でも別の段落扱いになります。

blank_before_blockquote というMarkdownの拡張のオプションがありますが、これは上の話の挙動は変えないようです。このオプションはmarkdownではデフォルトでONになってます。

pandoc.org

なお、Pandocの各ファイル形式でどのextensionが有効になっているか?を見るには、markdown形式を例にとれば下記のようにすれば一覧で表示されます。

pandoc --list-extensions=markdown

一覧で+のついているものが有効になっている、という意味です。

先のオプションは、こういう入力を想定していて、

前の行だよ
> この行は改行せずに続くよ。

デフォルト動作は

前の行だよ>この行は改行せずに続くよ。と続けて出力されます。-blank_before_blockquoteで改行され、前の行は通常の文、次の行はブロック引用となります(デフォルトではWord上のスタイル名はブロック)

あまりコレでハマらない気もしますが、一応記録を残しておきます。

(Pandoc) docx -> md への逆変換のメモ。メタデータについて

メタデータに関して

PandocによるMarkdownからdocxへの変換は、Titleなどのドキュメントの見た目やooxml中で定義されているタグがあるような項目だけでなく、任意のメタデータを出力ファイルに入れることが可能です。たとえば、RMarkdownで出力した場合はoutputがありますコレもメタデータに入っています。

しかし、逆にdocxファイルからMarkdownへ変換する場合は注意が必要で、メタデータについては一切が破棄されます。

しかし、Title等はYAML中に書き戻されていたのは第1回で見れていました。これは、PandocのDocx Readerがデータを読み取るとき特定のスタイルを使用している段落を対応するメタデータに置き換えているという処理をしているためです。

具体的には下記のコードにて。

github.com

以下、当該箇所の抜粋です。

metaStyles = M.fromList [ ("Title", "title")
                        , ("Subtitle", "subtitle")
                        , ("Author", "author")
                        , ("Date", "date")
                        , ("Abstract", "abstract")]

左がスタイル名、右がメタデータ名。この対応関係にあるものだけが変換されます。

他のメタデータも復元してくれると嬉しい気がする?どうかな?聞いてみようかな…?

(Pandoc) そもそも全ての記法についてDocxが対応しているわけではない件

先にこれを書いておけと…

ここ最近はdocx -> mdの変換(正確にはmdから作成したdocxをmdに戻して前後で同じmdとなるかの確認)をしていましたが、そもそもdocxのReaderは一部の記法について対応していません。

これは対応するソースのコメントを見ればわかります。

github.com

以下、抜粋。

* Blocks

  - [X] Para
  - [X] CodeBlock (styled with `SourceCode`)
  - [X] BlockQuote (styled with `Quote`, `BlockQuote`, or, optionally,
        indented)
  - [X] OrderedList
  - [X] BulletList
  - [X] DefinitionList (styled with adjacent `DefinitionTerm` and `Definition`)
  - [X] Header (styled with `Heading#`)
  - [ ] HorizontalRule
  - [-] Table (column widths and alignments not yet implemented)

* Inlines

  - [X] Str
  - [X] Emph
  - [X] Strong
  - [X] Strikeout
  - [X] Superscript
  - [X] Subscript
  - [X] SmallCaps
  - [-] Underline (was previously converted to Emph)
  - [ ] Quoted
  - [ ] Cite
  - [X] Code (styled with `VerbatimChar`)
  - [X] Space
  - [X] LineBreak (these are invisible in Word: entered with Shift-Return)
  - [X] Math
  - [X] Link (links to an arbitrary bookmark create a span with the target as
        id and "anchor" class)
  - [X] Image
  - [X] Note (Footnotes and Endnotes are silently combined.)
-}

ブロック要素(段落要素)だと水平線がNG、表は幅とアライメントが対応していない。インライン要素だと下線、引用(Quoted, Cite)が対応していませんね。

また、ここに記載がないものの、LineBlockが対応できていないようです(これはまた別の記事で書きます)

ということで、単純にPandocのdocx Readerの機能面からみても現時点で完全な書き戻しというのは難しいということがわかります。これ以外については原則書き戻しは出来ると思いますので、引き続き見ていきます。