スキップしてメイン コンテンツに移動

投稿

まだまだ helm-swoop.el を使ってマルチバッファ検索する

最近はまた helm.el の開発が活発に行われているようです。 少し前から helm の仕様変更のためか、 helm-multi-swoop コマンドを実行したときに、検索語句は背後で開いているバッファも含めた全体のものが表示されるものの、語句の位置に移動できるのは現在開いているバッファのみに限られてしまうようになりました。 helm-swoop.el のマルチバッファ横断検索が便利過ぎて、他のパッケージに移行できないため、こちらも ChatGPT に解決策を教えてもらいました。 問題点は、「選択移動だけでは persistent-action が走らない」ことで、 helm-multi-swoop の「選択を上下に動かすだけで対象バッファへプレビュー移動する」機能が働かなくなっているようでした。 対処法は、候補移動時に必ず persistent-action を実行させることで各候補の場所へプレビュー/ジャンプを可能にすること、および multi-swoop の source に follow を有効化することだそうです。以下を init.el に追記します。 ;;; --- 1) 候補移動+persistent-action を実行する関数を追加 (defun helm-swoop--next-line-follow () "Move to next line and execute persistent action (preview/jump)." (interactive) (helm-next-line) (helm-execute-persistent-action)) (defun helm-swoop--previous-line-follow () "Move to previous line and execute persistent action (preview/jump)." (interactive) (helm-previous-line) (helm-execute-persistent-action)) ;;; --- 2) マルチバッファ用のキーマップを『follow つき移動』へ差し替え (with-eval-after-l...

TeX Live 2025 で upLaTeX + glossaries.sty を動かす

TeX Live 2024 の最終版で glossaries.sty に大きな変更があったようで、TeX Live 2025 版の uplatex コマンドでタイプセットを行うと (c:/texlive/2025/texmf-dist/tex/latex/datatool/datatool-utf8.ldf) ! Use of \??? doesn't match its definition. <argument> \??? ! LaTeX Error: Character code ##1 too large in \x{##2} regex. l.2220 } というエラーが表示されるようになりました。同様の問題が下記のサイトでも確認されているようです。 TeX Live 2024 で pLaTeX + glossaries.sty が動かない 原因は glossaries.sty が内部で読み込む datatool-base.sty の中の LaTeX3 の正規表現処理が upLaTeX で上手く扱えないことにあるようでした。エラーメッセージは LaTeX3(expl3) の l3regex が出しているようです。 こちらのサイトにあるコードをコピペしてみると、今度は (c:/texlive/2025/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzli brarypositioning.code.tex)) ! Argument of \__char_generate_aux:w has an extra }. <inserted text> \par l.32 \makeindex というエラーが表示されました。今度は修正した部分が expl3 を利用している Tikz のほうで問題を起こしてしまうようです。 解決の糸口が見えないため TeX Live 2024 の最終版よりも前の環境を使って誤魔化していましたが、最近 ChatGPT に尋ねると問題の回避策を提案してくれたので記録しておきます。 datatool-base.sty の先頭付近で、いま使っているエ...

YaTeXでインライン数式の括弧を挿入する関数

EmacsのLaTeXの入力支援モードであるYaTeXでは、YaTeX-insert-dollarという関数が定義されていて、ドル記号"\$"を入力すると"\$\$"が入力され、カーソルは2つのドル記号の間に移動し、入力モードは直接入力に切り替わります。 日本語入力をオフにしなくとも直接数式入力に移行できることや、インライン数式環境の閉じ忘れが防げるので重宝しています。 LaTeXのインライン数式モードとして、他にも"\\("と"\\)"で括る方法があり、ドル記号を入力するのと同じような挙動をする関数が欲しいなと思っていたので作成してみました。 とはいってもYaTeX-insert-dollarとYaTeX-insert-dollars-regionの挿入文字列を変えてみただけです。 今のところの問題点は、数式モードの開始にドル記号が使われていても、"\\)"で閉じてしまうところです。ドル記号と括弧のどちらで開始された数式モードであるか判定する機能が欲しいところです。 (defun YaTeX-insert-math-paren () (interactive) (if (or (not (YaTeX-closable-p)) ; (= (preceding-char) 92) ;; (and (YaTeX-in-math-mode-p) ;; (or (/= (preceding-char) ?$) (/= (following-char) ?$))) (YaTeX-in-math-mode-p)) (insert "\\)") (insert "\\(\\)") (forward-char -2) (and YaTeX-use-jmode-hook (fboundp 'add-text-properties) (add-text-properties (- 2 (point)) (+ 2 (point)) (list 'point-left 'YaTeX-jmode-hook 'point...

mozc.elでの日本語入力における句読点の自動修正

通常の日本語の文章を書くときの句読点は「、」や「。」を使うけれど、数式を含む文章を書くときの句読点は「,」と「.」を使いたい派です。 10年くらいほど前にこの機能を実現するpunch.elというEmacsのパッケージを配布されている方がいて、便利に使わせて頂いてました。 このpunch.elはMacやWindowsのOSのIMEを利用した場合には上手く動くものの、mozc.elを利用した入力には対応していませんでした。 mozc.elで同じ機能を実現するelispをGrokにお願いして出力してもらったところ、ほぼそのまま利用できるコードを生成してくれました。 mozc-handle-event関数の実行前後の文字列入力位置を記録しておき、その範囲内の句読点をmozc-handle-event実行後に書き換えるという操作をするコードになっています。以下の内容をpunct-mozc.elという名前でEmacs Lispのライブラリに保存します。 (defgroup punct-mozc nil "Punctuation switcher in mozc" :group 'punct-mozc :prefix "punct-mozc-") (defun punct-mozc-lighter () " Punct") (defun punct-mozc-replace-punctuation (beg end) "挿入された範囲内の句読点を変換する関数。 BEG と END は挿入された文字列の開始点と終了点を表す。" (interactive) (when punct-mozc-mode (save-excursion (goto-char (1- beg)) (while (< (point) end) (let ((char (char-after))) ; (message "Position: %d, Char: %c" (point) char) (cond ((= char ?、) (delete-...

LaTeXで宛名ラベルシールの差し込み印刷をする

この記事は TeX & LaTeX Advent Calendar 2021 の20日目の記事です。 19日目は hid_alma1026 さん、21日目は 7danmoroboshi さんです。   はじめに 業務でラベルシール用宛名ラベルの作成に ラベル屋さん というソフトを利用しています。しかし公式サイトの使い方を見る限り、連名の有り無しなどの条件分岐に対応したラベル作りに対応できなさそうです。そこでLaTeXのtikzとtcolorbox, datatool, intcalcパッケージなどを利用して宛名ラベルの差し込み印刷に挑戦してみました。 TeXエンジンは、フォントの変更がしやすいという噂のLuaTeX-jaを利用することにしました。 datatool はデータセットからdata plotや表作成などが行えるLaTeXパッケージです。日本語では ブログ天地有情  [LaTeX] datatool --- CSVデータからグラフやテーブルを作成 で使い方を見ることができます。csvなどの外部データを利用することもできて、今回は作成したcsvファイルを読み込み、定型フォーマットに文字列を流し込むのに利用しました。 準備 まずは宛名ラベルの差し込み印刷に利用するcsvファイルを用意します。今回は 疑似個人情報データ生成サービス を利用して、次の画像ようなcsvファイル(personal_information.csv)を作成しました。 csvファイルのヘッダ部分は取り除いています。ヘッダ部分がある場合もdatatoolの記述を変えれば利用できるようです。各列の意味は次の通りです。括弧内はdatatoolで扱う際のkeyを表しています。 名前(Name) 郵便番号(PostalCode) 住所1(Address) 住所2(address) ご家族様表記の有無(ToFamily) 連名1(Family) 連名2(family) 出力結果 上のcsvファイルを元に作成した宛名ラベルのpdfファイルの画像を載せておきます。あくまでも画像の住所・氏名はダミーで実在しません。 1枚目の画像は印刷後に余ったラベルシールの再利用を想定して、ラベル開始位置を指定できるようにし、開始位置をずらしたものです。画像では4番目のラベル位置から宛名を配置していま...

OpenCv-PythonとpdfLaTeXで自炊pdfファイルの位置調整

この記事は TeX & LaTeX Advent Calendar 2021 の11日目の記事です. 10日目は t_kemmochi さん,12日目は yukishita さんです.   動機  書籍の自炊にブックエッジスキャナーの AvisionのFB2280E を利用しています。書籍を裁断せずに1ページずつスキャンを行うため、本の開き具合などの要因で本の序盤、中盤、終盤で得られるスキャン画像の位置ずれが大きくなります。以前からpdfLaTeXを利用して位置調整をしていたのですが、OpenCvを利用して自動化できそうだったので試してみました。 やること 本記事では、pdf化した文書画像の版面(文字の印刷された部分の意味で使います)を半自動的に計算してpdfの画像の位置調整をするために、OpenCvとpdfLaTeXを利用する方法を解説します。手順としては Pythonの画像認識用ライブラリであるOpenCvを利用して版面を計算する。 テンプレートエンジンライブラリのJinja2を使って画像のバウンディングボックスなどを記述したLaTeXファイルを作成する。 pdfLaTeXでpdfを読み込み、位置の調整されたpdfを作成する。 という流れになっています。作業環境としては、 Visual Studio CodeをRemove - WSL拡張機能と併用 しています。PythonやそのライブラリはWSL上のUbuntuにインストールし、他にもpdfファイルを他のファイル形式にするためにpoppler-utilsなんかもインストールしました。 参考記事 OpenCvを利用した文書画像のレイアウト解析については ブログSomething Like Programming内の記事 Document Layout Analysis githubリポジトリ rbaguila/document-layout-analysis OpenCv-Pythonチュートリアル を参考にしました。 pdfLaTeXがpdf加工に使えるという話と、pdfpagesパッケージの存在は doraTeXさんのブログTeX Alchemist Onlineの記事 pdfTeX による見開きPDFの結合・分割 で知ったように思います。 画像pdfをpdfpagesで取り込む ま...

LaTeXの出力pdfにグリッドラインを引く(自炊pdfの画像位置調整)

普段購入した専門書をスキャンしてpdfファイルにし、ipadやPC画面で読むようにしています。書籍のスキャンには AvisionのFB2280E を利用しています(国内の代理店での価格は私が購入した海外の通販サイトの値段の3倍くらいになっているようです)。国内では同じくらいのスペックのブックスキャナーとしてPlustekのOpticBook 4800が手に入りやすく、私もこちらを所持していましたが故障のため買い替えました。FB2280は後発のためスキャン速度はOpticBook 4800より速いです。しかし付属のソフトがよろしくないことと、スキャン位置とボタン位置が離れていてスキャンし辛いなどの短所もあります。 本体付属ソフトは使いづらいため、スキャンソフトは NAPS2 を利用しています。 また非破壊のスキャナーであるために、解体・裁断してスキャンするよりもページごとの位置ずれがかなり大きくなります。また、スキャンしたときに本の背に近い部分は光が届かず黒い帯がでます。 黒い帯部分の削除には Briss というJava製のソフトを利用しています。GUI操作で偶数ページと奇数ページを分けて一度にcrop操作を行えるので便利です。 pdfをcropしてもreaderで表示される部分が変わるだけで、元の画像情報は残っています。表示されない部分を完全に消してしまうには、今の所AdobeのAcrobat PRO DCの「非表示情報を検索して削除」を利用する方法しか寡聞にして知りません。非表示情報の削除と傾き補正、OCR処理にはAcrobat DC Proを利用しています。 自炊したpdfの余白についてwebで検索すると、ipadなどで読むために余白を削りたい人が多いようです。私は適切に余白があるほうが圧迫感が無く読みやすいと感じるので,cropしたpdfをpdfTeXで処理して余白の追加をしていました。 最近はページごとの上下左右の振れが気になってきたので、余白の調整に試行錯誤しています。以下からが本題です。 TeX-LaTeX Stack Exchangeの この記事 を元に、 eso-pic , pdfpages , tikzパッケージを利用してpdfファイルの全面にグリッドを表示させるようにしてみました。画像では画像位置の調整のためのガイドラインの表示も行っています。 ...

yatex-modeでmozc-im使用時に,ドル記号入力で直接入力に切り替える.

emacsでyatex-modeを使っているときに,日本語入力中でもドル記号を入力すれば,直接入力に切り替わりドル記号が2つ入力されて欲しい人間です. mozc.elを使っているときには,mozc-mode-mapを書き換えることで 上記に対応していた のですが,mozc-imではキーマップが用意されていません.そこでキーイベントを拾う関数であるmozc-im-input-methodにアドバイスを定義することで上記を解決してみました. (require 'mozc-im) (setq default-input-method "japanese-mozc-im") (defadvice mozc-im-input-method (around insert-dollars (event)) (if (and (eq major-mode 'yatex-mode) (equal event ?$)) (YaTeX-insert-dollar) ad-do-it)) (ad-activate 'mozc-im-input-method) mozc.elでも,mozc-mode-mapを書き換える方法でなく,これと同様にmozc-handle-eventという関数にアドバイスを定義すれば同じ挙動を示します. 追記:defadviceは古いそうなので,advice-addを使用したものに書き換えてみました. (require 'mozc-im) (setq default-input-method "japanese-mozc-im") (defun mozc-im-input-method--yatex-insert-dollars (orig-fun key) (if (and (eq major-mode 'yatex-mode) (equal key ?$)) (YaTeX-insert-dollar) (funcall orig-fun key))) (advice-add 'mozc-im-input-method :around #'mozc-im-input-method--yat...

mozc-tempを使ってみた。

ac-mozcの後継である mozc-temp というものがあるということで使ってみました。 英字を直接入力して、変換したい文字列の直後でAlt-nを打鍵することで変換候補が表示されます。 少し利用してみたところ、yatex-modeでは直接入力でしか使わないような変換してほしくない記号も変換されて不便なので、以下のように変換候補の文字に関する正規表現を変更してみました。 ;;mozc-temp ;;(global-set-key (kbd "M-n") #'mozc-temp-convert-dwim) (global-set-key (kbd "M-n") #'mozc-temp-convert) ;;mozc-tempの変換候補文字に関する正規表現を変更する (add-hook 'yatex-mode-hook '(lambda () (custom-set-variables '(mozc-temp-prefix-regexp (let ((convertibles "][,.:0-9A-Za-z-")) (format "\\(?:^\\|[^%s]\\)\\([%s]+\\)\\=" convertibles convertibles))) ))) 使用していて気になる点は、 ひらがなやカタカナに変換するときにAlt-nの後でCtrl-H, Ctrl-Kを打鍵する必要があり、打鍵回数が増えるので、ひらがな・カタカナに直接変換するキー割り当てが欲しい。 mozc.elを使って入力をしているときには、変換候補が表示されているときに続けて文字を打ち込むと変換確定扱いになるのに対し、mozc-tempではEnterを押して決定しないと変換確定にならないので、やはり打鍵回数が増えて不便. といったところでしょうか。後者がかなり気にかかるので使用頻度が減ってしまいましたが、日本語入力モードに切り替えるのを忘れて文字列を打ってしまった後に変換可能なのでその用途で使っています。

定理を再掲したときに定理番号も揃える(amsmathのtagと似た挙動の定理環境を作る).

LaTeXで定理を再掲する方法についての話題です。 追記:2026/01/07:keytheoremsやthm-restateなどで検索すると幸せになれます。 amsmath.styで定義されているtagコマンドは,数式環境の式番号部分を自由な文字列で置き換えることができるようになっています.下に例を挙げます. この画像を生成するLaTeXのコードは次のようになります. \documentclass[a4paper,dvipdfmx,uplatex]{jsarticle} \usepackage[dvipdfmx,bookmarks=true,bookmarksnumbered=true,% ,colorlinks=true,linkcolor=blue]{hyperref}% \usepackage{showkeys} \usepackage{amsmath} \numberwithin{equation}{section} \begin{document} \section{amsmath.styに含まれるtagコマンドの挙動} \begin{equation} \label{eq:euler} e^{i\theta}=\cos\theta +i\sin\theta \end{equation} \eqref{eq:euler} \section{amsmath.styに含まれるtagコマンドの挙動の検証} \begin{equation} \label{eq:euler2} \tag{\ref{eq:euler}} e^{i\theta}=\cos\theta +i\sin\theta \end{equation} \eqref{eq:euler2} \end{document} 最初のequation環境にeq:eulerというlabelをつけ,第2のequation環境ではtagコマンドを使って数式番号部分に¥ref{eq:euler}と書くことで,実際に表示される式番号が第1のequation環境のものと同じになっています.この第2のequation環境にはeq:euler2というlabelを付けており,これを¥eqref{eq:euler2}と参照すると表示される番号は第1のequation環境のものであるにも...

bxjsclsの不具合?

bxjsbook.clsで数学の勉強ノートを取っているのですが,目次に表示されるページ番号が左揃いで3桁までを想定しているらしく,ページ数が1000を超えると一桁はみ出て見た目が残念なことになります. どうにかならないものか. 追記:2019/03/01:TeX QAの 「 ページ数が1000ページを越えた目次について」 で解決策が提示されています.

tikzで行列の積を表現してみる

行列の積の成分計算を表す図をtikzで作成してみました。元ネタは佐武線形代数です。 画像は次の通り。 LaTeXのコードは次のようになりました。 行列の外の括弧を表現するのにdecorations.pathreplacingライブラリを, 行列を上部で揃えるのにpositioningライブラリを使っています. 色付けはbackgroundsライブラリを使い,scope環境にon background layerオプションを付けて文字の背後に色を付けるようにしました. \documentclass[a4paper,dvipdfmx,uplatex]{jsarticle} \usepackage{amsmath} \usepackage{tikz} \usetikzlibrary{calc} \usetikzlibrary{decorations.pathreplacing} \usetikzlibrary{matrix,backgrounds,fit,positioning} \begin{document} \begin{equation*} \begin{tikzpicture}[every left delimiter/.style={xshift=1ex},every right delimiter/.style={xshift=-1ex}] % \matrix(A)[matrix of math nodes,nodes in empty cells, ampersand replacement=\&, left delimiter={[},right delimiter={]}, inner sep=0.8ex, ] { \phantom{b_{11}}\&\hphantom{\dotsb}\&\phantom{\dotsb}\&a_{1j}\&\phantom{b_{1n}}\\ \phantom{a_{11}}\&\&\&a_{2j}\&\phantom{a_{1n}}\\ \phantom{\mathstrut}\&\&\&\phantom{\mathstrut}\&\\ \phantom{\mathstru...

latexの箇条書きに全角文字を使う2

enumitem.styのenumerate環境については, こちら で箇条書きの番号に全角文字を使うことが可能になりました. 今度は箇条書きを横に並べる場合に同様のことができないか模索してみます. 今回はtasks.styとこのパッケージが依存しているcntformats.styを利用してみました. この2つのパッケージは同じ作者によるものです. ソースは次の通りです. \documentclass[lualatex,a4paper,10pt,ja=standard]{bxjsarticle} \makeatletter \def\@kkana#1{% \ifcase#1\or ア\or イ\or ウ\or エ\or オ\or カ\or キ\or ク\or ケ\or コ\or サ\or シ\or ス\or セ\or ソ\or タ\or チ\or ツ\or テ\or ト\or ナ\or ニ\or ヌ\or ネ\or ノ\or ハ\or ヒ\or フ\or ヘ\or ホ\else\@ctrerr\fi} \makeatother \usepackage{tasks} %箇条書きを横に並べる \makeatletter \NewPatternFormat{kk}{\@kkana} \makeatother \NewTasks[counter-format=tsk[kk]]{mytasks}[\item](1) \begin{document} \begin{mytasks}(3) \item first \item second \item third \item forth \item fifth \end{mytasks} \end{document} こちらをタイプセットしたのが次の画像です. \NewTasks[option]{コマンド名}{separator}(標準の列数)はtasks.styで定義されているコマンドで,新しいtask環境を作ります.conter-format={counter specs}の部分で箇条書きのラベルを変更します.tskの文字列でtask-counterを置換するのですが,tskのオプション引数に入る文字としては,1, a, A, r, Rが用意されています.ここで1は\ar...

latexの箇条書き番号に全角文字を使う

latexのenumerate環境などの番号は通常数字やアルファベットしか使えないので,次のページ LaTeX の箇条書の番号を全角文字で を参考に,番号に全角文字(ア,イ,ウ,…など)が使えるようにしてみました. enumerate環境については,最近ではenumitemパッケージの仕様が推奨されているようなので,このパッケージを利用してみます. \documentclass[lualatex,a4paper,10pt,ja=standard]{bxjsarticle} \makeatletter \def\@iroha#1{% \ifcase#1\or い\or ろ\or は\or に\or ほ\or へ\or と\or ち\or り\or ぬ\or る\or を\or わ\or か\or よ\or た\or れ\or そ\or つ\or ね\or な\or ら\or む\or う\or ゐ\or の\or お\or く\or や\or ま\or け\or ふ\or こ\or え\or て\or あ\or さ\or き\or ゆ\or め\or み\or し\or ゑ\or ひ\or も\or せ\or す\else\@ctrerr\fi} \def\@kkana#1{% \ifcase#1\or ア\or イ\or ウ\or エ\or オ\or カ\or キ\or ク\or ケ\or コ\or サ\or シ\or ス\or セ\or ソ\or タ\or チ\or ツ\or テ\or ト\or ナ\or ニ\or ヌ\or ネ\or ノ\or ハ\or ヒ\or フ\or ヘ\or ホ\else\@ctrerr\fi} \def\@hkana#1{% \ifcase#1\or あ\or い\or う\or え\or お\or か\or き\or く\or け\or こ\or さ\or し\or す\or せ\or そ\or た\or ち\or つ\or て\or と\or な\or に\or ぬ\or ね\or の\or は\or ひ\or ふ\or へ\or ほ\else\@ctrerr\fi} \makeatother \usepackage[shortlabels]{enumit...

Paper Lions "My Number"

素性を全く知らないのですが,YouTubeでは800万回再生されているMVもあれば,現時点で最新のこの曲のMVの再生回数は3400回弱だったり,有名なのかそうでもないのかよくわかりません. 取り敢えず,"My Number"のMVを貼り付けておきます. 80年代的な雰囲気を持っていてかなり好きです.多分youtubeの再生回数のうち50回くらいは私が再生したものだと思います. この曲をきっかけに「Full Color」「My Friends」「Trophies」というアルバムを買ってみました.「Full Color」「My Friends」は収録曲の質がいずれも高く,気に入っています."My Number"は「Full Color」収録曲です.同アルバムに収録されている"Believer"のMVも貼り付けておきます. こちらは再生回数が45,000回を超えており,認知度はあるようです. 最後に,再生回数が一番多い"Travelling"のMVを貼り付けておきます. 何故これだけ飛び抜けて多いのだろう.

Bxjsclsでの数式中のテキスト行間

普段数学のノートを書くためのLaTeXのクラスファイルとしてbxjsbookを利用しています.別行立ての数式中にテキストを記述するコマンドとして\intertextがありますが,この命令で囲った部分が複数行にわたる場合,本文中とは異なることが気になっていました. 上の画像の四角く囲った部分だけ他のテキストよりも行間が狭まっています. Bxjsclsのマニュアルを見ると,数式に入るところで\narrowbaselines というコマンドが実行され,欧文用に行間を狭くしているようなので,これが原因のようです.そこで \intertext{hogehoge} と記述していた部分に,行間を広げる命令っぽい\widebaselines を入れて \intertext{\widebaselines% hogehoge} のように記述を変えてみました.すると次のように行間が本文のものと同じになりました. これはこういう仕様なのでしょうか.

Polyvinyl plays Polyvinylが面白い

Polyvinyl recordsが創業20周年を記念して,Polyvinyl records所属のアーティストがPolyvinyl records所属アーティストの楽曲をカバーするアルバム「Polyvinyl plays Polyvinyl」が発売されています.購入はアナログ盤かmp3しかないみたいです.mp3を購入しましたが,CDが欲しいな. soundcloudのページ で全曲試聴が可能です. 特にGenerationals (feat. Sarah Quintana)がカバーしているIn Volcano, I'm Still Excited!!の楽曲"In Green"が原曲の原型を留めていないにも関わらず,全く新しい名曲に仕上がっており,衝撃的です.以下に貼り付けておきます. 原曲はこちらです. 同じ曲と認識できる人いるのでしょうか. 他にもAlohaがカバーしているBeach Slangの"Too Late To Die Young"も良いです. 原曲はこちら さらに20周年企画として, こちらのサイト からPolyvinyl records 20th Anniversary Samplerが無料でダウンロードできるようになっていました.44曲入りです.

amsthm.styのproof環境を日本語で使うときの調整

amsthm.styのproof環境を日本語で使おうとすると、proof. のように定理環境の初めの部分にドットが打たれてしまいます。\proofnameを日本語で書き換えてもこのドットが消えないのと、イタリック体が残ってしまうので、amsthm.styのproof環境を定義してある部分をコピーして次のように改変しました。 \makeatletter \renewenvironment{proof}[1][\proofname]{\par \pushQED{\qed}% \normalfont \topsep6\p@\@plus6\p@\relax \trivlist \item[\hskip\labelsep % \itshape \bfseries % #1\@addpunct{.}]\ignorespaces {#1}]\ignorespaces }{% \popQED\endtrivlist\@endpefalse } \makeatother \renewcommand{\proofname}{{[証明]}} 上記ではドットを消すことと、書体をbfseriesにすること、そしてオプションの引数部分を{#1}のように括弧でくくることで、proof環境のオプション部分に{[定理hogeの証明]}のようにオプション引数の括弧である[ ]を使っても、括弧{ }で囲んでおけば正しく出力されるようになりました。

yatexで数式イメージ補完を使って数式書体を変更したい

普段はLaTeX文書を作成するのにemacs+YaTeXを使用しています。 YaTeXでは数式環境中でセミコロン; を押下すると数式イメージ補完入力可能になり、その後aを押せば\alphaが、6を押せば\partialが補完されます。 セミコロンの後にmrを押せば、\mathrm{}が補完され、括弧の間にカーソルが移ります。同様にmsで\mathsf{}, miで\mathit{}なども補完されるのですが、自分が普段良く使う\mathbbや\mathscrはデフォルトで定義されていないようです。 これら数式の書体変更の命令はセクション型(\section{})のコマンドなので、ユーザー定義のセクション型補完の変数として用意されているuser-section-tableに登録すると、セクション型補完のコマンド[prefix]-sで入力した際には括弧まで補完してくれます。 \mathbbや\mathscrも数式イメージ補完を行いたいと思ったので、ユーザ定義の数式記号の変数YaTeX-math-sign-alist-privateにも登録してみたのですが、数式イメージ補完入力からこれらのコマンドを入力すると、括弧が補完されません。 yatex.elで定義されている変数section-tableにこれらのコマンドを登録しておけば、数式イメージ補完入力でも括弧が入力されることを確認したのですが、これらの挙動の違いがイマイチ把握出来ていません。yatex.elを直接変更するとなるとYaTeXのアップデート毎にyatex.elを修正する必要があるので、根本的な解決方法が知りたいのですが、どうすればよいのでしょう? 追記:2016/12/18 yatexの更新の度にyatex.elを書き換えるのは面倒なので,とりあえずinit.elに次のように記述しました. (setq yatex-mode-load-hook '(lambda() (setq section-table (append section-table '(("mathscr") ("mathbb") ("mathfrak")))) )) user-section-tableに追加...

tikz+gnuplotでグラフを描画

tikz内でgnuplotを呼び出してグラフを描画することを試してみました. 今回勉強になったのは,どちらかと言えばループを使ってグラフの目盛りを書くときの記述方法です. 今回作成したのは,次の$\tan x$のグラフです. ソースコードは次の通りです.mathライブラリが必要です. \begin{tikzpicture}[xscale=0.5,yscale=0.35] \begin{scope} \clip (-2.5*pi-0.5,-12) rectangle (2.5*pi+0.5,12); \foreach \n/\ntext in {-4/-2,-2/-,2/,4/2,-5/-\frac{5}{2},-3/-\frac{3}{2},-1/-\frac{1}{2},1/\frac{1}{2},3/\frac{3}{2},5/\frac{5}{2}}{ \tikzmath{ real \x1,\x2; \x1=0.5*\n*pi; \x2=(0.5*\n+1)*pi; }; \draw[gray!40] (\x1,12)--(\x1,-12); \pgfmathparse{mod(\n,2)==0?1:0} \ifnum\pgfmathresult > 0 \node[fill=white,above left] at (\x1,0){$\ntext\pi$}; \else \node[fill=white,below] at (\x1,0){$\ntext\pi$}; \ifnum\n < 5 \draw[thick] plot[id=tangent\n,prefix=figures/tikz/plots/,raw gnuplot] function{set samples 50;plot [\x1+0.08:\x2-0.08] tan(x)} ; \fi \fi } \draw[gray!40] (2.5*pi,12)--(2.5*pi,-12); \node[below right] at (0,0){$0$}; \foreach \n in {-10, -5, 5, 10}{ \draw (-0.1,\n)--(0.1,\n); \node[lef...