693びぼーろく; 部分積分を使わないで積分したい時

被積分関数の形によっては一時的に複素数にすると便利だったりするかも。例えば以下のような場合。 $\displaystyle \int_0^L dx e^{-kx}\sin \frac{\pi x}{L} $ 正統的な方法としては部分積分だろうなと思うけど、一時的に複素数にすることで次のように計算できる。 $\displaystyle \int_0^L dx e^{-kx}\sin \frac{\pi x}{L}=\text{Re}\int_0^L dx e^{-kx}e^{i\frac{\pi x}{L}}=\text{Re}\frac{1}{-k+i\frac{\pi}{L}}\left[-e^{-kL}-1\right]=-\frac{k}{k^2+\frac{\pi^2}{L^2}}\left[1+e^{-kL}\right]$

292びぼーろく; quickrunのインストール[vim]

(2015.6.25に書き換え)

いつもvimさんでtexファイルを編集するけど、コンパイルが面倒。

ま、vim初心者なので割りきっていたけど、素晴らしいプラグインを見つけた。 というか前からあったと思うけど、探していなかった。

ついでにlatexmkも使うことに。統合開発環境っぽくなって相当便利になった。 プラグインの管理はNeobundleを使用。環境はdebian8 (jessie) 。

あまり良くわかっていないので、あちこちを参考にしながら下記のように設定。 (参考にしすぎてどこを見たのかわからなくなった) やり方としては、latexmkのオプションをシェルスクリプトで与えてlatexmを実行という流れ。


・latexmkの設定

latexmkの詳しいオプションは~/.latexmkrc に記入。 lualatexの設定はpdflatexのところに書く。

#!/usr/bin/env perl

$latex            = 'platex';
$latex_silent     = 'platex -interaction=batchmode';
$pdflatex         = 'lualatex';
$pdflatex_silent  = 'lualatex -interaction=batchmode';
$bibtex           = 'pbibtex -kanji=utf8';
$dvipdf           = 'dvipdfmx %O -o %D %S';
$makeindex        = 'mendex %O -o %D %S';
$max_repeat       = 5;
$pdf_mode         = 3; # generates pdf via dvipdfmx

# Prevent latexmk from removing PDF after typeset.
# This enables Skim to chase the update in PDF automatically.
$pvc_view_file_via_temporary = 0;
# Use Skim as a previewer
$pdf_previewer = "open -ga zathura";


・適当なシェルスクリプトを作成

僕の場合は、以下の様に処理。

コンパイルするtexファイルの先頭にコメントでコンパイルする方法を書いておく
→ファイルの先頭から読み取ってlatexmkにオプションとして渡す

lualatexが指定されている:lualatex
xelatexが指定されている:xelatex
dvipsが指定されている:platex+dvips+ps2pdf
それ以外: platex+dvipdfmx

というわけで以下の様にtex2pdf.shを作成。もっとうまいやり方があると思うけど、とりあえず動くので良しとする。

#!/bin/bash

unset TEXFILE
unset LATEXTYPE
unset DVITYPE
unset COMPILE

export TEXFILE=$1
## tex ファイルの指定

export LATEXTYPE=$(head -1 $1 |grep tex )
## コンパイルの指定(platex,lualatex,xelatex)を読み込む

export DVITYPE=$(head -1 $1 |grep dvi )
## dvipsかdvipdfmxかを指定。この時はplatexを使う。

if test "$(echo $LATEXTYPE|sed s/.xelatex./xelatex/)" = "xelatex" ; then

          echo "use xelatex"
          COMPILE=-xelatex

elif test "$(echo $LATEXTYPE|sed s/.lua./luatex/)" = "luatex" ; then

          echo "use lualatex"
          #lualatex  -interaction=batchmode --shell-escape $TEXFILE 
          COMPILE=-lualatex

elif test "$(echo $DVITYPE|sed s/.dvips./dvips/)" = "dvips" ; then

          echo "use platex + dvips"
          COMPILE=-pdfps

else

          echo "use platex + dvipdfmx"
          COMPILE=-pdfdvi

fi

latexmk --shell-escape $COMPILE $TEXFILE
latexmk -c $TEXFILE

実行権限を与えてパスの通っているところへ保存。これでおそらく(?)うまくいくと思う。 -cは中間ファイルの削除をしてくれるオプション。

試しに tex2pdf.sh ./hoge.tex とでもしてうまく動いていればOKだと思う。

・Neobundleのインストール(gitは予めインストールしておく)

mkdir -p ~/.vim/bundle
git clone https://github.com/Shougo/neobundle.vim \
~/.vim/bundle/neobundle.vim



以前にvim-latexをインストールした場合はvim-addon-managerで削除しておく。


・~/.vimrcに下記を追加 (Start Neobundle Settings.から End Neobundle Settings.まで)

"---------------------------
" Start Neobundle Settings.
"---------------------------
" bundleで管理するディレクトリを指定
set runtimepath+=~/.vim/bundle/neobundle.vim/

" Required:
call neobundle#begin(expand('~/.vim/bundle/'))

NeoBundleFetch 'Shougo/neobundle.vim'

"追加のプラグインは以下へ"

" neobundle.vim を使用しているなら

NeoBundle "thinca/vim-quickrun"
NeoBundle "Shougo/vimproc"
NeoBundle "lervag/vimtex"
NeoBundle "Shougo/vimshell.vim"
NeoBundle "itchyny/lightline.vim"

