emacs

Upgrade to Mojave and upgrade to Emacs 26.2 by homebrew

世はゴールデンウィークまっただ中である.完全な10連休ではないが,それなりに長い休みとなるので,この機会に,ようやく Sierraから Mojave にupgradeすることにした.ついでにEmacsも26.1から 26.2にupgradeした.今回は,このupgradeの際に遭遇したトラブルについてまとめる. Table of Contents Upgrade to Mojave from Sierra Upgrade to Xcode 10.2.1 Upgrade to Emacs 26.2 from 26.1 LaTeX pdfにフォントが埋め込まれているかどうかを確認する方法 感想 Upgrade to Mojave from Sierra Ref: macOS Mojave にアップグレードする方法 結論から言うと,拍子抜けするぐらい簡単であった.AppStoreで適当にクリックするとすぐにMojaveがダウンロードされて,インストーラーが起動した.これをクリックしてインストールを始めると,此処から先は完全自動状態で,ひたすら待った.というか,違うことをしていた.何回も再起動していたようだが,実際には1時間ぐらいで終了したような気がする.手間いらずであった.R, Rstudio, ImageJ, Emacs, LaTeXが動いて画像編集,動画編集ができれば,とりあえず文句はないので,まずそのあたりをチェックしてみると,R, Rstudio, ImageJ, 画像編集,動画編集は問題なく動いた.EmacsとLaTeXについては以下に述べる. Upgrade to Xcode 10.2.1 早速brewでemacsをupgradeしようとしたのだが,xcodeが古いと叱られたので,まず,xcodeをApp Storeからupgradeした.そして brew install すると以下のようなエラーが出る. $ brew install hogehoge ......... xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun これは,「macOS を Mojave にあげた後に Homebrew を使うとエラーが出る問題」にあるようにcommand line developer toolsを再インストールすれば直る.同サイトに詳細が記載されている.

peep-diredで画像をチラ見して,orgファイルに簡単にリンクを貼り付ける(おまけ:最近開けたdirectoryを一覧表示する方法)

最近Rネタばかり書いていたが,今回は久しぶりのEmacsネタである.org-modeで文書を書いているときに画像を貼り付けたいことがある.そのためには画像ファイルの名前とパスが必要となる.要するに毎回画像ファイルのパスを調べて/hoge/fuga/hogefuga/hugo.jpgというようなことをタイプしなければならず面倒である.そこで,peep-diredの出番である.peep-diredとは,diredでファイルにカーソルを持っていくと中身が見える,すなわち,画像ファイルなら画像が見え,テキストファイルならテキストが読めるというminor modeである.これが画像リンクの貼り付けに便利なのでまとめておく. Table of Contents References peep-diredのインストールと設定 peep-diredの使い方 bjm/ivy-dired-recent-dirs - 最近開けたdirectoryを一覧表示する方法(おまけ) References peep-dired QUICKLY PREVIEW IMAGES AND OTHER FILES WITH PEEP-DIRED peep-diredのインストールと設定 例によって,use-packagを用いて以下のように,init.orgに書けばよい. #+begin_src emacs-lisp (use-package peep-dired :ensure t :defer t ; don't access `dired-mode-map' until `peep-dired' is loaded :bind (:map dired-mode-map ("P" . peep-dired))) #+end_src 設定は上記参照サイトのパクリで,diredで"P"を打つとpeep-dired modeとなってdiredのリストの画像ファイルが見られるようになり,もう一度"P"と打つとpeep-dired modeは終了する. peep-diredの使い方 File viewerとしてだけなら,どうということはないのだが,org-modeと組み合わせて使うと便利さが増す.たとえば,下図のように画像をおいているdirectoryをdiredで開いて"P"を打ってpeep-dired modeに入り,画像を確かめながら文書に挿入する画像を決める.上段のdiredのバッファにおいてIMG_1996.jpgにカーソルがあり,下段のバッファにその画像が表示されている.画像が決まったらその画像ファイルにカーソルが合っていることを確認した上で,C-c lを打つ.これで,画像へのリンクがフルパスも含めてコピーされる. ついで,org-mode文書内の画像を挿入したいところにカーソルを持って行き,そこで,C-c C-lとすると,下部に新たなorg-insert-linkのウィンドウが開いて下図のように先程コピーしたリンクが一番上にフルパスでハイライトされて表示される.ここでリターンすればフルパスのリンクがorg-mode文書内に挿入される. 文章で説明すると複雑だが,実際にやってみると実に簡単で有用である.このやり方に気がつくまでは,いちいちフルパスを手入力したり,コピペしたりしていたが,その必要がなくなり非常に楽になった. bjm/ivy-dired-recent-dirs - 最近開けたdirectoryを一覧表示する方法(おまけ) diredでdirectoryを開けるときにその名前を入力する必要があるが,これが結構面倒である.特に深いところにあるファイルはフルパスを書くのが大変である.どうせ,同じファイルに何回も行くことが多いので,「最近訪れたdirectoryの履歴」みたいなのが一覧表示されると嬉しい.まさに,こんなのぞみにピッタリのものが,bjm/ivy-dired-recent-dirsである.これについては,以前に書いたのでそちらを参考にしていただきたい.というか,以前に書いた事自体を忘れていたので,自分への戒めとして記録しておく...(^^;;; Ref: 最近開いたディレクトリを開く

