GW企画

GWに以下の会でお話しました。内容は私の大学時代の紆余曲折です。赤裸々に話をしました。大学にやってきたけど何を勉強しようか、授業に行こうか、みたいなことを考えている方に役にたてばと思います。他の方の話もおもしろかったので興味がある方はご覧ください(私の箇所は4:18くらいからです):

Golden Week 特別企画 「大学教員・先輩が歩んだ道」

Archシステム復旧

Archが再起動しなくなった場合、別途USBで起動しそこから、既存システムに入った後に、パッケージを消す必要がある。その手順を忘れがちなので記載しておく。

cryptsetup luksOpen /dev/nvme*** (vol name)
mount -o subvol=@ /dev/mapper/(vol name)-root /mnt
mout /dev/nvme*** /mnt/boot
cd /mnt
arch-chroot /mnt /bin/bash
pacman -U /var/cache/pacman/pkg/(消したいパッケージ)
exit
umount /mnt/boot
umount /mnt

はじめの部分でluksのボリュームを復号化する。2行目の@はbtrfsのサブボリュームで設定していない場合は-o subvol=の部分は不要。

仕事で重要なオンライン会議の前に不用意にシステムアップデートを行い、起動しなくなったので焦った。今回はpam, pambaseに問題があったようである:

https://bugs.archlinux.org/task/67636?project=1&order=lastedit&sort=desc

未だ解決されていないので、とりあえず旧バージョンで固定しておく。

apsrev4-2.bst 日本語文献対応への一歩

概要

以下の2つの記事を参考にしてアメリカ物理学会(APS)の標準のbibtexのスタイルファイルapsrev4-2.bstで日本語の本も表示することができるようにしてみた。

これまで、bstファイルは何が書いてあるのかさっぱりわからなかったが、上記の記事で、雰囲気はわかるようになった。大変すばらしい記事だ。今回はapsrev4-2.bstを使って日本語の本を処理するための改造法について記載する。

これで本の日本語表記ができるようになった。具体的には”[1] 山田 一郎 , 山田 次郎 , 山田 三郎 , 山田 四郎 , 「文献 1 」 ( 五郎社 , 2019).”とできるようになる。

とりあえず現時点でのバージョンを以下のようにアップロードしておく:

以下のコードをtexファイルに追加して使用できる。

\usepackage[sort&compress,numbers]{natbib}
\usepackage{doi}\usepackage{hyperref}
\bibliographystyle{apsrev4-2ja}

bibファイルには以下のようにisjapaneseを追加する:

@book{jt,
author = {一郎, 山田 and 次郎, 山田 and 三郎, 山田 and 四郎, 山田},
year = {2019},
title = {文献1},
publisher = {五郎社},
isjapanese = {true}
}

isjapaneseを自動追加するコードが「日本語と英語の共存するbibtexのスタイルファイルを作る」に公開されている。

変更の詳細

日本語文献用の変数を追加

まず、上の参考サイトにあるように日本語文献情報の設定をbibファイルに入れれるようにする:

41a42
>     isjapanese
186c187
< INTEGERS { control.author.jnrlst control.author.dotless control.author.nospace control.author.initials control.author.nocomma control.author.first control.author.reversed }
---
> INTEGERS { control.author.jnrlst control.author.dotless control.author.nospace control.author.initials control.author.nocomma control.author.first control.author.reversed japanese.flag}
220,221d220
<   #0
<   'japanese.flag  :=

さらに、bookで日本語が扱えるようにするために、FUNCTION {book}に以下のような日本語化フラグの設定を追加。

