読者です 読者をやめる 読者になる 読者になる

どせいたんさき。

ナスダヨー

aastex v6.1 を linux でコンパイルするとエラーが出る

Astro. LaTeX Note

前提と問題

AAS が提供している AASTeX の version 6.1 でドキュメントをコンパイルしようとすると以下のようなエラーが出た.

pdflatex: Not writing to .bib (openout_any = p).

! I can't write on file `.bib'.
<to be read again> 
                   \relax 
l.139 \begin{document}
                      
(Press Enter to retry, or Control-D to exit; default file extension is `.tex')
Please type another output file name: 

検索してもよく分からなかったのだけど,どうやらこれは aastex61.cls を用いて Linuxコンパイルしようとすると起こる現象らしい.詳細は AASTeX のhttp://journals.aas.org/authors/aastex/linux.html:title=ページに書いてあった.ちなみに OS は Ubuntu 16.04TeX のバージョンは pdfTeX 3.14159265-2.6-1.40.16 (TeX Live 2015/Debian) を用いている.

これは aastex61 の内部で .bib というファイルを作ろうとするのだけど,LinuxTeX システムでは先頭がピリオドから始まるファイルを生成することを禁止しているために生じるエラーらしい.WindowsMac では関係ないそうだ.

解決方法

解決方法は 2 つある.ひとつは aastex61.cls を編集する方法.ファイルの後方にある該当の行をコメントアウトすればよい.この場合はクラスファイルを編集する必要があるが特に問題はない.

--- original/aastex61.cls
+++ modified/aastex61.cls
@@ -6319,8 +6319,8 @@
 
 
 %% get rid of \jobname Notes being sent to .aux file:
-\let\bibdata@app\relax
-\def\pre@bibdata{}
+% \let\bibdata@app\relax
+% \def\pre@bibdata{}
 
 \def\frontmatter@author@produce@script{%
   \begingroup

もうひとつは openout_any=a を設定してコンパイルする方法である.具体的には以下のようにする.

openout_any=a pdflatex manuscript.tex

ただしこちらの方法では .bib という空ファイルが生成されることに注意.

参考資料