call neobundle#end()

" Required:
filetype plugin indent on

" 未インストールのプラグインを確認

NeoBundleCheck

"-------------------------
" End Neobundle Settings.
"-------------------------

これで、vimを立ち上げるとプラグインのインストールが始まる。


・quickrunの設定

以下をvimrcに追加する。

" ここから
let g:quickrun_config = {}

let g:quickrun_config={'_': {'split': ''}}
set laststatus=2
set t_Co=256

" runner を vimproc に設定
" 更新時間も設定しておく
let g:quickrun_config = {
\ "_" : {

\       "outputter" : "multi:buffer:quickfix",
\       "outputter/buffer/split" : ":top 8sp",
\       "runner" : "vimproc",
\       "runner/vimproc/updatetime" : 40,

\ }
\}

let g:quickrun_config["tex"] = {

            \   "command" : "tex2pdf.sh",
            \     "cmdopt": " ",
            \   "exec": "%c %o %s"
              \ }
" ここまで

これで、\r を打ち込むとtex2pdf.shが実行される。実際にはlatexmkが動いて、自動で必要回数コンパイルしてくれるので便利。

さて、ついでによく使うので以下もvimrcに追加。 カッコの一文字目を入れると閉じカッコ補完と<++>を追加。 <++>はCTL+nで移動できるようにした。
その他\beginで補完、\fracで補完。

"挿入モードでのキーマップ
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
inoremap <Esc> <Esc>:w<CR>

inoremap [ []<Space><++><Esc>5hi
inoremap ( ()<Space><++><Esc>5hi
inoremap { {}<Space><++><Esc>5hi
inoremap " ""<Space><++><Esc>5hi
inoremap ' ''<Space><++><Esc>5hi
inoremap < <><Space><++><Esc>5hi
inoremap $ $$<Space><++><Esc>5hi

inoremap <C-n> <Esc>/<++><CR>4xi
inoremap \begin \begin{}<CR><++><CR>\end{<++>}<CR><++><Esc>3k$i inoremap \frac \frac{}{<++>}<Space><++><Esc>11hi

"コマンドモード でのキーマップ
nmap <C-n> <Esc>/<++><CR>4xi

さて、ついでに現在のvimrcをさらす。あるサイトによれば「男は黙ってvimをフルスクリーン」だそうだ。渋い。

"vimrc設定

set tabstop=2
set shiftwidth=5
set number
set autoindent
set fileencodings=iso-2022-jp,utf-8,euc-jp,shift-jis,jis,ucs2le,ucs-2,cp932 set history=1000
autocmd BufEnter * silent! lcd %:p:h

let $TODAY = strftime('%Y%m%d')

"行頭から前行末へ移動
set whichwrap=b,s,h,l,<,>,[,]

"挿入モードでのキーマップ
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
inoremap <Esc> <Esc>:w<CR>

inoremap [ []<Space><++><Esc>5hi
inoremap ( ()<Space><++><Esc>5hi
inoremap { {}<Space><++><Esc>5hi
inoremap " ""<Space><++><Esc>5hi
inoremap ' ''<Space><++><Esc>5hi
inoremap < <><Space><++><Esc>5hi
inoremap $ $$<Space><++><Esc>5hi

inoremap <C-n> <Esc>/<++><CR>4xi
inoremap \begin \begin{}<CR><++><CR>\end{<++>}<CR><++><Esc>3k$i inoremap \frac \frac{}{<++>}<Space><++><Esc>11hi

"コマンドモード でのキーマップ
nmap <C-n> <Esc>/<++><CR>4xi

"---------------------------
" Start Neobundle Settings.
"---------------------------
" bundleで管理するディレクトリを指定
set runtimepath+=~/.vim/bundle/neobundle.vim/

" Required:
call neobundle#begin(expand('~/.vim/bundle/'))

NeoBundleFetch 'Shougo/neobundle.vim'

"追加のプラグインは以下へ"

" neobundle.vim を使用しているなら

NeoBundle "thinca/vim-quickrun"
NeoBundle "Shougo/vimproc"
NeoBundle "lervag/vimtex"
NeoBundle "Shougo/vimshell.vim"
NeoBundle "itchyny/lightline.vim"

call neobundle#end()

" Required:
filetype plugin indent on

" 未インストールのプラグインを確認

NeoBundleCheck

"-------------------------
" End Neobundle Settings.
"-------------------------

let g:quickrun_config = {}

let g:quickrun_config={'_': {'split': ''}}
set laststatus=2
set t_Co=256

" runner を vimproc に設定
" 更新時間も設定しておく
let g:quickrun_config = {
\ "_" : {

\       "outputter" : "multi:buffer:quickfix",
\       "outputter/buffer/split" : ":top 8sp",
\       "runner" : "vimproc",
\       "runner/vimproc/updatetime" : 40,

\ }
\}

let g:quickrun_config["tex"] = {

            \   "command" : "tex2pdf.sh",
            \     "cmdopt": " ",
            \   "exec": "%c %o %s"
              \ }

"vimrc設定終わり

コメント

このブログの人気の投稿

471びぼーろく; ffmpegの音・映像ずれ修正

329びぼーろく; latexでヤング図を書く

531びぼーろく; python上でのヤコビ楕円関数