2699c2733,2741
< { output.bibitem
---
> {
>   %%変更箇所1:日本語エントリに何かあれば日本語化するフラグを立てる
>   isjapanese empty$
>     {skip$}
>     {#1 'japanese.flag :=}
>   if$
>   %%変更箇所1ここまで
>   
>   output.bibitem
2742a2785,2788
> 
>   %%変更箇所2:次の文献のために日本語化フラグの解除(0に戻しておく)
>   #0 'japanese.flag :=
>   %%変更箇所2ここまで  

and抑制

日本語文献に対してandを抑制するにはbbl.and関数を書き変えるとよい。

828c839,847
<   "and"
---
>   % 日本語の場合はandを抑制
>   japanese.flag #0 =
>   {
>     "and"
>   }
>   {
>     ""
>   }
>   if$   

名前を「山田 太郎」のような日本語表記に

format.names.morfont関数内を書き変える。

1487,1493c1506,1518
<     control.author.initials {
<       "f"                        % default: name + surname + comma junior
<     } {
<       "ff"
<     } if$
<     control.author.dotless 'skip$ {
<       "." *                    % nm-init   % Initials. + surname (J. F. Smith)                                           control.author.initials
---
>     
>     % 日本語の場合は名前を略さない
>     japanese.flag #1 =
>     {"ff"}
>     {    
>       control.author.initials {
> 	  "f"                        % default: name + surname + comma junior
> 	} {
> 	"ff"
>       } if$
>       control.author.dotless 'skip$ {
> 	"." *                    % nm-init   % Initials. + surname (J. F. Smith)                                           control.author.initials
>       } if$
1494a1520
>     
1497c1523,1531
<       { tie.or.space.prefix bib.fname.font swap$ * }
---
>     {
>       % 日本語の場合は名前と名字を入れ変える
>       japanese.flag #1 =
> 	{swap$}
> 	{skip$}
>       if$
>       
>       tie.or.space.prefix bib.fname.font swap$ *
>     }

文献の強調を「」にする

761,766c760,777
<   duplicate$ empty$
<     { pop$ "" }
<     {
<       "\emph {" swap$ * "}" *
<     }
<   if$
---
>   % 日本語の場合はemphasizeを「」で包むだけにする
>   japanese.flag #0 =
>   {
>     duplicate$ empty$
>     	{ pop$ "" }
> 	{
> 	  "\emph {" swap$ * "}" *
> 	}
>     if$
>   }
>   {
>     duplicate$ empty$
>     	{ pop$ "" }
> 	{
> 	  "「" swap$ * "」" *
> 	}
>     if$
>   } if$

arXivは表示しないようにする

#0 ‘control.eprint :=としてディフォルトではarXiv情報は表示しない。

216c217
<   #0
---
>   #1

inkscpae 0.92.3-7 (in Manjaro) にcrash-snapパッチ適用

Manjaroのinkscape 0.92.3-7 がsnapをonにしているとやたら落ちる。論文用の図を作るにあたってイライラするので修正。Ubuntuのパッケージではパッチがあたっているのでそれを利用する。

ubuntuのレポジトリにあるinkscapeのソースからinkscape_0.92.3-4.debian.tar.xzをダウンロードする。debian/patches/upstream/tunkに入っているcrash-snap-lp1796046.patchを抜き出す。その後Arch LinuxのinkscapeのレポジトリからPKGBUILDとpoppler-fixes-from-master.patchを落としてきて同じディレクトリに入れる。

PKBUILDのsourceに’crash-snap-lp1796046.patch’を追加し、sha256sumsにチェックサムを記述したのちpatch -Np1 -i ../crash-snap-lp1796046.patchをprepare()に追加し、makepkg -sでコンパイルしてパッチを適用したパッケージを作成。sudo pacman -U inkscape*.pkg.tar.xz でインストール。

応物記事訂正

2018年3月号の応用物理学会誌に「金属チェッカーボードフィルムの臨界電磁応答とそのテラヘルツ波応用」の題目で研究紹介を書かせて頂きました。この中の図7の縦軸が間違っておりましたので、お詫びして以下のように訂正いたします。

図7(b), (c)で縦軸の”Amp. trans.”を”Normalized transmission”と訂正いたします。また、そのキャプションの”(b)|t_x|, (c)|t_y|”の部分を”(b)|t_x|^2, (c)|t_y|^2″といたします。(すなわち、引用元の原著論文のデータが正しいものです。)

論文を書くときは細心の注意を払っているのですが、間違いを0にするというのは本当に難しいです。今回はデータに関する部分なのでショックです。こういった記事を書くとき、途中から変な先入観ができてしまい、何度読んでもなかなか間違いを見抜けなくなる、ということがよくあります。期間をあけて見直す、たくさんの人達に読んで貰う、を続けるしかないのでしょうね。

VTK on Julia

JuliaでVTKのデータを扱いたかったのだが、Mohamed Tarek氏によるライブラリが公開されていた。こういうのを作ってくれるのは本当にありがたい。 VTKDataTypes.jlVTKDataIO.jlをPkg.cloneでインストールし、適当に依存関係を解決すれば使える。

たとえばVTKの矩形メッシュ上のデータは以下のようにすると読める:

using VTKDataTypes
using VTKDataIO

data = read_vtk("m000000.vts")

data. point_coordsがメッシュの座標データで、data.point_dataが辞書型のデータになっている。

Juliaのコンパイル with MKL

Juliaというスクリプト言語を数値処理に使いだした。速いし、線形代数ライブラリが整備されており使いやすい。今までMatlabが独占的だった数値計算用のスクリプト言語に新たな風を吹かせている。Intel CompilerなしでもビルドすればIntel MKLが使える。ただし、以下のようにコンパイルする必要がある(Julia v0.6 & Ubuntu 16.04のとき).

    1. Intel MKLをインストールしておく
    2. git で juliaのリポジトリをローカルにクローン
    3. Makefile.userを以下の内容で準備してjuliaのメインディレクトリに置く (最後はインストールディレクトリ)
      override USE_INTEL_MKL=1
      override USE_INTEL_LIBM = 0
      prefix=/home/hoge/julia
    4. そのまますると固有値計算のライブラリであるARPACKがうまくコンパイルできないので、以下をdeps/tools/common.mkに記述:

      ifeq  ($(USE_INTEL_MKL), 1)
      ifneq ($(USEIFC),1)
      USE_BLAS_FFLAGS += -ff2c
      endif
      endif
      

      参考:

    5. source /opt/intel/mkl/bin/mklvars.sh intel64 ilp64としてからmake -j4する
    6. make testallでコンパイル結果をチェックできる。
    7. ただし、cmdlineargs.jlの以下の箇所でエラーがでるが、解決できていない。あまり関係なさそうなので放置中。
      if !is_windows() && VersionNumber(Base.libllvm_version) > v"3.3"
      testdir = mktempdir()
      cd(testdir) do
      rm(testdir)
      @test success(`$exename -e "exit(0)"`)
      end
      end
      
    8. make installする

BST file for Physical Review Applied

Physical Review Applied用のBSTファイルが見つからないため自分で用意した。元ファイルはrevtex付属のapsrev4-1.bst。

修正箇所:

  • string.enquote内のbbl.enquote “{” * swap$ * “}” *をコメントアウト
  • control.titleを#1にセット (逆ポーランドなので’control.title :=のすぐ手前を修正)
  • apsrev4-1_custom.bstと保存し、\bibliographyの手前で\bibliographystyle{apsrev4-1_custom}で呼び出し

Ubuntu 14.04で印刷できなくなる

Ubuntu 14.04でカーネルを3.13.0-59にすると、なぜかAcrobatで印刷できなくなり困った。
また、他のソフトでも両面印刷ができなくなる。使用プリンタはHL-3170CDW。

sudo apt-get remove linux-headers-3.13.0-59 linux-image-3.13.0-59 

上のコマンドで元に戻すことで対応。