niszetの日記

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

(Pandoc) docx出力の脚注の区切り文字をテンプレートから反映させる修正をしています。

マージされたら褒めてくれ。

issueはこれ。

github.com

そういえば、テンプレートから反映されないなコレ…ってことでここ2-3日うにょうにょHaskell書いてPRを投げました。

github.com

さてどうなるかなー…

今回のことでまた理解が深まったので、ODT形式の方もそろそろ再開したい(今までよくわからんかったことが今回のことで出来ることが分かったので)

(Word)脚注の区切り線は色々とカスタマイズできる

いらん知識な気はするが…。

現在、Pandocの脚注の区切り線をテンプレートから持ってこれるように更新をしています。それをどこまでやればよいのかを検討するために調べていたら思った以上に色々設定できることが分かったのでメモを残しておきます。

脚注の区切りどこで修正すればよいの

ツールバーの表示を押した後にリボンの左側にある下書き(下図)を選び、

f:id:niszet:20210328175700p:plain

次にツールバーの参考資料を選択して、リボンの脚注にある注の表示を押すと下の方に編集画面が出るのでここで修正をする。

f:id:niszet:20210328175805p:plain

通常使う脚注は、脚注の境界線なので、これを図のように選び、編集する。長い棒が欲しければ「脚注の継続時の境界線」からコピーしてくると良い。

f:id:niszet:20210328175910p:plain

が、図のように文字を入れたり、それにスタイルを適用したり太文字や色付けなども可能で、日本語を入れても大丈夫なことがわかりました。実際に使うとこんな感じ。

f:id:niszet:20210328175505p:plain

これが脚注のあるページごとに出てくるようです。

まぁこんな脚注の区切り使ってたら怒りますが、仕様上は出来るということで。

絵文字も入れられるんだけども、入れると更新したあともPandocはエラー吐いちゃうのでそれはやめてね…(そんな脚注の区切り文字使わないデショ?)

(Pandoc) Pandocでdocxなどのバイナリ形式のファイルのテンプレートを出力するときは>ではなくて-oを使おう

一応書いておく

ちょっと前のissueですが、Pandocでテンプレートを出力する--print-default-data-fileを使う際に pandoc --print-default-data-file reference.docx > custom-reference.docxで出力するとファイルが壊れることがあります(下記issue)

github.com

この回避方法として、>で出力先をファイルに変更するのではなく、-oオプションを使って出力先ファイル名を指定することでこの問題を回避できるようになりました。

まぁ実際のところテンプレートを --print-default-data-fileで出力すると抜けるスタイルがあるのでおススメしないですが…(これissueに上げておくべきなのかな…といっても誰も困ってなさそう)

他の形式、たとえばodtやpptxも、-oで出力した方が良いでしょう。

(Pandoc) Emojiは外部のライブラリに切り出されていた(メモ)

収録している(?)絵文字の数が格段に増えてました

以前Pandocのemojiについて調べていた時は、Pandoc本体に取り込まれていて対応する文字の数も少なかったのですが、下記のcommitで外部のパッケージに切り出されていたようです。

github.com

そのライブラリ自体はこちら。

hackage.haskell.org

対応しているemojiの名前はこのファイルに書かれているので、困ったらこのファイルを見ましょう(欲しい絵文字が登録されていないならPR出すとかですね)

github.com

(Pandoc) Pandocは脚注の設定をreference.docxから持ってこれない

...と思う。

Pandocのバージョンは2.11.4です。いつの間にこんなにバージョン上がってるの…。

久々にPandocのissueでも見るかーって見た一個目がこれだったので、これをやることにした。

github.com

Wordの脚注の線と脚注の文字の間のスペースを詰めたいという話。

まずはこの脚注の線を修正する方法。ググれば出てくるが、

  1. 下書きモードの表示にする
  2. ツールバーの参考資料から注の表示を選択して表示させる
  3. 出てきた脚注のなかで脚注の境界線を選択する。

すると、よくわからんが線が表示される。これを消して他の文字にするなどすれば脚注の線は他の文字に変えることが出来る。これ以外の修正方法があるのかは知らない。

