【Mac】Java開発の環境構築(JDK, Homebrew, VSCode)
HomebrewでopenJDKのバージョン11をインストールして、VSCodeでも使えるようにします。
環境
- 2022-04-26
- macOS Monterey v12.3.1
- Visual Studio Code: v1.62.3
- Extension Pack for Java: v0.21.0
Java開発の環境構築
Javaの開発環境を構築するには、JDKというコンパイラやその他もろもろがまとめられたモノをインストールすれば良い。
「JDK」自体は一般的な概念だが、実物としてはいろいろなところから提供されているらしい(OracleとかMicrosoftとか)。
JDKは提供元の各サイトのダウンロードページから入手することができるが、今回はHomebrewを使ってインストールすることにする。
まずはどんなJDKがHomebrewに登録されているか確認する。brew search
コマンドを実行してみる:
% brew search jdk ==> Formulae openjdk openjdk@11 openjdk@17 openjdk@8 jd mdk cdk ==> Casks adoptopenjdk microsoft-openjdk oracle-jdk-javadoc semeru-jdk-open jdk-mission-control oracle-jdk sapmachine-jdk
いろいろあるけど、今回はopenJDKのバージョン11をインストールしてみる。 下記コマンドを実行:
brew install openjdk@11
このパッケージは「keg-onlyなパッケージ」なので、シンボリックリンクは自動で作られない。 そのため、自分でシンボリックリンクを作るか、パスを通すなどをしなければならない。
ちなみに、macだと多分標準でjava
やjavac
が既にインストールされている。
% java --version java 13.0.2 2020-01-14 Java(TM) SE Runtime Environment (build 13.0.2+8) Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing) % javac --version javac 13.0.2
これからパスの設定をして、java
やjavac
と打ったときにちゃんと新しくインストールしたものに変更されているか確認する。
Homebrewからインストールしたopenjdk@11
に含まれているjava
コマンドなどは、以下のディレクトリに配置されている:
/usr/local/opt/openjdk@11/bin
そのため、このディレクトリにパスを通す。
使用しているシェルがzsh
の場合には、~/.zshrc
ファイルにパスを追加するためのコマンドを書けばいい。
bash
なら~/.bash_profile
に書く。
ターミナルから下記コマンドを実行すれば良い:
echo 'export PATH="/usr/local/opt/openjdk@11/bin:$PATH"' >> ~/.zshrc
既存パスの左側にopenjdk@11
へのパスを追加したので、これらのパスのうちに同じjava
というコマンドがあった場合にも、openjdk@11
にあるjava
コマンドが優先して呼ばれるはず。
シェルの設定ファイル再読み込みする:
source ~/.zshrc
そのあと、もう一度java
やjavac
コマンドを実行してみると、ちゃんとインストールしたバージョンが表示されていることが確認できる:
% java --version openjdk 11.0.15 2022-04-19 OpenJDK Runtime Environment Homebrew (build 11.0.15+0) OpenJDK 64-Bit Server VM Homebrew (build 11.0.15+0, mixed mode) % javac --version javac 11.0.15
which
コマンドでも確認できる:
% which java /usr/local/opt/openjdk@11/bin/java % which javac /usr/local/opt/openjdk@11/bin/javac
また、HomebrewでインストールしたJDKをシステム?に認識させるには、/Library/Java/JavaVirtualMachines/
以下にシンボリックリンクを作成する必要がある。
下記コマンドでシンボリックリンクを作成:
sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk
java_home
コマンドで、インストールされているJDKのバージョンを確認できる:
% /usr/libexec/java_home -V Matching Java Virtual Machines (2): 13.0.2 (x86_64) "Oracle Corporation" - "Java SE 13.0.2" /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home 11.0.15 (x86_64) "Homebrew" - "OpenJDK 11.0.15" /usr/local/Cellar/openjdk@11/11.0.15/libexec/openjdk.jdk/Contents/Home /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home
バージョン11のHome
ディレクトリのパスだけがほしい場合は、次のようにして得られる:
% /usr/libexec/java_home -v 11 /usr/local/Cellar/openjdk@11/11.0.15/libexec/openjdk.jdk/Contents/Home
実行テスト
コンパイルと実行のテストをする。
カレントディレクトリに次の内容のファイルをTest.java
という名前で保存する:
public class Test { public static void main(String [] args) { System.out.println("Hello Java!!!!!!"); } }
javac
コマンドでコンパイル:
javac Test.java
すると、Test.class
というバイナリファイルが生成される。
% ls Test.class Test.java
最後に、java
コマンドでプログラムを実行する:
java Test
## -> Hello Java!!!!!!
ちゃんとテキストが表示されればok。
VSCodeで開発環境を構築
vscodeでJavaの拡張機能を入れれば、ボタンをポチポチするだけでプログラムを実行できるようになる。
vscodeの拡張機能検索窓にjava
と入れて、上の方に表示される「Extension Pack for Java」をインストールする。
次に、java_home
の設定を行う。
使いたいバージョンのjava_home
のパスをメモっておく。
パスはjava_home
コマンドで知ることができる:
% /usr/libexec/java_home -v 11 /usr/local/Cellar/openjdk@11/11.0.15/libexec/openjdk.jdk/Contents/Home
vscodeに戻って、cmd + ,
で設定を開く。
java.jdt.ls.java.home
と検索して表示される項目で、「settings.json で編集」というところをクリックする。
あるいは、普通にsettings.json
を開く。
一番外側にある括弧{ }
の中に、java home
を設定するコードを追加する。
{ }
内に既に何か書いてある場合は、カンマ,
で区切ってから追加する。
例えば、以下のような感じ:
"java.jdt.ls.java.home": "/usr/local/Cellar/openjdk@11/11.0.15/libexec/openjdk.jdk/Contents/Home",
再起動とかを勧められたら適宜行う。
以上で設定は完了。
テストをするには、さっきのTest.java
をvscodeで開いて、タブの右側にあるボタン▷
を押すか、main
メソッドの上に表示されている「Run」を押す。
そしたら、実行結果がエディタ内ターミナルに表示される。
このときに、ちゃんとjava home
を指定したバージョンのjava
が呼ばれていることを確認する。
以上!
疑問
よく環境変数$JAVA_HOME
を設定しましょうみたいな話があるが、やる意味あるのか疑問。
使いたいバージョンのjava
とjavac
コマンドがちゃんと呼ばれてたら十分だと思う。
$JAVA_HOME
を設定したとしても、vscodeのsettings.json
で改めて設定しないとそのバージョンのjava
は呼ばれないし、そもそも誰が$JAVA_HOME
なんていう変数を参照しているのか不明。
というわけで、環境変数$JAVA_HOME
を設定する意味はないかと思う。
参考
- https://openjdk.java.net
- https://qiita.com/gishi_yama/items/ee3526e7e7a922148333
- https://qiita.com/seri_k/items/e978c1339ce51f13e297
- https://zenn.dev/odentravel/books/c893bb0b7352f6/viewer/1aa99a
- https://xtech.nikkei.com/it/article/COLUMN/20060227/230812/
メモ
brew install openjdk@11
を実行したときに表示された指示書(?)。
For the system Java wrappers to find this JDK, symlink it with sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk openjdk@11 is keg-only, which means it was not symlinked into /usr/local, because this is an alternate version of another formula. If you need to have openjdk@11 first in your PATH, run: echo 'export PATH="/usr/local/opt/openjdk@11/bin:$PATH"' >> ~/.zshrc For compilers to find openjdk@11 you may need to set: export CPPFLAGS="-I/usr/local/opt/openjdk@11/include"
CPPFLAGS
の設定はしていないけど、一応java
動いたし、やらんでいいのかな?
環境変数CPPFLAGS
の意味がよくわからんので、一応メモとして残しておく。
【Safari】倍速再生ができるようになる拡張機能(MacOS)
さて、macOSのSafariで倍速再生ができる拡張機能のご紹介です。
Speed Player for Safari
結局、これ以外ないんじゃないかな。
最新アプデが6ヶ月前ですが、一応動きます(Monterey, 2022.4.7)。
Accelerate for Safari
これもそういう機能のはずですが、インストールしても機能しませんでした(Monterey, 2022.4.7)。
アプデも4ヶ月止まっているようです。
おわりに
Speed Player for Safari以外で正しく機能する、倍速再生の拡張機能があったら教えて下さい。
あるいは、作ってください!(^o^)/
以上です。
【LaTeX】ファイルを分割してサブディレクトリに配置する
本記事の目的
大規模なtex文書をファイル分割することでQOL向上に努めた証の記録。
順を追って解説します。
環境・バージョン
タイプセットはlatexmk (uplatex + dvipdfmx)
コマンドで行います。
最後の方では、vscodeというエディタの拡張機能LaTeX Workshopを用いてタイプセットする方法も書いています。
素朴な方法
分割したtexファイルをsection01.tex
、section02.tex
とします。
これらをmaster.tex
で読み込んで、pdfファイルを作ります。
それぞれのファイルの中身は以下のような感じです。
%% master.tex \documentclass[uplatex,dvipdfmx]{jsarticle} \begin{document} \input{section01.tex} \input{section02.tex} \end{document}
%% section01.tex \section{ひとつめ} ほげほげ
%% section02.tex \section{ふたつめ} ほげほげ2
分割したファイルsection01.tex
とsection02.tex
には、document
環境の中身だけを書きます。
master.tex
ファイル内で\input
コマンドを書いたところに、引数で与えたファイルの内容がそのまま挿入されます。
つまり、master.tex
ファイルをタイプセットすれば、全ての内容を含んだ文書が完成するわけです。
しかし、この方法では、分割したファイルを単体でタイプセットすることができません。
分割したファイルにはdocument
環境の中身しか書いていないので、tex文書としては不完全であるからです。
この不満点は、docmute
パッケージを用いることで解決できます。
docmuteパッケージ
docmute
パッケージを用いると、\input
で分割ファイルを挿入する際に、document
環境内のみを抽出して読み込んでくれます。
(正確には、document
環境を改造して、入れ子になったdocument
環境やプリアンブルを無視するようにしている。)
例えば、次のようにして使います。
%% master.tex \documentclass[uplatex,dvipdfmx]{jsarticle} \usepackage{docmute} \begin{document} \input{section01.tex} \input{section02.tex} \end{document}
%% section01.tex \documentclass[uplatex,dvipdfmx]{jsarticle} \usepackage{docmute} \begin{document} \section{ひとつめ} ほげほげ \end{document}
%% section02.tex \documentclass[uplatex,dvipdfmx]{jsarticle} \usepackage{docmute} \begin{document} \section{ふたつめ} ほげほげ2 \end{document}
このとき、分割したtexファイルは、単体でもタイプセットを行うことができます。
さらに、master.tex
もそのままタイプセットができます。
分割ファイルで、目次や文献の出力を行う
せっかく、分割したファイルを単体でタイプセットできるようになったので、その場で目次や文献の出力の確認も行いたいところです。
いくつか方法は思いつきますが、例えば、シンプルにif文を使って、今タイプセットしているファイルが分割ファイルかmaster.tex
なのか判定して処理しましょう。
プリアンブルは各ファイルで共有したいので、mymacro.sty
ファイルを作って読み込むことにします。
%% ディレクトリ構造 / |- mymacro.sty |- mybib.bib |- master.tex |- section01.tex `- section02.tex
%% mymacro.sty \newif\ifsubfile \newcommand\mokuji{ \ifsubfile \tableofcontents \clearpage \else \relax \fi } \newcommand\bunken{ \ifsubfile \clearpage \bibliographystyle{junsrt} \bibliography{mybib} \else \relax \fi }
%% mybib.bib @book{hoge2022, title = {ほげほげ}, author = {ほげ星人}, year = {2022} }
%% master.tex \documentclass[uplatex,dvipdfmx]{jsarticle} \usepackage{docmute} \usepackage{mymacro} \begin{document} %% 目次 \tableofcontents %% 本文 \input{section01.tex} \input{section02.tex} %% 文献 \bibliographystyle{junsrt} \bibliography{mybib} \end{document}
%% section01.tex \documentclass[uplatex,dvipdfmx]{jsarticle} \usepackage{mymacro} \subfiletrue \begin{document} %% 目次 \mokuji \section{ひとつめ} ほげほげ\cite{hoge2022}. %% 文献 \bunken \end{document}
分割したtexファイルでは\subfiletrue
と書いてあるので、\ifsubfile
がtrue
になります。
master.tex
をタイプセットするときには、それはfalse
なので、\mokuji
と\bunken
は何もしないコマンド(\relax
)になります。
分割ファイルをサブディレクトリに入れる
分割したファイルが多くなってくると、サブディレクトリに格納したくなります。
texファイルなどをサブディレクトリに配置すると、パスの設定をちゃんとしないといけなくなります。
ここでは、以下のようなディレクトリ構造にしてみます:
/ |- .vscode/settings.json |- fonts/ | `- フォントファイル |- sty/ | `- mymacro.sty |- sections/ | |- 01.tex | `- 02.tex |- latexmkrc |- master.tex `- mybib.bib
まず、latexmk
の設定ファイルであるlatexmkrc
ファイルには、以下のように書きます:
#!/usr/bin/env perl ## latexコマンドの共通オプション $latex_options = '-synctex=1 -halt-on-error -file-line-error -interaction=nonstopmode'; if ($^O eq 'MSWin32') { # Windows の場合 $latex = "uplatex %O $latex_options -kanji=utf8 -no-guess-input-enc %P"; } else { # Windows以外のOSの場合(Linux, macOS) $latex = "uplatex %O $latex_options %P"; } $lualatex = "lualatex %O $latex_options %S"; $biber = "biber %O --bblencoding=utf8 -u -U --output_safechars %B"; $bibtex = "pbibtex %O %B"; $makeindex = "upmendex %O -o %D %S"; $dvipdf = "dvipdfmx %O -o %D %S"; ## latexコマンドの最大実行回数 $max_repeat = 5; ## $dvipdfを利用して.dviからPDFを作成 $pdf_mode = 3; ## specifies cleanup mode ## dvi, ps, pdfファイル以外を削除 $cleanup_mode = 2; ## -c optionで消すファイルの拡張子 $clean_ext = "bbl dvi"; ## show CPU time used $show_time = 1; ## パスの設定 - - - - - - - - - - - - - - - - - - - - - ## ルートディレクトリを探して登録 $key_file = 'master.tex'; if (-e $key_file) { $root_dir = '.'; } elsif (-e '../' . $key_file) { $root_dir = '..'; } ## styやfontを探索するパスを追加 if ($root_dir){ $ENV{'TEXINPUTS'} = $root_dir . '/;' . $root_dir . '/sty//;'; $ENV{'OPENTYPEFONTS'} = $root_dir . '/fonts//;'; }
前半部分は好きに書いて下さい。後半部分でパスの設定をしています。
分割したtexファイルの配置場所を変えたので、master.tex
の内容も少し修正します:
%% 修正前 \input{section01.tex} \input{section02.tex} %% 修正後 \input{sections/01.tex} \input{sections/02.tex}
ここで、sections/01.tex
には、上のsection01.tex
の内容をそのままコピペして下さい。02
の方も同じです。
サブディレクトリに配置したtexファイルから見て、bibファイルの相対位置が変わったので、\bunken
マクロを少し修正します。
\newcommand\bunken{ \ifsubfile \clearpage \bibliographystyle{junsrt} %% \bibliography{mybib} % 修正前 \bibliography{../mybib} % 修正後 \else \relax \fi }
他のファイルは、上で作ったそのままで良いです。
master.tex
をタイプセットするには、それと同じディレクトリに移動して
latexmk master.tex
と打ちます。
分割したセクションのtexファイルをタイプセットするには、sections
ディレクトリに移動してから
latexmk -r ../latexmkrc 01.tex
と打ちます。設定ファイルをオプションで直接指定しています(面倒ですが)。
vscodeでタイプセットするには、.vscode/settings.json
に以下の設定を書きます:
{ "latex-workshop.latex.tools": [ { "name": "Latexmk for sub dir", "command": "latexmk", "args": [ "-e", "read_first_rc_file_in_list( '../latexmkrc' );", "%DOC%" ] }, ], "latex-workshop.latex.recipes": [ { "name": "MASTER", "tools": [ "Latexmk for sub dir" ] }, ] }
↑を書いたら、vscodeを再起動します。(作業ディレクトリを開き直す)
そうしたら、master.tex
やsections/01.tex
などを開いて、サイドバーの「TeX」から「Build LaTeX project」の「Recipe: MASTER」をクリックすれば、タイプセットができるはずです。
また、サブディレクトリのsections/
内のtexファイルで、\includegraphics
コマンドなどを使う場合には、挿入する画像や図のファイルのパスは、master.tex
ファイルから見た相対パスを書けばよいです。
以上、説明が冗長な割にクソわかりにくいかと思いますが、とりあえず忘れないうちに記録しておきました。
【beamer】frame環境内で\defコマンドを使う【LaTeX】
環境内などで\def
コマンドによってマクロを定義すれば、その範囲(スコープ)内だけで使えるマクロになります(local macro)。
しかし、スライドのbeamer
クラスで用意されるframe
環境内で引数を取るlocal macroを定義しようと思ったら怒られました。
ダメ:
\begin{frame}{たいとる}{さぶ} \def\hoge#1{\relax} \end{frame} %% エラー %% -> Illegal parameter number in definition of \iterate.
どうやら#
を使うのがまずいみたいです。
代償はよくわかりませんが、frame
環境にfragile
オプションを与えれば使えるようになります。
OK:
\begin[fragile]{frame}{たいとる}{さぶ} \def\hoge#1{\relax} こんにち\hoge{こんばん}は \end{frame}
なんか、vrb
という中間ファイルが生成されますが、タイプセット後に消せば問題ないでしょう。
以上。
【LaTeX】数式番号にセクション番号を入れる(付録の修正についても)
数式番号にセクション番号を入れる方法を述べます。
標準(jsarticle.cls
)なら、数式番号は全セクションを通して(1), (2), ...
のように出力されるかと思います。
これにセクション番号を入れて、(1.1), (1.2), ..., (2.1), ...
のように出力されるようにします。
ついでに、数式番号だけじゃなくて図や表の番号もそういうスタイルに変更します。
環境
バージョン違っても多分大丈夫だと思いますが、想定している文書クラスが違うとダメかもしれないです。
- TeXLive 2019
uplatex + dvipdfmx
- 文書クラス:
jsarticle.cls
方法
プリアンブル(\documentclass
と\begin{document}
の間)に下記コードを追加します:
\makeatletter \@addtoreset{equation}{section} \@addtoreset{figure}{section} \@addtoreset{table}{section} \makeatother \renewcommand{\theequation}{\thesection.\arabic{equation}} \renewcommand{\thefigure}{\thesection.\arabic{figure}} \renewcommand{\thetable}{\thesection.\arabic{table}}
これでokと言いたいところですが、これでは\appendix
以降の付録のセクション中では、数式番号が(付録A.1)
のように出力されてしまいます。
数式番号には付録
という文字を入れたくないので、jsarticle.cls
で定義されている\appendix
コマンドを改造します。
ちなみに、jsarticle.cls
の場所が知りたいときは、ターミナルでkpsewhich jsarticle.cls
と打つとファイルのパスを教えてくれます。
さて、\appendix
コマンドを以下のように再定義します。
プリアンブルに追加してください。
\makeatletter \renewcommand{\appendix}{\par \setcounter{section}{0}% \setcounter{subsection}{0}% \gdef\presectionname{\appendixname}% \gdef\postsectionname{}% \gdef\thesection{\presectionname\@Alph\c@section\postsectionname}% \gdef\thesubsection{\@Alph\c@section.\@arabic\c@subsection}% %% 追加 \renewcommand{\theequation}{\@Alph\c@section.\arabic{equation}}% \renewcommand{\thefigure}{\@Alph\c@section.\arabic{figure}}% \renewcommand{\thetable}{\@Alph\c@section.\arabic{table}}% } \makeatother
これで、付録のセクション中での数式番号は(A.1), (A.2), ...
のようになります。
\thesection
を再定義してしまうと、見出しや目次などで付録
の文字が表示されなくなってしまうので注意です。
また、もう一つ補足として、セクションが無い場合には、数式番号が(0.1), (0.2), ...
のように、セクション番号が0
と扱われて出力されます。
1ページのアブストなどの文書ではセクションは使わないので、そのときは元に戻したいです。
プリアンブルをstyファイルにしていろんな文書で使い回してる人には、if文でなんとか条件分けして欲しいところです。
ということで、以下のような修正案を提示します:
\renewcommand{\theequation}{% \ifnum\thesection>0 \thesection.\arabic{equation}% \else \arabic{equation}% \fi }
セクションがある(セクション番号が0
より大きい)ときにだけ、数式番号にセクション番号を追加します。
行末の%
は取っちゃダメです。余計なスペースが入ります。
まとめとサンプル
以上でもう文句はないかと思います。
最後に全部まとめた、タイプセット可能なサンプルコードを書いておきます。
%% uplatex -> dvipdfmx \documentclass[uplatex]{jsarticle} \usepackage{amsmath} \makeatletter \@addtoreset{equation}{section} \@addtoreset{figure}{section} \@addtoreset{table}{section} \renewcommand{\theequation}{% \ifnum\thesection>0 \thesection.\arabic{equation}% \else \arabic{equation}% \fi } \renewcommand{\thefigure}{% \ifnum\thesection>0 \thesection.\arabic{figure}% \else \arabic{figure}% \fi } \renewcommand{\thetable}{% \ifnum\thesection>0 \thesection.\arabic{table}% \else \arabic{table}% \fi } \renewcommand{\appendix}{\par \setcounter{section}{0}% \setcounter{subsection}{0}% \gdef\presectionname{\appendixname}% \gdef\postsectionname{}% \gdef\thesection{\presectionname\@Alph\c@section\postsectionname}% \gdef\thesubsection{\@Alph\c@section.\@arabic\c@subsection}% %% 追加 \renewcommand{\theequation}{\@Alph\c@section.\arabic{equation}}% \renewcommand{\thefigure}{\@Alph\c@section.\arabic{figure}}% \renewcommand{\thetable}{\@Alph\c@section.\arabic{table}}% } \makeatother \begin{document} \section*{イントロ} 数式(\ref{eq:Euler})はオイラーの公式です(図\ref{fig:Euler}や表\ref{tab:Euler}を参照). \begin{align} e^{i \theta} = \cos\theta + i \sin\theta \label{eq:Euler} \end{align} \begin{figure} \caption{オイラー} \label{fig:Euler} \end{figure} \begin{table} \caption{オイラー} \label{tab:Euler} \end{table} \section{にゃあ} にゃお〜.数式(\ref{eq:nyaa})はにゃんこです(図\ref{fig:nyaa}や表\ref{tab:nyaa}を参照). \begin{align} 1 + 1 = 3 \label{eq:nyaa} \end{align} \begin{figure} \caption{にゃあ} \label{fig:nyaa} \end{figure} \begin{table} \caption{にゃあ} \label{tab:nyaa} \end{table} \appendix \section{にゃ〜ん} 付録にゃ.数式(\ref{eq:nyan})は付録のにゃんこです(図\ref{fig:nyan}や表\ref{tab:nyan}を参照). \begin{align} 1 + 1 = 3 \label{eq:nyan} \end{align} \begin{figure} \caption{にゃ〜ん} \label{fig:nyan} \end{figure} \begin{table} \caption{にゃ〜ん} \label{tab:nyan} \end{table} \end{document}
タイプセット結果:
以上です。お疲れさまでした。
ZoteroのBibTeX書式出力を見やすくする【CSL】
最近、論文などの文献管理ツールをMendeleyからZoteroに乗り換えました。
Zoteroでは登録した文書を右クリックして、メニューから「参考文献目録を作成」を選択すれば、好きな形式で文献情報を取得できます。
LaTeXで参考文献を記載する場合はbib
ファイルを用意して、BiBTeXで出力するのが一般的かと思います。
標準ではbib
ファイルに記載するBibTeX用のスタイルは用意していないので、自分でネットからダウンロードします。
「環境設定(cmd + ,
)」->「引用」タブを開き、「他の引用スタイルを入手する」をクリックし、Zoteroのスタイルが配布されているサイトで「bibtex」と検索すると「BibTeX generic citation style」というスタイルがヒットするので、それをクリックします。
bibtex.csl
というファイルがDLされると思うので、それをZoteroで開きます(多分ファイルをダブルクリックすると自動で開く)。
これでインストールが完了し、あとは登録してある文献を右クリックで表示されるメニューから「参考文献目録を作成」を選択し、「引用スタイル」の窓から「BibTeX generic citation style」を選択すればbib
ファイル用のスタイルが出力されます(クリップボードにコピーされる)。
%% 例えば↓ @article{Aharony_Gubser_Maldacena_Ooguri_Oz_2000, title={Large N Field Theories, String Theory and Gravity}, volume={323}, ISSN={03701573}, DOI={10.1016/S0370-1573(99)00083-6}, note={arXiv: hep-th/9905111}, number={3–4}, journal={Physics Reports}, author={Aharony, O. and Gubser, S. S. and Maldacena, J. and Ooguri, H. and Oz, Y.}, year={2000}, month={Jan}, pages={183–386} } %% 全部1行で書かれている
で、まあこれでBibTeXを利用するには十分なのですが、上のスタイルにはいいところで改行が含まれていないので、視覚的に見づらいです。
なので、カンマの後とかにいい感じに改行を追加したスタイルを以下で配布しておきます。
こちらのスタイルだと、以下のように「見やすく」出力してくれます。
@article{Aharony_Gubser_Maldacena_Ooguri_Oz_2000, title = {Large N Field Theories, String Theory and Gravity}, volume = {323}, ISSN = {03701573}, DOI = {10.1016/S0370-1573(99)00083-6}, note = {arXiv: hep-th/9905111}, number = {3–4}, journal = {Physics Reports}, author = {Aharony, O. and Gubser, S. S. and Maldacena, J. and Ooguri, H. and Oz, Y.}, year = {2000}, month = {Jan}, pages = {183–386} }
gistにファイルをうpしておいたので、勝手にDLしてください。
ZoteroのBibTeX出力のスタイル(Citation Style Language) · GitHub
追加方法はさっきと同じで、DLして(解凍した)csl
ファイルをZoteroで開けばいいです。
補足
csl
ファイルといっても、中身はただのXMLです。
なので、改行とかのエスケープ文字はXMLのものを使えばいいです。
また、拡張子になっているcsl
はCitation Style Languageという意味で、これはZotero以外にも使われているようです。
CSLのドキュメントは以下のサイトにあります。
それでは、みなさんも論文執筆頑張ってください。
【Magic Keyboard】Remove right ctrl key top
Mac用のApple純正のMagic Keyboard(US配列)の右ctrlキーが調子悪かったので、キートップを外してみた。 その作業ログです。
動画にすべきでしたが、面倒なので写真だけです。
まず、とにかく薄くて固いものを用意します。 私はヘアピンでやりました。
今回外す右ctrlキーの場合は、キーの「下から」薄くて固いもの(以下ヘアピン)を差し込んで、てこの原理で上に持ち上げます。 パキッと音がするかはわからないですが、そんな感じでパキッとキートップの下部分だけをまずは外します。
下部分が外れたら、少し持ち上げつつ上(キーボードと平行)にスライドします。 キートップの上部分は引っかかってるだけなので、そのまま外れます。
外し方は以上です。 付け直すときは逆の手順で、上部をはめてから下部を添えて、パチッとなるまで下部を押し込む。
ひとつ注意しておくと、キーによってキートップの固定のされ方が異なります。 右ctrl(多分、最下段の他の装飾キーも)の場合は下→上の順で外しますが、アルファベットとかのキーは上→下の順で外すみたいです(いくつか動画観た感じ)。
以下は修復作業のログと感想です。
調子の悪かったキートップを開けてみると、いくつか変形している箇所がありました。 今回、外し方がよくわからずパワーでゴリ開けたような感じになってしまったので、そのときに変形したのか、元から変形していたから調子悪かったのかはわかりませんが、とにかくそれを修復しました。
下の画像で赤丸で囲った3ヶ所が曲がっていたり潰れていたりしたので、とにかく固くて引っ掛かりのあるもの(ヘアピン)でグイッと曲げ直して修復しました。
下の赤丸の金属のΓの上の部分が潰れていたので、ヘアピンを引っかけて引き延ばした。 これは直した後の画像。
反対側も、多分開けるときにミスって変形していた。 ずっと上から外すものだと思っていて、良くない方向に力がかかったからだと思う。
クソ見づらいけど、キートップの裏面のプラスチックの部分も変形していたので曲げ直した。
キートップの裏側。 下の内側のところがパチッとはまる。
MacBookのスペースキーを外したときは支柱がボキボキに折れてしまったが、今回はパワーでこじ開けたにも関わらず修復可能な変形だけで済んで良かった。 バタフライ型よりシザー型が丈夫というのはこのことなのかなと思った。
ということで、以上。
みなさんは壊さないように注意してやりましょう。