をまとめました。
markdownで疲弊しているみなさまこんにちは。論文執筆もプレゼンテーションもタスク管理も時間計測もできるorg-modeを使ったほうがよいですね。しらんけどおれはorg-mode使うので。
org-modeのよいところはmarkdownは文書をつくることしかできないのにたいしてorg-modeは思考をすすめることができる点がよい。プレビューみながらmarkdownとかで本当に思考できますかね。見た目確認しながら作業してない?しらんけど。
私は~/orgにorgファイルをもっていて、orgを適宜テーマごとにディレクトリ切ってバリバリかいてます。で、インラインのイメージどうするの問題。win/macで絶対パス違うので相対パスにしないと無理。
よくあるやつはルートからのパス打ち込んでるだけなのでwin-macで相互運用できない。
わたしはGoogleDriveにorgおいてシンボリックリンク/ジャーナルリンク?して~/orgにorgファイルがあるところまでは設定してる
画像は~/org/imgに物理的に貯まる
で、冒頭のstackoverflowの色んな人の意見を悪魔合体しました。久々のelisp
うごいているから良いと思う!
(defun get-basename-from-fullpath (fullpath)
"フルパスから最後のスラッシュまで削除した部分を返します。"
(let ((parts (split-string fullpath "/")))
(car (last parts))))
(defun my-org-screenshot-win ()
"Take a screenshot into a time stamped unique-named file in the
same directory as the org-buffer and insert a link to this file."
(interactive)
(setq filename
(concat (expand-file-name "~/org/img/")
(get-basename-from-fullpath
(concat
(make-temp-name
(concat (buffer-file-name)
"_"
(format-time-string "%Y%m%d_%H%M%S_")) ) ".png"))))
(shell-command "snippingtool /clip")
(shell-command (concat "powershell -command \"Add-Type -AssemblyName System.Windows.Forms;if ($([System.Windows.Forms.Clipboard]::ContainsImage())) {$image = [System.Windows.Forms.Clipboard]::GetImage();[System.Drawing.Bitmap]$image.Save('" filename "',[System.Drawing.Imaging.ImageFormat]::Png); Write-Output 'clipboard content saved as file'} else {Write-Output 'clipboard does not contain image data'}\""))
(setq pastepath
(concat "~/org/img/" (get-basename-from-fullpath filename)))
(insert (concat "[[" pastepath "]]"))
(org-display-inline-images))
(defun my-org-screenshot-darwin ()
"Save a clipboard's screenshot into a time stamped unique-named file
in a specified directory and insert a link to this file."
(interactive)
(setq filename
(concat
(make-temp-name
(concat (buffer-name)
"_"
(format-time-string "%Y%m%d_%H%M%S_")) ) ".png"))
(call-process "pngpaste" nil nil nil (concat (expand-file-name "~/org/img/") filename))
(setq pastepath
(concat "~/org/img/" filename))
(insert (concat "[[" pastepath "]]"))
(org-display-inline-images))
(defun my-org-screenshot ()
(interactive)
(if (eq system-type 'darwin)
(my-org-screenshot-darwin)
(my-org-screenshot-win)
)
)
(global-set-key (kbd "C-^") 'my-org-screenshot)
リファクタの余地は大いにあると思うので適当にいじってみてください。