つぶつぶなるままに

物理とかプログラミングとか

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

BibLaTeX で日本語文献と英語文献の混在を扱う(2018年版)

2013年に日本語文献の著者名を調整するマクロを記事にしたが,\DeclareNameFormat 周辺の仕様が変更されたため,あのマクロはもはや使えない。

最新の biblatex で動くコードを次に示す。

\documentclass{ltjsarticle}
\usepackage[backend=biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{demo.bib}
@article{山田2018,
author = {山田, 太郎 and 鈴木, 花子 and 田中, 次郎},
language = {japanese},
journal = {ほげ学会論文集},
pages = {8--15},
title = {〇〇について},
volume = {8},
year = {2018}
}
@article{Smith2018,
author ={Smith, John and Schmidt, Hans},
journal = {Int. J. Hoge},
pages = {3-5},
title = {Piyo is Fuga},
volume = {10},
year = {2018}
}
\end{filecontents}
\addbibresource{demo.bib}

\newbibmacro*{finalnamedelim:{japanese}}{%
\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
\addspace\multinamedelim
}

\renewcommand*{\finalnamedelim}{%
\iflistundef{language}
{\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
\addspace\bibstring{and}\space}
{\usebibmacro*{finalnamedelim:\strlist{language}}}
}

\newbibmacro*{name:given-family:{japanese}}[4]{%
\usebibmacro{name:delim}{#1#2}\usebibmacro{name:hook}{#1#2}#1\bibnamedelimc#2}

\DeclareNameFormat{given-family}{%
\iflistundef{language}{%
\ifgiveninits
{\usebibmacro{name:given-family}{\namepartfamily}{\namepartgiveni}{\namepartprefix}{\namepartsuffix}}
{\usebibmacro{name:given-family}{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}
}
{\usebibmacro*{name:given-family:\strlist{language}}{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}
\usebibmacro{name:andothers}
}

\begin{document}
山田ら\cite{山田2018}は〇〇について××と言っている。
Smith and Hans\cite{Smith2018}は piyo について fuga と言っている。

\printbibliography
\end{document}

これを lualatex でコンパイルすると
コンパイル結果となる。

最新の biblatex では language フィールド(文献がどの言語で書かれているか)がサポートされているので,usera = {Jpn} ではなく,language = {japanese} で日本語文献を指定する。
ただし,language を設定すると(スタイルによっては)上記のように参考文献リスト内に "japanese" が挿入されてしまう。これを避けるには,使用しているスタイルの bbx ファイルで対応する部分を修正する必要がある。(例えば phys.bbx の場合は,\DeclareBibliographyDrive{article} マクロの \printlist{language} をコメントアウトすればよい)。

スポンサーサイト

Avesta を Visual Studio Community 2015 でビルドする

タブ型ファイラ Avesta を愛用している。
もはやこのファイラがないとほとんど作業ができないと言っても過言ではない。

ただ、Avesta は既に開発が終了しているようで、2006 年から更新されていない(Avesta マニュアル)。
流石に XP を想定して開発されたプログラムを Windows 10 で使うのは色々と辛い。

しかし、幸いなことにソースコードが公開されている。
さらに幸いなことに、ライセンスは Artistic License 準拠で、改変・再配布も制限なしとなっている。

というわけで、とりあえず Avesta を Visual Studio Community 2015 でビルドすることにチャレンジしてみた。

https://github.com/takechi/Avestan

Avesta を名乗るわけにはいかないので、1 文字追加して Avestan とした。深い意味はない。

変更内容は commit のログを参照。
テンプレートが多用された多態的かつ変態的なコード(褒め言葉)で、そのままでは色々とエラーが出たが、一つずつ潰していって、何とかコンパイルを通すことができた。


とりあえず Windows 10, Windows 7 上でビルドできたので、互換モードを利用することなく Avesta を起動できるようになった。

Solaris 11 on VMware で nettle-2.7.1 をインストール

Solaris 11 on VMware に nettle-2.7.1 をインストールする。
OpenSSL の最新バージョンが /usr/local/ssl にインストールされている環境。
% wget http://ftp.gnu.org/gnu/nettle/nettle-2.7.1.tar.gz
% tar xvfz nettle-2.7.1.tar.gz
% cd nettle-2.7.2
% env LDFLAGS="-L/usr/local/ssl/lib -R/usr/local/ssl/lib -lcrypto" ./configure --with-include-path=/usr/include/gmp:/usr/local/ssl/include --enable-shared
% emacs Makefile (最終行の include をコメントアウトする)
% emacs tools/Makefile (同上)
% emacs testsuite/Makefile (同上)
% emacs examples/Makefile (同上)
% make
% make check
% sudo make install
make check で全てのテストをパスしたので、多分 Makefile の最終行は何もしてないんだと思う。

テーマ:ソフトウェア - ジャンル:コンピュータ

CentOS 6.4 + TeX Live 2013 において pxdvi で日本語を表示する

追記
tlptexliveリポジトリ
にあるように,texmf に texmf-dist へのシンボリックリンクを張っておく方がスマートな解決法です.(つまり /usr/local/texlive/2013 で ln -s texmf-dist texmf を実行)

というわけで以下の内容は obsolete です.



CentOS 6.4 に TeX Live 2013 をインストールして tlptexlive リポジトリから pxdvi をインストールしたところ
xdvi: Warning: Unable to find "pxdvi.cfg"!

kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 min10
mktexpk: don't know how to create bitmap font for min10.
mktexpk: perhaps min10 is missing from the map file.
kpathsea: Appending font creation commands to missfont.log.
こんな感じのエラーが出て日本語が表示されなかった。

色々試行錯誤した結果、とりあえず次のようにすれば日本語を表示できることが分かった。
なお、TeX Live 2013 はデフォルトの /usr/local/texlive/2013 以下にインストールされているものとします。

1. texmf.cnf

/usr/local/texlive/2013/texmf.cnf を /usr/local/texlive/2013/texmf-dist/web2c/texmf.cnf で置き換える。
コマンドで言えば
% cd /usr/local/texlive/2013
% sudo mv texmf.cnf texmf.cnf.org
% sudo cp texmf-dist/web2c/texmf.cnf .

2. pxdvi.cfg

/usr/local/texlive/2013/texmf/xdvi/pxdvi.cfg を表示したい dvi ファイルと同じ場所にコピーする。
コマンドで言えば
% cp /usr/local/texlive/2013/texmf/xdvi/pxdvi.cfg .


これでとりあえず日本語が表示されるようになる。
2番目の pxdvi.cfg については、環境変数 XDVIINPUTS に /usr/local/texlive/2013/texmf/xdvi を設定することでも同じ効果が得られる。

texmf.cnf を置き換えたことで起きる副作用は多分ないと思うが、とりあえず pxdvi が TeX Live 2013 に対応してくれるまでの一時凌ぎということで。

環境によっては /usr/local/texlive/2013/texmf.cnf を編集する必要があるようです。
xdvi - TeX Wiki
にある通り、TEXFONTMAPS に /usr/local/texlive/2013/texmf/fonts/map/pxdvi を追加すればよいようです。

xdvi-ptex.map を読み込ませれば O.K. なので、texmf.cnf を編集する代わりに、~/.texlive2013/texmf-var/fonts/map/xdvi に xdvi-ptex.map を配置しても同じ効果が得られます。(少なくとも私の環境では得られました。)
コマンドで言えば
% mkdir ~/.texlive2013/texmf-var/fonts/map/xdvi
% cd ~/.texlive2013/texmf-var/fonts/map/xdvi
% cp /usr/local/texlive/2013/texmf/fonts/map/pxdvi/xdvi-ptex.map .
root の作業は最小限にしたいという方はこちらを :-)

この設定は updmap pxdviUse=true で出来れば幸せなのですが、どうも上手くいかない模様。 【“CentOS 6.4 + TeX Live 2013 において pxdvi で日本語を表示する”の続きを読む】

テーマ:Linux - ジャンル:コンピュータ

Windows + Meadow 環境で AUCTeX のインラインプレビュー

Linux の Emacs でできるんだから,Windows の Meadow でも AUTeX を使えるのでは? と思って調べてみたところ,できてしまった.

0. できること

スクリーンショットはこんな感じ。
p.png
これは DVI の画像ではなく,編集中のエディタの画像である.素晴らしい.
数式にカーソルを合わせると TeX のソースが表示される(上の例だと E=mc2 の下の行)ので,編集して再度プレビューなんてことももちろんできる.

1. インストール

Meadow のウェブページからMeadow 3.00 (KIKU) -- 開発版の setup-ja.exe をダウンロード.
で,実行すると色々聞かれるので,適当に(適切に)答える.途中,「パッケージの選択」があるので,そこの「Utils」→「aucTeX」をクリックしておく.

2. 設定(TeX)

TeX 環境としては、標準的な W32TeX がインストールされていて、platex や gswin32c や dvips などにパスが通っているとする。
その上で、
PkgAUCTeX - Netinstall - Trac
に書いてあるように、for_kakuto-platex のファイルを適切な場所にコピー。(texmf ではなく texmf-local があるなら、そちらに置いたほうがよい)

3. 設定(AucTeX)

%HOME%\.emacs.d\init.el に
;; AUCTeX
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)

;; for multifile
(setq-default TeX-master nil)

;; magnify
(set-default 'preview-scale-function 1.5)

(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(preview-fast-conversion nil)
'(preview-gs-command "gswin32c")
'(preview-gs-options (quote ("-q" "-dNOSAFER" "-dNOPAUSE" "-DNOPLATFONTS" "-dPrinted" "-dTextAlphaBits=4" "-dGraphicsAlphaBits=4")))
'(safe-local-variable-values (quote ((TeX-master . "hoge")))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
を書き込む.%HOME% とは環境変数 HOME のこと。%HOME%が定義されてなくて、かつMeadowをデフォルトパスにインストールした場合は,init.el ではなく C:\meadow\.emacs というファイルに上記テキストを書き込んでも OK だと思う(未確認).先頭がドットのファイルを Windows 上で作る方法は色々ありますが,Meadow に慣れるためにも Meadow で作成してみればよいのでは(参考)。

4. 使ってみる

Meadow で数式や \section や画像を含むような TeX ソースを開き,C-c C-p C-d とする(C-c とは Ctrl を押しながら c を押すこと).
すると、最初のスクリーンショットに挙げたように、数式がエディタ上でインラインプレビューされる。
インラインプレビューを解除するには C-c C-p C-c C-d で元に戻る.カーソル位置の section だけをプレビューするなら C-c C-p C-s で,その解除は C-c C-p C-c C-s など.他にも環境ごとや「その場所」(自動で判断)という機能もある.

とにかくこの機能は素晴らしい.Windows でも Linux でもほぼ変わらず使えるので,ぜひ全 TeX ユーザに使用を検討してもらいたいところ:-)
(なお、他にも AUCTeX には参考文献への自動ジャンプ・補完や label-ref 相互参照の自動ジャンプ・補完など cool な機能がたくさんある) 【“Windows + Meadow 環境で AUCTeX のインラインプレビュー”の続きを読む】

テーマ:ソフトウェア - ジャンル:コンピュータ

次のページ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。