How to automatically embed R plot in blog created by Hugo via ox-hugo

(承前)前回(How to automatically embed R plot into html exported by org-mode with org-babel)はorg-babelを設定して,Rで描いたグラフを自動でhtmlやpdfに挿入するところまでまとめた.繰り返しになるが,本サイトは,ox-hugoで書いてHugo用のMarkdownをexportすることにより作成している.前々回の記事(How to plot survival curve of competing risk analysis with censoring mark and number at risk (at risk table))を書いている際に,Rでplotしたgraphをブログ記事の中に自動ではめ込むよう設定するのに苦労した.前回でorg-babelの設定は終わっているので,今回は,Hugoやox-hugoの設定に関してまとめ,ブログ記事へのR plotの自動挿入ができるようにする. Table of Contents References Configuration of Hugo section Setup of HUGO_SECTION & HUGO_BASE_DIR in ox-hugo References to files outside the static directory References HUGO Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.

How to automatically embed R plot into html exported by org-mode with org-babel

本サイトは,ox-hugoで書いてHugo用のMarkdownをexportすることにより作成しているが,前回の記事(How to plot survival curve of competing risk analysis with censoring mark and number at risk (at risk table))を書いている際に,Rでplotしたgraphを記事の中に自動ではめ込むよう設定するのに苦労したので,これも忘れないうちにまとめておく.まず,今回はorg-babelの設定について書き,次回にHugoでの設定をまとめる. Table of Contents Org-babel setup How to use org-babel Org-babel evaluation of R code block Org-babel setup org-babelとは,う~~~ん,なにもの? ものすごく端折って言うと,Code blockを評価して結果を表示するorg-modeの拡張,といったところだろうか...実例を見たほうが早いと思う.今回,org-babelによる R code の評価について書こうとして,ふと,ブログを見直してみると,なんとorg-babelの設定をまとめた記事を投稿してない …..(^^;;; ということで,org-babelの設定を改めて記しておく.例によって,init.orgに以下のように書き込んでおけばよい. Ref: Org-babel Setup ここからコピペ (^^;;; #+begin_src emacs-lisp (org-babel-do-load-languages (quote org-babel-load-languages) (quote ((emacs-lisp . t) (dot . t) (ditaa . t) (R . t) (python . t) (ruby .

Emacsの長い行を折り返して見やすくするが実際の行は変えない.adaptive-wrap —Correct indentation for wrapped lines

Emacsで長い行を書いていると,デフォルトの状態ではどんどん横に伸びていく.後で読み返そうと思うと横にスクロールしないといけなくて,非常に不便である.M-qでauro-fillをやればよいと言われそうだが,そうすると改行されてしまい,これまた不便である.そこで,なんとかならないかと探してみると,ちゃんとそういうモノがあったので,まとめておく. Table of Contents adaptive-wrap インストールと設定 実際の使用例 adaptive-wrap 参照1:adaptive-wrap ご本家 参照2:Correct indentation for wrapped lines 参照3:Emacsの折り返しの挙動 参照4:.emacs settings loading issue 長い行をワープロのようにword-wrapしてくれるパッケージである.Emacsのバッファ上では折り返されているように見えるが,実際は長い横1行のままである. インストールと設定 例によって,use-packagを用いて以下のように,init.orgに書けばよい. #+begin_src emacs-lisp (use-package adaptive-wrap :ensure t :config (setq-default adaptive-wrap-extra-indent 1) (add-hook 'visual-line-mode-hook #'adaptive-wrap-prefix-mode) (global-visual-line-mode +1) (add-hook 'org-mode-hook 'visual-line-mode) ;; For org macros ) #+end_src なお,最後の行を入れておかないと,org-mode fileに #+setupfile: /Sources/org-mode-folder/org-macros-master/org-macros.setup を追加してマクロのパッケージを使用する場合(Emacsのorg-modeで論文を書く(その5:htmlへのexportの際のフォントの色の変更,ハイライトなど)(12月19日追記)を参照のこと)に,adaptive-wrapが効かなくなる. 実際の使用例 adaptive-wrapをインストールしていない場合が上図,インストールして設定すれば下図のように見える.あくまで,Emacsの画面上でword-wrapしているように見えるだけで,実際のファイルではなが~い横1行のままの状態が維持されている. これも一度使い始めると,無くてはならないモノとなるパッケージである.

Emacsのorg-modeを保存すると自動的にhtmlにexportされブラウザーが更新されるようにする

org-modeで文書を書いていてhtmlにexportする際は,C-e h oとするわけだが,段々とこれが面倒になってくることがある.そこで,ネットを探ってみると,やはり,なんでも載ってるredditにhtml exportを自動化する関数の記事があった. Table of Contents toggle-org-html-export-on-save directoryの内容が変更されると,自動でhtmlを再読込する. 使用方法 toggle-org-html-export-on-save 情報元:How to auto export html when saving in org-mode? 例によって,下記のようにinit.orgに書き込めばよい. #+begin_src emacs-lisp (defun toggle-org-html-export-on-save () (interactive) (if (memq 'org-html-export-to-html after-save-hook) (progn (remove-hook 'after-save-hook 'org-html-export-to-html t) (message "Disabled org html export on save for current buffer...")) (add-hook 'after-save-hook 'org-html-export-to-html nil t) (message "Enabled org html export on save for current buffer..."))) #+end_src これで,toggle-org-html-export-on-saveで,htmlを自動で出力するかどうかを切り替え可能となる.しかし,これだけでは,org文書を保存するたびにブラウザーを手動でreloadしないといけなくなり,面倒である.自動でreloadしてくれるコマンドがあれば便利である.探してみると,これもネットに転がっていた. directoryの内容が変更されると,自動でhtmlを再読込する. 情報元:Watch for file changes and refresh your browser automatically 上記サイトに有るrubyのスクリプトが使えそうなので,頂いた. rubyのインストールについては,以下のようなサイトを参考 MacにHomeBrew,rbenv,bundlerをインストールする Ruby入門 01.

Org-modeで再帰的にsubtreeを絞ったり広げたりする(recursive-narrow)

org-modeで文章を書いているときに,他のsubtreeが邪魔で消したくなることがある.そして必要になれば,また,もとに戻すことができれば便利である.これを実現してくれるパッケージがrecursive-narrowである. インストールと設定 インストールは例によって,init.orgに以下のように書き込むだけである. #+begin_src emacs-lisp (use-package recursive-narrow :ensure t) #+end_src これでインストールと設定は終了である. 使用法 使い方も実に簡単であり,“C-x n n"で現在カーソルがあるsubtree以下のみが表示されるようになり,“C-x n w"で元の表示に戻る.これではよくわからないので,実際の画像を示す.まず,最初の画像では全体の画面が表示されており,1951行目の「Org-modeで再帰的に」の行にカーソルがある. ここで,“C-x n n"とやると,次の画面のようになる.つまり,1951行目以降のsubtreeのみが表示される. 次にカーソルを1962行目の「インストールと設定」に移動する(画像ではすでに移動済み).そして,再度"C-x n n"とやると,以下の画像のようになる. つまり,「インストールと設定」のsubtreeのみの表示となるわけである.集中したい領域だけが表示されて,効率よく入力できる. 広い領域の表示が必要となれば,“C-x n w"とやると,1つ前の画像の状態に戻る.そして,もう一度"C-x n w"とやると,最初の状態に戻る.なんということはないのであるが,便利である.

Org-modeでhtml exportの際のthemeについて

org-modeで文書を書いてhtmlにexportすると,素のままでは,なんの愛想もない.特にいくつかの項目をまとめた要約などを並べていくときは,side columnなどがあって,すぐに行きたいところに飛べるようになっていると嬉しい.ということで,今回はorg-modeをhtmlにexportするときのthemeがテーマである..... とにかく,たくさんのthemesが存在する.まずは以下のサイトをチェック,というか以下を読めばこのブログは読まなくても良いような...(^^;;; org-modeのHTMLテーマ org-modeのHTMLテーマ第2弾 How to export Org mode files into awesome HTML in 2 minutes org-spec 私のお気に入りは,ReadTheOrg(上記の1, 3にある)とorg-spec(上記の4)である. Table of Contents ReadTheOrg org-spec ReadTheOrg これはRead the Docsで使われているthemeのcloneである.一番簡単な使い方は,3にあるようにsetup fileをorg fileのpreambleに書いておくことである. #+SETUPFILE: https://fniessen.github.io/org-html-themes/setup/theme-readtheorg.setup あるいは,3からOrg-HTML themes projectをダウンロードしてきて解凍しローカルの"setup file"へのパスを書き込めば,ネットの接続に依存せずにexportできるようになる.たとえば,/Hoge/Fuga/org-html-themes-master/setup/theme-readtheorg.setupに設定ファイルがあるとすると以下のようにすれば良い. #+SETUPFILE: /Hoge/Fuga/org-html-themes-master/setup/theme-readtheorg.setup 以下に研究会で発表するスライド原稿を作る下準備として,実際に10個の論文をまとめたorg fileの一部を掲示しておく.左に論文のタイトルが並び,見ている論文の小見出しが自動的に展開される.subheadの色も設定されており,読みやすい.デザインもプロっぽい印象である.書いた内容にかかわらず,なんとなく賢くなったような気分になれる(笑). org-spec An Org-mode template for technical specification documents and HTML publishing. とのことで,技術よりのthemeである.特徴としては,Ditaa, Graphviz & PlantUMLなどによりテキストベースで図が書ける.表に対応,自動的にアップデートするフィールド,PDF生成にも対応,コードブロックの基本的なsyntax highlightingなどがある.実際の例としてhttps://demo.thi.ng/org-spec/がある. こちらの使い方は少しだけ面倒である.リンク先からorg-specをダウンロードして解凍する.ここで,style.cssが/Hoge/Fuga/org-spec-master/css/style.cssに保存されたとする.ダウンロードして来たファイルに含まれているindex.orgに全て書いてあるので,それを真似てorg fileのpreambleに次のように書いておく. #+HTML_HEAD: <link href="http://fonts.googleapis.com/css?family=Roboto+Slab:400,700|Inconsolata:400,700" rel="stylesheet" type="text/css" /> #+HTML_HEAD: <link href="/Hoge/Fuga/org-spec-master/css/style.css" rel="stylesheet" type="text/css" /> #+AUTHOR: taipapa #+EMAIL: your@mail.

Emacsのorg-modeで論文を書く(その5:htmlへのexportの際のフォントの色の変更,ハイライトなど)(2018年12月19日追記)(2020年1月12日追記)

学会発表や論文作成にあたっては,当然のことながら,その分野の他の研究者の論文を読んでまとめるなどの作業を行う.そこで,論文の要旨などをorg-modeにざっとまとめておくと,pdfにもhtmlにもtextにもexport出来て便利である.pdfは印刷に向いているが,htmlは多くの論文をいっぺんに見るのに向いており,また,compileの時間もpdfより圧倒的に速い.また,色を変えたり,ハイライトしたりするのもhtmlなら容易である.そこで,今回は,org-modeからhtmlへexportする際の有用な小技について書いてみたい. Org Macros フォントの色を変更する方法はいろいろあるが,ハイライトや背景の色の変更までできるこの Org Macrosが一番便利である.内容は,org-modeの便利なマクロ集である.リンク先からダウンロードして,適当なところに保存し,解凍しておく.ここでは,/Users/taipapa/hoge/fuga/org-macros.setupに置くことにする.使い方は簡単で上記のwebsiteに書いてあるとおり,各org fileの先頭に以下のように記述してorg-macros.setupの場所を教えてやれば良い. #+INCLUDE: /Users/taipapa/hoge/fuga/org-macros.setup これだけである. 注意事項としては,このブログはox-hugoで書いているが,ox-hugoの場合は文書の先頭に上記を書いても効かない.各ポストのpropertyのあとに書いておけば効く.各ポストごとに設定するようになっているらしい.....(全国15人?ぐらいの人にしか意味のない注意書きである) 上記に関しては,ox-hugoの作者であるKaushal Modi氏から以下のような指摘を頂いた.(12月19日追記) Can you try using #+setupfile instead of #+include? As an example, here is my blog Org source that I export using ox-hugo ( https://gitlab.com/kaushalm… ), and here is the setup file tha t I “include” using the more appropriate #+setupfile ( https://gitlab.com/kaushalm… ). As you see, I use a lot of Org macros, and they all work in my “one post per subtree” flow.

Swiper, ivy, avy, migemoによるEmacsの検索強化

文章を書いている際に,ある単語を検索したくなるようなことがよくある.Emacsでのデフォルトはisearchであるが,今回は,これを強化するpackageを紹介する.また,最近開いたディレクトリ directory をまた開きたいこともよくあることである.これについてもivyによる検索が便利であるので紹介する.例によってネタ元を見たほうが早いかもしれない...(^^;;; Table of Contents swiper.el Install & setup 使い方 migemo cmigemoのinstall migemo.elのInstall & setup avy-migemo(swiperのmigemo対応) Install & setup 使い方 最近開いたディレクトリを開く swiper.el 参照1:swiper ご本家 参照2:swiper.el: 一覧付き正規表現isearch!C-sを置き換えろ 参照3:Emacsの補完&検索を超強化する Emacsでは,C-sに割り当てられたisearchによる正規表現検索がデフォルトで存在する.これをivyを用いて一覧を付加するようにした強化版である. Install & setup 以下を,int.orgに書き込む. #+begin_src emacs-lisp (use-package swiper :ensure t :config (defun isearch-forward-or-swiper (use-swiper) (interactive "p") ;; (interactive "P") ;; 大文字のPだと,C-u C-sでないと効かない (let (current-prefix-arg) (call-interactively (if use-swiper 'swiper 'isearch-forward)))) (global-set-key (kbd "C-s") 'isearch-forward-or-swiper) ) (use-package ivy :ensure t ;; :config ;; (fset 'ivy--regex 'identity) ) #+end_src ivyのコメントアウトしている部分については後述する. 使い方 現在開いているEmacsのバッファで,C-sとするだけでよい.