差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| emacs [2023/11/16 01:23] – skk | emacs [2025/11/05 22:36] (現在) – skk | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | = [[emacs]] / LM: [2023-11-16 01:23:35] | + | = [[emacs]] / LM: [2025-11-05 22:36:11] |
| ~~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] ==== | ||
| 行 1040: | 行 1046: | ||
| (buffer-file-name) | (buffer-file-name) | ||
| " | " | ||
| - | " | + | " |
| " | " | ||
| " | " | ||
| 行 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 関係 | ||
| 行 1751: | 行 1929: | ||
| もし Linux でインストールする場合は,configure を利用すると良い気がする.僕は少なくとも,WSL emacs での tamago は allbsd の tamago を利用している. | もし Linux でインストールする場合は,configure を利用すると良い気がする.僕は少なくとも,WSL emacs での tamago は allbsd の tamago を利用している. | ||
| + | |||
| + | === - emacs 30.x 対応 [2025-10-22] === | ||
| + | emacs 30.x では,https:// | ||
| + | |||
| + | <code lisp> | ||
| + | Wrong type argument: obarrayp, [nil nil nil nil nil nil nil nil nil nil ...] | ||
| + | </ | ||
| + | |||
| + | というエラーが出る. | ||
| + | |||
| + | 記事執筆時点では,本体にマージされてないので,手動で https:// | ||
| === - 句読点切替え [2023-09-13] === | === - 句読点切替え [2023-09-13] === | ||
| 行 2069: | 行 2258: | ||
| * 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: | 行 2359: | ||
| * apt などパッケージで入れても良い. | * apt などパッケージで入れても良い. | ||
| * emacs 28 から登場した native compilation は,elisp の動作が 100 倍レベルで速くなるそうなので,もし利用している OS のパッケージが 28 になっていなかったら,自分でコンパイルして入れても良いかもしれない. | * emacs 28 から登場した native compilation は,elisp の動作が 100 倍レベルで速くなるそうなので,もし利用している OS のパッケージが 28 になっていなかったら,自分でコンパイルして入れても良いかもしれない. | ||
| + | |||
| + | 参考:[2025-11-05] | ||
| + | |||
| + | <code bash> | ||
| + | sudo echo "deb http:// | ||
| + | % sudo apt-get install libwebkit2gtk-4.0-dev libgccjit-14-dev libmagickwand-dev libxpm-dev libgif-dev libgnutls28-dev libtinfo-dev libncurses-dev | ||
| + | % CPPFLAGS=' | ||
| + | % make -j16 | ||
| + | % make install | ||
| + | </ | ||
| + | |||
| + | 注意:[2025-11-05] libwebkit2gtk-4.1-dev だと通らない.4.0 だと通る.4.0 を apt で入れるために,/ | ||
| + | |||
| + | 注意2:[2025-11-05]make -j16 の数字は,CPU のコア数に応じて変更して下さい. | ||
| ==== - X の設定 ==== | ==== - X の設定 ==== | ||
| 行 2648: | 行 2916: | ||
| <code lisp> | <code lisp> | ||
| - | (replace-regexp-in-string " | + | (replace-regexp-in-string "\\\.md" " |
| </ | </ | ||