2019年11月27日 | ブログ記事

Org modeでレポートを書こう

Fourmsushi

みなさんおはようございます。Fourmsushiです。

Markdownでレポート書いてPandocで変換してるそこのお前!
LaTeX直書きで疲弊してるそこのお前!
Wordで特に不自由してないそこのお前!

Org modeをつかってみようぜ!!

Org modeって何だよスパゲッティか?

スパゲッティではない。

Org modeはEmacsの拡張のひとつで、文書作成からTODOリストから簡単な表計算までこなせるすごいやつです。

また、公式サイトにはこのように書かれています。

Org-mode は、ノートの保存、TODOリストの管理、プロジェクト計画、文書編集のためのモードです。
高速で効率的なプレーンテキストのシステムを使ってファイルを編集します。

適当に言ってしまえばMarkdownのようなやつということになります。
驚くべきことに、iCalendar、HTML、LaTeX、PDF、ODT、プレーンテキストなど多くの形式に変換する機能がデフォルトで実装されています。

実際にOrg modeを使ってさっと作ったPDFファイルがこちらです。

気になった?使ってみましょう!そこのVim使いもまだ帰るには早いぞ

環境を整える

良い暮らしは良い住処からはじまる。

エディタ

ここまで読んだ読者の多くは「Emacsかあ、、、」なんて思っているんじゃないでしょうか。
安心してください。まだ諦めるには早いですよ。

Vim使いのあなたには、Vimに近いキーバインドで使えるSpacemacsや、Vimの拡張としてvim-orgmodeがあります。
Visual Studio Code使いのあなたにはOrg Mode(VSCode拡張)があります。
Sublime Text使いのあなたにだってorgmodeがあります。
Atomのあなたも我々の仲間です。org-mode(Atom拡張)があります。

特にこだわりがない方や、新しいキーバインドを覚えるのに抵抗がない方にはSpacemacsをおすすめします。
というのも、Emacsの拡張でないOrg modeは出力などの機能において劣っている場合があるからです。

この記事の内容はSpacemacsを前提にしていますので、この先を読むつもりの方は各自インストールしてください。

ちょっとだけ設定

まずはorg-modeのためにレイヤーなるものを導入します。
SPC f e d で設定ファイルを開き、以下のように ;; org となっている部分をあんコメントしてください。

dotspacemacs-configuration-layers
   '(
     ;; ----------------------------------------------------------------
     ;; Example of useful layers you may want to use right away.
     ;; Uncomment some layer names and press <SPC f e R> (Vim style) or
     ;; <M-m f e R> (Emacs style) to install them.
     ;; ----------------------------------------------------------------
     helm
     ;; auto-completion
     ;; better-defaults
     emacs-lisp
     ;; git
     ;; markdown
     org
     ;; (shell :variables
     ;;        shell-default-height 30
     ;;        shell-default-position 'bottom)
     ;; spell-checking
     ;; syntax-checking
     ;; version-control
     )

設定を変更したら ESC で挿入モードをやめて SPC f e R で再読込しましょう。

デフォルトの設定では日本語フォントが明朝体だったり中華フォントだったりするかもしれません。特にSpacemacs。
フォントを変更するには SPC f e d で設定ファイルを開き、

dotspacemacs-default-font '("M+ 1mn"
                            :size 13
                            :weight normal
                            :width normal
                            :powerline-scale 1.1)

(defun dotspacemacs/user-config ()
  "Configuration function for user code.
This function is called at the very end of Spacemacs initialization after
layers configuration.
This is the place where most of your configurations should be done. Unless it is
explicitly specified that a variable should be set before a package is loaded,
you should place your code here."
  (set-fontset-font t 'unicode "M+ 1mn" nil 'prepend))

のような感じに該当部分を書き換えてください。(わたしはM+ 1mnを使っています。)
設定を変更したら ESC で挿入モードをやめて SPC f e R で再読込しましょう。

さらに、日本語環境に対応したLaTeXファイルを生成するように設定を変更する必要があります。
SPC SPC のあとに customize-group と入力し org-latex と入力し設定画面を開きます。
Org Latex Packages Alist に必要なLaTeXのパッケージを追加してください。
私は以下のようにパッケージを追加しました。また、わたしの環境ではgrffileがうまく動作しなかったため Org Latex Default Packages Alist
からgrffileを除外しました。
パッケージを追加し終わったら画面上方の Apply and Save で設定を保存しましょう。

次はプリアンブルや処理系の設定に移ります。
先程のようにして customize-group から org-export-latex を開き、以下の2つを適切に設定します。
ほかにも気になる項目があったらここで設定しておきます。