なお、この情報はdocx内ではfootnotes.xml中に含まれており、専用のタグ、<w:separator />を使って示されている。もう一個の方は<w:continuationSeparator />である。<w:footnote w:type="separator" w:id="-1">などで調べると良い。w:idは他の数字かもしれないので注意。

さて、この脚注だが実はこの画面上で右クリックすることでフォントやスタイル、段落設定をすることが可能である。そのため、段落設定で段落後のスペースを0にすることによって、脚注の区切り線と脚注の文字との間を詰めることが可能なのである。

脚注の設定はココでしか使わないので、そのまま指定しても良いが、使いまわしを考えるならばスタイルを専用に作成して指定する方が良いだろうと思う。とはいえ、reference.docx中のスタイルを別のファイルにマージするとか面倒くさいのであまりやることはないと思うだが…。

さて一方でPandocはこの脚注の設定をreference.docxから拾ってくれないようだ。実行した結果がそうなのだからそうなんだろう。footnotes.xmlから設定を引っこ抜いてくるためには、styles.xmlからスタイルを引っこ抜いてくるのと同様の処理をしないといけないであろう。

ということで、あとでissueに書いたコメントを見直してよくわからなかったとき用にメモを残しておく。真面目にキャプチャとか載せておけばもっといい記事になるのに面倒くさいのでやらない。誰か書いてくれ。

(R) Windows上で parzer パッケージが動かないやつの暫定対応

なんでしょうね

ちょっとkuniezuパッケージを試してみたかったんですが、

github.com

内部で使ってるparzerパッケージがエラー吐いて止まる(Win、32bit版)か止まってしまって処理が返ってこない(Win, 64bit版)という挙動をしていました。

再現できるコードはこれ。

parzer::parse_lon("10")

RToolsは4.0の最新版を入れなおしてもダメでした。一方、Ubuntu上では問題なく動作して、結果として一個前の記事が出来ました(ヨカッタネ)

ってことをTwitterに呟いていたら、僕らのユタ兄さんから、

というアドバイスをいただいて、上記コード実行前に

Sys.setlocale(locale = "C") 

をしたら動くようにはなりました。が、原因がわからないのでちょっと調べてみます。昔のバージョンなら問題なかったのではないだろうか、とかそのあたりですね…(CRANのテストはもちろん通った状態でリリースされているのでそこら辺ではなさそう)

続報

その後、std::regexが問題とわかり…

結局、gccに問題があるのではということまで来ました(主にユタ兄さんの解析によって)

現状では先にあげたように、localeを設定してやり過ごすのが対策になりそうです。ちなみに、regex[]がダメっぽくて、[0]はダメ、(a+)*\dみたいなのはOKでした。こんなこと(コンパイラのバグ)ってあるんですねぇ…(Windowsの日本語localeのみで発生するregexのバグ…)

ちなみに、Windows上でSys.getlocale()するとこうなります。この環境下でのみ発生する、という感じですね(ubuntuのutf8環境では問題なかった)

> Sys.getlocale()
[1] "LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932"

(R) Ubuntu 20.04 LTS に RStudio Server をインストールしようとしたらlibssl.so.1.0.0がないと怒られたので対応してインストールするやつ

絶対忘れるのでメモ。

Ubuntu18の方で普通にRをインストールするとR3.xが入ってしまうので、Ubuntu20.04LTSに移行しようとした。

で、Rを入れた後にRStudioをこのページに書かれているコマンドで入れようとしたのだが、

rstudio.com

以下のようなエラーが出てRStudio serverは起動できなかった。

Couldn't find an alternative telinit implementation to spawn.
/usr/lib/rstudio-server/bin/rserver: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory

調べたら下記のサイトに書かれていた。

askubuntu.com

投稿から引用すると、/etc/apt/sources.listdeb http://security.ubuntu.com/ubuntu xenial-security main という行を追記し、その後 sudo apt update して sudo apt install libssl1.0.0 してから sudo rstudio-server start して起動できることを確認しました。

とりあえず良かった~