スキップしてメイン コンテンツに移動

物理学のためのTeX・プログラミング環境 for Windows (2017年4月版)

自分用メモとして, 2017年4月27日時点での手元のPC環境を記録しておきます. この環境を整えてからひと月も経っていないので, 今後いろいろと変更する可能性がありますが.

主としてTeXによる文書作成, たまにC言語/Fortran 90によるちょっとした数値計算を想定しています. 要するに, Bash on Windows万歳! という記事です.



PC環境

デスクトップ, ノートともにWindows 10 Creators Updateで, Bash on Windows (以下BoW) を使用しています. 従って事実上のUbuntu 16.04が動いています. BoWのインストールについてはこちらの記事がわかりやすいです (Anniversary Updateなので若干古いですが).


Windows側のアプリ

テキストエディタとしてAtom, PDFビューワーとしてsumatraPDF, グラフ作成にはgnuplot 5.0を使用しています. AtomおよびBoWのフォントはRictyです.


Ubuntu側のアプリ

gccおよびgfortranといったコンパイラは


sudo apt install build-essential --gfortran 
により導入できます. BoW上ではEmacs 24を使っています (1回生の頃に使い方を教わったのがこっちだったので…)

sudo apt install emacs
TeX環境はTeX Live 2017 pretestをフルインストールしました. aptから手に入るTeX環境一式は古いので却下.


運用体制

作業ディレクトリは例えばWeak Lensingについて扱う場合には

C:/Users/"name"/Documents/Cosmology/WeakLensing/
で, BoW側からは

/mnt/c/Users/"name"/Documents/Cosmology/WeakLensing/
として参照できます. ただ, 打つのが面倒なので/home/"name"/にC:/Users/"name"/Documents/Cosmology/へのシンボリックリンクを生成しています. 基本的にコーディングはWindows側のAtomで行い, それをBoWでタイプセット/コンパイルしています.

TeXは主にLuaLaTeX 1.0を利用していますが, いまのところ何ら問題には遭遇していないです. 流石にupLaTeXのがタイプセットが早いくらいでしょうか.

数値計算をする場合, BoWでgnuplotが動かないためgnuplotはWindows側で起動しておく必要があること, および数値計算結果に含まれる改行コードがLFになることに注意が必要でしょうか.

コメント

このブログの人気の投稿

UbuntuのPDF編集ツールの使い方まとめ

PDFtkやpoppler-utilsに含まれるツールを使ってPDFを編集するコマンドのまとめです. 0. インストール sudo apt install pdftk sudo apt install poppler-utils UbuntuあるいはBash on Windowsならaptコマンドで一発. 1. PDFの文書情報の表示 pdfinfo (ファイル名) 2. PDFの分割と結合 pdftk (入力ファイル) cat (ページの指定) output (出力ファイル) ページ数の指定は1-12 14-endみたいな形で書けばよい. 入力ファイルを複数指定してページ数の指定を省略すればPDFの結合ができる. 3. PDFをJPEG/PNGに変換 pdftoppm [オプション] (入力ファイル名) (出力ファイル名の接頭辞) JPEGが欲しい場合-jpegを, PNGが欲しい場合-pngをオプションに指定する. デフォルトの解像度はDPI150で粗すぎるのでオプションで-r 300ないし-r 600を指定すべき. 白黒画像にしたい場合は-monoないし-grayを指定 (個人的には-grayのが好み). 複数ページのPDFを変換すると, 出力ファイルは (出力ファイル名の接頭辞)-1.jpg (出力ファイル名の接頭辞)-2.jpg みたいな形で生成される. 4. PDFからテキストを抽出 pdftotext (入力ファイル名) (出力ファイル名) 出力ファイルの文字コードはUTF-8, 改行コードはLF. 出力ファイル名は省略可能. 5. PDFから画像を抽出 pdfimages [オプション] (入力ファイル名) (出力ファイル名の接頭辞) オプションについて: -pngでPNG, -jでJPEG, -tiffでTIFF形式で出力される (オプションなしだとPPM形式) 6. PDFを回転 pdftk (入力ファイル名) cat 1-end(向き) output (出力ファイル名) 向きとしてはleft, right, downまたはnorth, east, west, southが使用可能. ※向きを指定する前にスペースを入れるとエラーになる. 関連ページ...

源ノ明朝/源ノ角ゴシックをLuaLaTeXで使用する (Windows)

源ノ明朝 (Source Han Serif), 源ノ角ゴシック (Source Han Sans) はAdobeとGoogleが作成したCJKフォントで, オープンソースフォントとして公開されています (ライセンスはSIL Open Source License 1.1). 以下では, LuaTeXエンジンでこのフォントを (日本語で) 使用する方法を説明します. あるいは, otfファイルがダウンロードできれば, どのようなフォントにも適用可能です (PDFにフォント埋め込みすることに関してライセンスに注意が必要ですが). Windows10を前提としますが, 他の環境 (Linux/Mac) でもほぼ同じ方法で導入できるんじゃないでしょうか. 使用したのはTeX Live 2016 (LuaTeX-0.95) です.

Rust でテキストファイルのインデントを整形

インデントが不揃いなテキストファイルを整形したくなったので Rust コードを書いたお話。 いつかまた使えそうだけど保管するのが面倒なので、ここに放流しておく。 use std::fs::File; use std::io::{BufReader, BufRead, BufWriter, Write}; fn main() { // ファイル読み込み let file = File::open("input.md").unwrap(); let mut reader = BufReader::new(file); // 出力ファイルの確保 let file = File::create("output.md").unwrap(); let mut writer = BufWriter::new(file); // メインループ (各行ごとに処理) loop { // 一行ずつ読み出す let mut buf = String::new(); let num_bytes = reader.read_line(&mut buf).unwrap(); if num_bytes == 0 { // EOF に到達したらループを抜ける break; } else { // そうでないとき, 整形してファイルに書き出す. let output = format_text( buf ); writer.write(output.as_bytes()).unwrap(); } } } // 先頭が " " のとき 4 文字インデントに整形して返し, // そうでなければ入力を返す関数. fn format_text( buf: String ) -> String { if buf.chars().next() == Some(' ') { format!(...