わたしはLuaLaTeXを使っているので、そのための設定を施しました。

Spacemacsでorgファイルを書く準備ができたので、さっそく書いていきましょう。

書く

書くぞ

早速ですが、なにかいい感じのフォルダに hoge.org のようなファイルを作り、中に

#+TITLE: Org modeでレポートを書く
#+AUTHOR: Fourmsushi
#+OPTIONS: toc:nil

のように書き込みましょう。 M-TAB で補完ができるみたいですが私の環境ではM-TABは他が使っているので試してません。ごめんね。

見出しを挿入するには M-RET h I または * hoge です。アスタリスクの数でサイズが変わります。アスタリスクの数を手打ちで変えるのは面倒ですか? M-LEFTM-RIGHT を試してみましょう。
見出しを追加したら、つぎのように入力してOrg modeの文法を把握していきましょう。

# これはコメントなので表示されません。

**太字**

/italic/

_下線_

+きのこの山とたけのこの里、どっちでもよくね+

~inline code~

=monospaced=

- 箇条書き
- あ
  1. a
  2. b
- あ

横線

---

: I have a pen.

$\frac{1}{2} = 0.5$

\begin{align}
a &= b \\
  &= c
\end{align}

それではPDFを生成して、出力を確かめましょう。
PDFをを出力するには C-c C-e l p と入力してください。

Screenshot-from-2019-11-27-21-55-46
Screenshot-from-2019-11-27-21-55-51

PDFが出力されたら、画像のように出力されているか確認してみましょう。

もっと書く

書かねば

さて、Org modeがMarkdownと同じくらいには便利だとわかってもらえたでしょうか。
まだまだ紹介することはありますよ。

表を書きましょう。

なにかをわかりやすく表示するのに、表を使うのはよくあることです。
Org modeなら簡単に表を書けるんです。

|名前|性別|年齢|

このように入力して、 TAB を押してみましょう!
一瞬で簡単な表が作れました。
一つ項目を入力するたびに TAB を押せば、すばやく内容を入力していくことができます。

名前 性別 年齢
Fourmsushi M 19
Hoge F 419
K M 1

CSVから表を作ることも簡単にできます。

CSVをコピーアンドペーストして、選択したあとに C-c | を入力してみてください。
CSVが表に変換されます。

キャプションをつけたいのであれば以下のように入力しましょう。

#+CAPTION: メンバーのプロフィール
#+NAME: tb:profiles
#+ATTR_LaTeX:
| 名前       | 性別 | 年齢 |
| Fourmsushi | M    |   19 |
| Hoge       | F    |  419 |
| K          | M    |    1 |
Table 1: メンバーのプロフィール
名前 性別 年齢
Fourmsushi M 19
Hoge F 419
K M 1

画像やリンク

画像やリンクを挿入する方法も簡単です。

まずはリンクですが、 C-c C-l で挿入することができます。
画像などのローカルファイルは C-u C-c C-l です。

こちらも表と同様キャプションをつけることができます。
また、画像は Description を埋めると表示されなくなるので注意しましょう。

コードブロック

プログラマの方は、ソースコードを貼り付けたくなることがあると思います。

C-c C-, で src を選択すれば好きな言語のコードブロックを生成出来ます。

#+begin_src bash
#+end_src

例えばこのようにすればbashのシンタックスハイライトが効きます。

このコードブロックにも様々な機能がありますが、 C-c ' で編集モードに入れること、 C-c C-c で実行できることは知っておくといいかもしれません。

書くことが無くなった

書くことが無くなったのでまとめに入ります。

この記事では以上のようなことを説明しました(薄くない、、、?)

この記事ではレポートを書くためのOrg modeの使い方について説明しましたが、他にもTODOリストや表計算、GitHubのREADMEなどにもつかうことが出来ます。
興味を持った方はぜひ試してみてください。

この記事を書いた人
Fourmsushi

そこの君もtypoしてみないかい…?

この記事をシェア

このエントリーをはてなブックマークに追加

関連する記事

2019年12月11日
円周率が無理数であることの証明【AdC2019 42日目】
Tarara
2019年12月11日
ぷよぷよってナンですか?【AdC2019 42日目】
arahi10
2019年12月10日
ブログ投稿ツイートを無理やり自動化した話【AdC2019 41日目】
xecua
2019年12月10日
理工系科目英語クラスについて【AdC2019 41日目】
kano
2019年12月9日
大学生活を豊かにする自己管理ツール集【AdC2019 40日目】
Deka
2019年12月8日
ハッカソンに参加して素材を作った話
NABE

活動の紹介

カテゴリ

タグ