差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
emacs [2023/11/23 02:07] – skk | emacs [2025/01/13 01:28] (現在) – skk | ||
---|---|---|---|
行 1: | 行 1: | ||
- | = [[emacs]] / LM: [2023-11-23 02:07:17] | + | = [[emacs]] / LM: [2025-01-13 01:28:49] |
~~NOCACHE~~ | ~~NOCACHE~~ | ||
行 193: | 行 193: | ||
That is, remove duplicates, non-kept, and excluded files. | That is, remove duplicates, non-kept, and excluded files. | ||
</ | </ | ||
+ | |||
+ | [2023-12-13] | ||
+ | |||
+ | recentf が増えてくると,検索したくなる.そのような時は,'' | ||
参考: | 参考: | ||
行 837: | 行 841: | ||
" | " | ||
</ | </ | ||
- | |||
- | === - latex export === | ||
- | org-mode で書いた文章を,LaTeX に export して,PDF にできる.頑張る人は論文まで書いている模様.MarkDown よりも org-mode の方が記述力が高い為,共同作業などをしない場合は,org-mode で記述する方が LaTeX コマンドを直接記述する割合を減らせる. | ||
- | |||
- | <TBD> | ||
行 950: | 行 949: | ||
==== - インストール ==== | ==== - インストール ==== | ||
- | M-x package-list-package から markdown-mode を選択してインストール. | + | M-x package-list-package から markdown-mode を選択してインストール.use-package を使う場合は,自動でインストールされるので,手動でのインストールは必要無い. |
==== - 設定 ==== | ==== - 設定 ==== | ||
行 1013: | 行 1012: | ||
</ | </ | ||
- | 画像の表示/ | + | 画像の表示/ |
+ | 上のセクションに書いてあるように,'' | ||
+ | |||
+ | 表示される画像の最大サイズを指定したい場合は,以下のようにする.ただし,imagemagick オプション付きでコンパイルされていないと,縮小は動作しない.Ubuntu の場合はソースからコンパイルしたら良さそう.FreeBSD の場合は,ports でインストールする際のオプションで指定しておくと良さそう. | ||
+ | |||
+ | <code lisp> | ||
+ | (setq markdown-max-image-size '(1000 . 700)) | ||
+ | </ | ||
==== - pandoc で markdown から PDF 生成 [2023-10-12] ==== | ==== - pandoc で markdown から PDF 生成 [2023-10-12] ==== | ||
行 1196: | 行 1202: | ||
==== - PDF 生成 ==== | ==== - PDF 生成 ==== | ||
+ | |||
+ | org-mode で書いた文章は,HTML や MarkDown, LaTeX などに Export できる. | ||
+ | 多少の文章を作るのに,Word や Google Spreadsheet で作成しても良いのだが,テキストベースで残っている方が保存の観点からは安心なので,共同作業が求められない場合,僕は emacs で文章を書き,LaTeX に export した上で PDF にする機能をちょいちょい使っている.org-mode は MarkDown よりも記述力が高いので,そこそこ複雑な文章でも作成しやすいような気がする.世の中的には MarkDown の方が流行っているけれども. | ||
+ | |||
+ | === - 基本設定 === | ||
+ | |||
+ | org-latex-pdf-process で,呼び出す latex コマンドを指定する.もし,参照を使いたい人は,bibtex などもここで指定する必要がある.また,latexmk などを使って呼び出す内容をまとめておくのもよいかもしれない.僕はコマンドラインから呼び出すことはほぼないので,latexmk まで整備する必要はない. | ||
+ | |||
+ | org-latex-default-class は,org-latex-classes で指定された複数の class のうち,文章内で # | ||
+ | |||
+ | org-latex-classes には,複数のクラスを記述して追加しておく.以下の例で言えば,''" | ||
+ | |||
+ | <code lisp> | ||
+ | (use-package org | ||
+ | :ensure t ;; 多分イラナイ | ||
+ | :after action-lock | ||
+ | :init | ||
+ | (setq org-latex-default-class " | ||
+ | (setq org-latex-pdf-process | ||
+ | ' | ||
+ | " | ||
+ | " | ||
+ | (setq org-export-with-toc nil) ; \tableofcontents を出さない | ||
+ | (setq org-export-latex-date-format " | ||
+ | :hook | ||
+ | (org-mode . turn-off-auto-fill) | ||
+ | (org-mode . action-lock-mode) | ||
+ | :config | ||
+ | (add-hook ' | ||
+ | (add-hook ' | ||
+ | ) | ||
+ | |||
+ | (add-to-list ' | ||
+ | ' | ||
+ | " | ||
+ | \\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} | ||
+ | \\usepackage{otf} | ||
+ | \\usepackage{fancyhdr} | ||
+ | \\usepackage[dvipdfmx]{graphicx, | ||
+ | \\usepackage{xytree} | ||
+ | \\usepackage{indentfirst} | ||
+ | \\usepackage{minijs} | ||
+ | \\usepackage[T1]{fontenc} | ||
+ | \\usepackage{lmodern} | ||
+ | \\pagestyle{plain} | ||
+ | \\makeatletter | ||
+ | \\西暦" | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ) | ||
+ | |||
+ | ) | ||
+ | |||
+ | </ | ||
+ | |||
+ | org の文章をエクスポートするには,'' | ||
+ | |||
+ | Windows の emacs で作業する際,PDF をオープンするために,毎回,howm で保存されてるフォルダにまでエクスプローラでたどり着くのがめんどくさいので,'' | ||
+ | |||
+ | <code lisp> | ||
+ | (global-set-key " | ||
+ | (defun open-current-file-dir-with-explore () | ||
+ | (interactive) | ||
+ | (my-action-lock-explorer-open (unix-path-to-windows (file-name-directory buffer-file-truename))) | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | 実際に文章を書く際は,文章毎にいくつかオプションをつけることになる.次の項目に僕が使う代表的なものをいくつか載せておくが,クラスを選ぶには,''# | ||
+ | |||
+ | |||
+ | === - 文章毎のオプション === | ||
+ | |||
+ | < | ||
+ | #+TITLE: 文章のタイトル | ||
+ | #+AUTHOR: skk | ||
+ | # | ||
+ | * セクション | ||
+ | 内容内容. | ||
+ | </ | ||
+ | |||
+ | のように書く.オプションは以下のようなものがある. | ||
+ | |||
+ | ^ コマンド | ||
+ | | #+TITLE: タイトル文字 | ||
+ | | #+AUTHOR: 著者 | ||
+ | | #+DATE: \today | ||
+ | | #+OPTIONS: H:2 toc:nil num:t | | | ||
+ | | #+LANGUAGE: ja | ||
+ | | # | ||
<TBD> | <TBD> | ||
- | コマンドメモ: | + | === - latex engine の切替え === |
- | * C-e C-p:変換先の候補を出す | + | |
- | * l p:PDF を出力する | + | 僕は 2000 年代頭くらいの状態のまま LaTeX を使っていたので,platex を使っていたのだが,ここ最近は,lualatex,uplatex, |
+ | これと同じように,documentclass で指定するクラスも,jarticle ではなく,jsarticle や bxjsarticle などを使うのが主流になってきている模様. | ||
+ | |||
+ | 年賀状で原の味フォントを使うのなんかも,platex のままで動作してたので,問題ないのかもしれないが,せっかくちょっとずついじるなら, jsarticle などを使っていってみたいと思う. | ||
+ | |||
+ | ただ,その際,jarticle ベースで設定していたフォーマットと,jsarticle でこれから育てていくフォーマットを共存させたくなってくるので,latex class に応じて呼び出されるコマンドを変更したいと考えた. | ||
+ | |||
+ | [[https:// | ||
+ | [[https:// | ||
+ | ここのコードを拝借して,以下のように書いてみたら,切替がうまく言ったような気がする. | ||
+ | |||
+ | <code lisp> | ||
+ | |||
+ | (use-package org | ||
+ | ... | ||
+ | :hook | ||
+ | (add-hook ' | ||
+ | ) | ||
+ | |||
+ | (defun skk/ | ||
+ | (message " | ||
+ | ;; [2025-01-12] | ||
+ | ;; https:// | ||
+ | (setq current-latex-class | ||
+ | (cdr (assoc " | ||
+ | (org-element-map (org-element-parse-buffer ' | ||
+ | (lambda (keyword) (cons (org-element-property :key keyword) | ||
+ | (org-element-property :value keyword))))))) | ||
+ | (if (eq current-latex-class nil) | ||
+ | (setq current-latex-class org-latex-default-class)) | ||
+ | |||
+ | (cond ((string-match current-latex-class " | ||
+ | (setq org-latex-pdf-process | ||
+ | ' | ||
+ | " | ||
+ | " | ||
+ | | ||
+ | | ||
+ | | ||
+ | ((string-match current-latex-class " | ||
+ | (setq org-latex-pdf-process | ||
+ | ' | ||
+ | " | ||
+ | " | ||
+ | | ||
+ | | ||
+ | | ||
+ | ((string-match current-latex-class " | ||
+ | (setq org-latex-pdf-process | ||
+ | ' | ||
+ | " | ||
+ | " | ||
+ | | ||
+ | | ||
+ | | ||
+ | ) | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | 備考:[[https:// | ||
+ | |||
+ | === - beamer === | ||
+ | LaTeX の beamer クラスは,スライドを LaTeX で作成するためのクラス.org で箇条書したものを beamer で export すると,スライドにしやすい.ox-beamer というパッケージを使いつつ export できる. | ||
+ | |||
+ | beamer の LaTeX 的な記法は,[[latex]] に記載予定. | ||
+ | |||
+ | <TBD> | ||
==== - tbl 関係 | ==== - tbl 関係 | ||
行 2069: | 行 2247: | ||
* http:// | * http:// | ||
+ | ====== - 自作機能 ====== | ||
+ | ===== - 今開いているファイルまたはフォルダをエクスプローラで開く ===== | ||
+ | [2023-12-13] | ||
+ | WSL1 環境において emacs を利用中,Windows 側のファイルをいじることがあるが,そのファイルがあるフォルダをエクスプローラで開きたい時がある.たとえば,org-mode で文章を書いていて,PDF export した時,PDF を Acrobat など Windows 側のアプリで見る,など. | ||
+ | |||
+ | 以下のコードで,今開いているフォルダを開くならば,'' | ||
+ | |||
+ | <code lisp> | ||
+ | (global-set-key " | ||
+ | (global-set-key " | ||
+ | |||
+ | ;; (set-drvfs-alist) は,https:// | ||
+ | (defun set-drvfs-alist () | ||
+ | (interactive) | ||
+ | (setq drvfs-alist | ||
+ | (mapcar | ||
+ | | ||
+ | (when (string-match " | ||
+ | (cons (match-string 1 x) (match-string 2 x)))) | ||
+ | | ||
+ | ;; //wsl$ or // | ||
+ | (when (or (not (string-match " | ||
+ | (>= (string-to-number (nth 1 (split-string operating-system-release " | ||
+ | (concat "/ | ||
+ | (shell-command-to-string | ||
+ | | ||
+ | "mount | grep -E 'type (drvfs|cifs)' | ||
+ | "mount | grep ' | ||
+ | " | ||
+ | |||
+ | (set-drvfs-alist) | ||
+ | |||
+ | (defun my-action-lock-explorer-open (url) | ||
+ | (message (concat "/ | ||
+ | (start-process " | ||
+ | (setq action-lock-default-rules | ||
+ | (cons (action-lock-general ' | ||
+ | " | ||
+ | 1) | ||
+ | action-lock-default-rules)) | ||
+ | |||
+ | (defun unix-path-to-windows (unix-path) | ||
+ | "WSL unix path を windows に変換する" | ||
+ | (let ((unix-path-prefix "" | ||
+ | (ret "" | ||
+ | (mapcar (lambda (x) | ||
+ | (setq unix-path-prefix (car x)) | ||
+ | (unless (string= unix-path-prefix "/" | ||
+ | (if (string-match unix-path-prefix unix-path) | ||
+ | (setq ret (concat | ||
+ | (cdr (assoc unix-path-prefix drvfs-alist)) | ||
+ | | ||
+ | | ||
+ | unix-path-prefix "" | ||
+ | drvfs-alist) | ||
+ | ret)) | ||
+ | |||
+ | (defun open-current-file-dir-with-explore () | ||
+ | (interactive) | ||
+ | (my-action-lock-explorer-open (unix-path-to-windows (file-name-directory buffer-file-truename)))) | ||
+ | |||
+ | (defun open-current-file-with-explore () | ||
+ | (interactive) | ||
+ | (my-action-lock-explorer-open (unix-path-to-windows buffer-file-truename))) | ||
+ | </ | ||
行 2105: | 行 2348: | ||
* apt などパッケージで入れても良い. | * apt などパッケージで入れても良い. | ||
* emacs 28 から登場した native compilation は,elisp の動作が 100 倍レベルで速くなるそうなので,もし利用している OS のパッケージが 28 になっていなかったら,自分でコンパイルして入れても良いかもしれない. | * emacs 28 から登場した native compilation は,elisp の動作が 100 倍レベルで速くなるそうなので,もし利用している OS のパッケージが 28 になっていなかったら,自分でコンパイルして入れても良いかもしれない. | ||
+ | |||
+ | 参考: | ||
+ | |||
+ | <code bash> | ||
+ | % sudo apt-get install libwebkit2gtk-4.0-dev libgccjit-8-dev | ||
+ | % CPPFLAGS=' | ||
+ | </ | ||
==== - X の設定 ==== | ==== - X の設定 ==== |