= コマンド / LM: [2024-09-02 21:31:29]
OS に関係なく利用できるコマンドに関して.
pandoc はテキストフォーマットを ,別のフォーマットに変化する為のツール.markdown から HTML やら PDF やらに変更したり出来る.[2023-09-10] 時点で入力できるリストは以下の通り.
0:21 [0] skk@skk-T14% pandoc --list-input-formats commonmark creole docbook docx epub fb2 gfm haddock html jats json latex man markdown markdown_github markdown_mmd markdown_phpextra markdown_strict mediawiki muse native odt opml org rst t2t textile tikiwiki twiki vimwiki
github などの影響で MarkDown が各所で使われているが,ある程度整形された状態で印刷しようと考えると,Windows 編集ツールは有料のものしか見つからなかった[2023-09-10].一時期 Typora を使っていたがいつの間にか有料になっていたけど,お金払うほどしょっちゅう印刷するわけではないので,pandoc で済ますことにする.
Linux なら apt で探す.FreeBSD なら pkg または ports でインストール.ports の場合,大きなソフトウェアなので少し時間がかかる.
[2023-11-15]
MarkDown の種類がどれくらいあるのか分からないが,少なくとも入力フォーマットとして,以下が存在しているらしい.
markdown markdown_github markdown_mmd markdown_phpextra markdown_strict
markdown_github は pandoc 2.0 以上だとあまり推奨されてなさそうで,gfm というのが使えるようだ.
標準の markdown だと水平線の表現が半角の ***
のようなのだが,redmine wiki と同様の —
にしたい場合,github markdown が良さそう.pandoc -f markdown_github
として入力フォーマットを指定すると良い.
pandoc を使って MD → PDF と変換する際は,emacs の org-mode などと同様,一度 LaTeX に変換してから PDF を生成する.LaTeX エンジンは色々存在するが,man の –pdf-engine を見ると,以下のエンジンを指定できることが分かる.
pdflatex|lualatex|xelatex|wkhtmltopdf|weasyprint|prince|context|pdfroff
慣れているものを利用すれば良いと思うが,platex がないのでどれでも良かったので,取り急ぎ,今回は lualatex をインストールすることとした.
apt-get install texlive-luatex
変換は以下:
pandoc hoge.md -o hoge.pdf --pdf-engine=lualatex -V documentclass=bxjsarticle -V classoption=pandoc
bxjsarticle が昔で言う jarticle のようなスタイルファイル.classoption は何を意味しているのか分かってない.
デフォルトのままだと,段落の行頭が字下げがされていない.[2023-09-10] 時点で,pandoc が提供する以下のテンプレートファイルにて行頭字下げしないように指定されている.
/usr/share/pandoc/data/templates/default.latex
以下の部分をコメントアウトすれば字下げされるようになる.
\IfFileExists{parskip.sty}{% \usepackage{parskip} }{% else \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt} }
ファイルを自分のホームディレクトリなど好きな場所に置き,–template でファイルを指定.
pandoc hoge.md --template=default.latex -o hoge.pdf --pdf-engine=lualatex -V documentclass=bxjsarticle -V classoption=pandoc
デフォルトのままだと,余白が多き過ぎて印刷した際に紙がもったいない.default.latex 内の \begin{document} の前あたり,行数だと 350 行目あたりに以下の設定を追記し,余白を狭くした.
\setlength{\topmargin}{15mm} \addtolength{\topmargin}{-1in} \setlength{\oddsidemargin}{20mm} \addtolength{\oddsidemargin}{-1in} \setlength{\evensidemargin}{15mm} \addtolength{\evensidemargin}{-1in} \setlength{\textwidth}{170mm} \setlength{\textheight}{254mm} \setlength{\headsep}{0mm} \setlength{\headheight}{0mm} \setlength{\topskip}{0mm}
LaTeX のタイトルや著者などの情報は,markdown の最初の方に以下のように書いておけば設定される.
--- title: タイトルだよ author: skk date: \today figureTitle: "図" tableTitle: "表" listingTitle: "コード" figPrefix: "図" eqnPrefix: "式" tblPrefix: "表" lstPrefix: "コード" ---
LaTeX における \begin{description}
\item[]
を利用した定義は,MarkDown で以下のように記述する.
何かのアイテム : : * 定義1 : * 定義2
一行目の :
の後ろには,全角の空白を置いている.これを置くことで,定義の文章を次の行に改行できる.改行がいらなければ,削除したら良い.
二行目三行目は実際の定義の文章を書いている.*
を置くことで箇条書きになる.
もし,アイテム部分がすごく長くなる場合,enumitem という LaTeX パッケージが利用できるがまだ試していない為,そのうち試したい.参考
imap コマンド経由で,lua 言語でフィルタリングを行うコマンド.
% nkf -w --overwrite hoge.txt
% zip hoge.zip foo/*.jpg
% zip -j hoge.zip *.jpg
% zip -sf hoge.zip
# vi /etc/dhcp/resolv.conf prepend domain-name-servers 192.168.1.1;
subversion 参照
convmv -r -f 元のエンコーディング -t 変更先エンコーディング --notest
$ ssh -L 1234:192.168.1.22:5901 192.168.1.22 -l skk
2 つのマシン間でファイルの同期をとるためのコマンド.
> set type=mx > tsukune.org
> set type=ns > tsukune.org
中身は理解してない.
% find . -type f -name "* *.txt" -exec bash -c 'mv "$0" "${0// /_}"' {} \; % **find / -type f -name "* *.txt" -exec bash -c 'mv "$0" "${0// /_}"' {} \;
引用元:
linux, freebsd ともに,'{}' が指定したファイル名と置換される部分なので,別の引数は必要に応じて'{}'の前とか後とかにつける.
% find . -inode 11111 -ok rm '{}'\;
% find . -inum 1111 -exec ls '{}' \; % mv `find . -inum 1111 -print` hoge.exe
[2024-08-08] for を使って複数のファイルに対して,一括処理をしたい場合は,僕は以下のように書くことが多い.
% for HOGE in `ls` > do > zip $HOGE.zip $HOGE > done
ただしこの方法は,ls の出力する空白が区切り文字として扱われるため,ファイル名に空白が入っていると上手く処理できない.
ここを参考に,以下のように区切り文字を改行にしてみたら,問題なく動作するようになった.
% IFS=$'\n'; for HOGE in `ls` > do > zip $HOGE.zip $HOGE > done
[2024-09-02] Ubuntu 附属の /bin/sh だと,この方法は上手く動作せず./usr/bin/zsh では期待の動作.bash では未確認.
このページへのアクセス 今日: 3 / 昨日: 3 総計: 887