u-ryo's blog

various information for coding...

Category: Markdown

Markdown to Pdf on CLI

| Comments

markdownで快調に書いたものを、「印刷して提出せよ」ということになっていたので、「へ?」とか思って。今時ねぇ、印刷なんてねぇ、何の意味があるのか。一応evidenceってことなんだろうけど。

調べると、意外とないんですよね日本語markdown to pdf。popularなのはMS Visual Studio Codeの拡張機能Markdown PDF使うものですけど、たったそれだけのためにVisual Studio Code入れたかぁないですし。 nodeのmarkdown-pdfmd-to-pdfとかサクッと出来そうだったんですけど、古いのか、どうしようもないエラーが出ます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
docker run --rm -it -v $PWD:/work -w /work -e https_proxy=http://192.168.120.1:3128 node:alpine sh
# npm i -g markdown-pdf
# markdown-pdf some.md
node:events:497
      throw er; // Unhandled 'error' event
      ^

Error: spawn /usr/local/lib/node_modules/markdown-pdf/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs ENOENT
  :
# npm i -g md-to-pdf
# md-to-pdf some.md
(node:29) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

  Puppeteer old Headless deprecation warning:
    :

  ✖ generating PDF from some.md
    → TROUBLESHOOTING: https://pptr.dev/troubleshooting
ListrError: Something went wrong
    at /usr/local/lib/node_modules/md-to-pdf/node_modules/listr/index.js:102:18
     :

pandocもいいんですが、texの環境色々入れるのがかったるいなー。 というわけで、docker baseで。 探すと、参考文献がありました。proxyも使わないとならないので。

1
2
3
4
5
6
7
8
9
10
$ PROXY=http://192.168.120.1:3128
$ docker run --rm -it -e https_proxy=$PROXY -e http_proxy=$PROXY -e ftp_proxy=$PROXY -e use_proxy=yes -v $PWD:/data --entrypoint sh pandoc/latex
/data # tlmgr install collection-langjapanese
   :
tlmgr: package repository ftp://tug.org/historic/systems/texlive/2022/tlnet-final (not verified: valid signature with expired key)
   :
[108/108, 22:16/22:16] install: collection-langjapanese [1k]
running mktexlsr ...
   :
/data # pandoc some.md -o some.pdf -C --pdf-engine=lualatex -V linkcolor=blue -V documentclass=ltjsarticle -V luatexjapresetoptions=fonts-noto-cjk
  • 何か今どきftpで取りに行くので、ftp_proxyが必要
  • use_proxy=yesもないとproxy経由と認識してくれなかった
  • working directoryはdefaultで/dataなのでそこにmountする
  • entrypointが入っているので、optionで上書きしないとtlmgrを動かせない
  • pandoc/coreではなくpandoc/latexであることに留意
    • 500MB超とsizeも結構ある
  • tlmgr install collection-langjapaneseは22分かかった
    • 総計30分弱はかかる
  • 基本的にはpandoc md_file -o pdf_fileだが、--pdf-enginelualatexを指定したりdocumentclassltjsarticleを指定したり、日本語特有の指定が必要
  • ###が本文と同じ大きさの文字になるので、思っているよりlevelを1段階上げとかないと、思ったような出力にならない

Images in README.md on Github

| Comments

GithubREADME.mdにscreen shotとか画像を貼りたかったんですけど、どうしたものなんでしょう。説明用のimagesをsource codeと一緒に置いておくというのも何か野暮なので。幾つかやり方があるようです。

  1. image用の別branchを切る(e.g. https://github.com/cakecatz/garage)
  2. Githubのissueを利用する(GitHub Readme Images Tutorial (screenshots in readmes))
  3. Githubのwikiを利用する(GitHubに画像ファイルを保存してREADME.mdで表示する方法)

issueに画像をDrag and Dropすると、https://user-images.githubusercontent.com/... に自動的にuploadしてURLが得られるなんて知りませんでした。でもこれ、いつまで持っててくれるんでしょう、というのと、消したい時に消せるのかな? というのがあって。やっぱり自分でcontrol持っておきたいでしょう。(GitHubのissueを悪用して画像をホストする)

別branchを切ると、一旦画像以外全部消さないとならなくて、 何となくそれがちょっと嫌だったので、結局wikiを利用しました。 一度何でもいいのでWikiのpageを保存しないとならないみたいです。 一度保存しちゃえば、上記ページに書いてあるようにgit clone https://github.com/.../XXX.wikiで取ってこられて、images作って置けちゃうんですね。へー。

More Package-list in Emacs on Ubuntu

| Comments

emacsでmarkdownを書く時に、 markdown-modeが欲しいと思ったので、 list-packageしたら、 なかったんですね選択肢に。 調べると、.emacsに、

1
2
3
4
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
(package-initialize)

が必要でした。

cf.init-loader.el と package.el を導入して快適 Emacs ライフ

Preview

あと、emacsで書いてpreviewだけ別にしたいな、 と思ったぼくには、 ChromeのMarkdown Preview Plus extentionが便利でした。 install後、 Manage extentionsで「Allow access to file URLs」にチェックを入れないとならない、 というのがハマりポイントでした。

PDFへの変換

Pandoc で Markdown から PDF へ変換にある通り、 apt-getで入るpandocを使えば楽かなぁと。 header.texが必要というのがtrickyですね。 これもLuaLaTeXで変換出来ました。

header.tex

1
2
3
4
\usepackage{luatexja}
\setmainfont{TakaoPMincho}
\setsansfont{TakaoPGothic}
\setmonofont{TakaoGothic}
1
$ pandoc --latex-engine=lualatex -o /tmp/test.pdf -H ~/header.tex /tmp/test.md

Table

Table Generatorというのがあります。 orgtbl-modeは、よくわからないので使ってません。

online editor

ってうか、既にbrowser上でedit/preview出来るもの、あるじゃないですか。 もう古い記事ですが、 Webブラウザで使えるMarkdownエディタの比較を見ますと、 今はもっとあるんでしょうね... 2015年の記事もありますね。ブラウザ上で使えるMarkdownエディタ

wri.pe凄いですね。 GitHub accountで入れますし、 スッと使えるinterfaceを感じます。