CodeBlock

自炊した書籍のpdfを整理するときに emacsの org-mode のコードブロックの が役にたったため、備忘録代りに記事にする。

agrep は曖昧検索を実現するgrepの派生プログラム。

code block の使いかたはorg-modeのコードブロック(Babel)の使い方 | Misohena Blogを参考にした。

#+NAME: get-book-links
#+begin_src elisp :var title="" :resutls list
  (let* (
         (len (/ (length title) 3))
         )
    (mapcar (lambda (n) (print (s-concat "[[" n "][" (f-filename n) "]]")))
          (s-lines
           (shell-command-to-string
            (s-lex-format
             "find ~/Dropbox/Book | agrep -E ${len}  \"${title}\"")))))
#+end_src

#+CALL: get-book-links[:results list](title="並列")

#+RESULTS:
- Akkaとアクターモデルではじめる並列並行分散処理プログラミング Vol 1.5.pdf
- C/C++プログラマーのためのOpenMP並列プログラミング 菅原 清文 318p_4877831991.pdf
- 並列計算と数理とアルゴリズム.pdf
- Akkaとアクターモデルではじめる並列並行分散処理プログラミング.pdf
- [[][]]

org-mode エクスポートの設定

org-mode の設定を変更。エクスポートをスニペットとしていたが、 #+SETUPFILE を使用してLatexヘッダー等を別ファイルとする。

元のスニペットは下記.

#+LaTeX_CLASS: koma-jarticle
#+LaTeX_CLASS_OPTIONS: [12pt]

#+latex_header: \usepackage{xcolor}
#+latex_header: \usepackage{minted}

#+LATEX_HEADER: \usepackage{geometry}
#+LATEX_HEADER: \geometry{left=1cm,right=1cm,top=1cm,bottom=1cm}
#+LATEX_HEADER: \usepackage[natbib=true]{biblatex} \DeclareFieldFormat{apacase}{#1} \addbibresource{~/Dropbox/Bibliography/references.bib}
#+STARTUP:  overview
#+STARTUP:  hidestars
#+OPTIONS:  H:4 num:nil toc:nil \n:nil @:t ::t |:t ^:nil -:t f:t *:t TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+LINK_UP:
#+LINK_HOME:

#+TITLE: ${1: title}
#+AUTHOR: k-sunako
#+DATE: `(let ((x (org-time-stamp '(16) t ))))`
\vspace*{-1.5cm}

* 概要
  blabla

* 参考文献

  #+LaTeX: \printbibliography[heading=none]

上記のLatexヘッダーなどレポートとしての体裁を設定する箇所を report-header.org として別ファイルにする。

#+LaTeX_CLASS: koma-jarticle
#+LaTeX_CLASS_OPTIONS: [12pt]

#+latex_header: \usepackage{xcolor}
#+latex_header: \usepackage{minted}

#+LATEX_HEADER: \usepackage{geometry}
#+LATEX_HEADER: \geometry{left=1cm,right=1cm,top=1cm,bottom=1cm}
#+LATEX_HEADER: \usepackage[natbib=true]{biblatex} \DeclareFieldFormat{apacase}{#1} \addbibresource{~/Dropbox/Bibliography/references.bib}
#+STARTUP:  overview
#+STARTUP:  hidestars
#+OPTIONS:  H:4 num:nil toc:nil \n:nil @:t ::t |:t ^:nil -:t f:t *:t TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+LINK_UP:
#+LINK_HOME:

そのため、スニペットは下記となる。

# -*- mode: snippet -*-
# name: report2
# key: rep2
# --
#+setup: report-header.org

#+TITLE: ${1: title}
#+AUTHOR: k-sunako
#+DATE: `(let ((x (org-time-stamp '(16) t ))))`
\vspace*{-1.5cm}

* 概要
  blabla

* 参考文献

  #+LaTeX: \printbibliography[heading=none]

ripgripのオプション

emacsの ripgrep-regex コマンドが遅いことが多いので調べると検索結果の文字数に上限を設け れば良いらしい。

下記のコマンドで100バイトの文字数に上限を設定できる。

rp -M 100 blahblah . 

emacsの ripgrep-regex コマンドに反映するために下記の設定を追加した。

(setq ripgrep-arguments '("-M 100"))