MacにおけるTexエディター個人的お勧め

修論に向けてTex環境を整えようとして、色々エディターを触っていたらやっと気に入ったのが見つかったので、主観に基づいてそれぞれ紹介。

綺麗にまとめてくれている人がいたのでこっちも紹介。

MacのLaTeXエディタまとめ

使って見たエディター一覧

それぞれの所感

TeXShop

ずっとこっちを使っていたが、編集画面、コンソール、プレビューがそれぞれ別ウィンドウになっているので、非常に使いにくかった。導入が簡単だったところは良いところだとは思う。もしかしたら設定でどうにかできたのだろうか。

TeXworks

自分の周りではこれを使っている人が結構多かった。しかし、自分は日本語が表示されない不具合により使用を断念。よくあることなようなので、真剣に取り組めば修正できそうな不具合だが、そんなことやるぐらいならTeXShopでいいかと思って放置していた。Windowsだとこれを使っている人が多いイメージ。

Atom

プログラミングで使っていたAtomでもTexの編集ができることを上記のサイトで初めて知った。やってみたら割といい感じだったけれども、プログラミングの環境と文章を書く環境はなんとなく別にしておきたいという感じがしてボツ。これは本当に自分の好みなので、Atom自体は割と悪くなかった感。

Texmaker

お勧めその1。留学生に勧められて初めて存在を知ったが、非常に使い易くて気に入っている。TeXShopで感じていた不満はだいたい解消してくれたやつ。下記サイト通りやれば問題なく利用できたので、導入のしやすさもgood。ただ、LaTeX、Bib(la)tex、Dvipdfmのパスが自分は違っていたので、そこはwhichコマンドで確認するのが吉だと思う。自分の場合は以下の結果になった。現状問題なく使えているので本当にお勧め。

$ which platex
/Library/TeX/texbin/platex

Mac OS X MarvericksへのTeX環境のインストール

Texpad

お勧めその2。上記の「MacLaTeXエディタまとめ」でお勧めされているエディタ。必要な機能はほとんど備えていて使いやすそうなので、高評価なのも納得できる。が、唯一の欠点は有料な点。公式ページに24.99ドルと記載されているので、現在だと約2800円。正直それだけの価値は確かにあるのだとは思うが、残念ながら無課金ユーザーな自分からしたらちょっと遠慮したいところだった。

TeXStudio

追記。Texmakerから派生して出来たものらしいです。教授にオススメされました。どうやらこっちも中々使いやすそう。また使ってみたら更新します。

まとめ

texmakerはいいぞ。

Pythonで日本語間の空白を消す

先日投稿した内容で、日本語間に不要な空白が混じってしまうことに気付いてしまったので、下記のようなコードを考えました。

コード

import re
#str ="田中 太郎 is Japanese boy.という 例文があります。"

#result = re.sub(r'[a-z]+', "0", str)
result = re.sub('([あ-んア-ン一-鿐])\s+((?=[あ-んア-ン一-鿐]))',r'\1\2', str)

print(str)
print(result)
田中 太郎 is Japanese boy.という 例文があります。
田中太郎 is Japanese boy.という例文があります。

という感じで一応の対策はできた気がする。

と思って色々試していたら、おかしな出力の部分がありました。

ウィキペディア へようこそ ウィキペディアは 誰でも編集できる フリー 百科事典 です。
ウィキペディアへようこそウィキペディアは誰でも編集できるフリー 百科事典です。

「フリー百科事典」が「フリー 百科事典」となって、「フリー」と「百科事典」の間に空白が入ってしまっています。 調べましたが、要するに長音が上記の正規表現の中に入っていなかったので、「ー百」の部分を見たときにマッチしていないようでした(一(いち)とー(長音)が区別つきにくい)。ですので、素直に正規表現のパターンに長音を追加します。

result = re.sub('([あ-んア-ン一-鿐ー])\s+((?=[あ-んア-ン一-鿐ー]))',r'\1\2', str)
ウィキペディア へようこそ ウィキペディアは 誰でも編集できる フリー 百科事典 です。
ウィキペディアへようこそウィキペディアは誰でも編集できるフリー百科事典です。

若干の解説

  • re.sub(正規表現パターン, 置換する文字列, 置換される文字列(, 置換する回数))

re.replaceの場合はただの文字列の置換で、re.subだと正規表現を使える。第3引数はなくてもいい。

  • [あ-んア-ン一-鿐ー]

ひらがな、カタカナ、漢字、長音のどれか一文字

  • \s

空白

  • ?=

Pythonの肯定先読み。今回の場合例えば「日 本 語」というのがあって、肯定先読みを行わないパターンだった場合、「日 本 語」のうちまず「日 本」にマッチする。そして「本」は既にマッチした文字列なので「本 語」にはマッチせず、「日本 語」という置換のされ方になる。

しかし、肯定先読みを用いると「〜が後に付く○○」の○○にマッチする。今回だと「日本語が後に着く、日本語+空白」にマッチするので、「日 本 語」の「日 」にマッチして、次に「本 」にもマッチするので「日本語」という出力になる。

  • r'\1\2'

かっこで指定したマッチした1つ目2つ目を繋げる(空白を除く)

以上

これで一応解決したでしょうと思いたい。

追記

結局、またQiitaにも投稿した。

qiita.com

PythonでWebページからテキストのみを抽出する

またQiitaに投稿しました。

qiita.com

HTML内のテキストのみを取り出すということは結構前からやろうとしていました。以前はjavascript正規表現を使って、タグと特定のタグ(scriptとstyle)で囲まれた文章を取り除くという方法でやっていましたが、今回はそれよりも分かりやすく書けているので割と満足しています。

 

 というか調べても意外と参考になりそうなサイトが少なくて、どうにかならんかと思案していたらふと英語で調べてみるかと思い、英語版のstackoverflowで「python beautifulsoup script style」とか調べたら結構あっさり引っかかりました。英語は大事だなあと思いました(小並感)。

 

Googlewikipediaのトップページでしか確認していないのでミスがありそうではあるけれども。

Atomのatom-runnerで実行の中断ができない

OS : macOS Sierra(10.12.3)
Atom : 1.22.0
atom-runner : 2.7.1

タイトルの通りです。Pythonを使って色々やりたいけど難しい。

エディターにAtomを使っていますが、パッケージのatom-runnerで簡単に実行できるので結構気に入っている。

しかし、先日atom-runnerでの実行を中断しようとしても上手くいかないことに気づきいてしまう。というか、atom-runnerの紹介ページは結構あって、実行はMacだとctr+rだと乗っているのですが、停止の仕方を載せていないサイトが以外に多くて戸惑った。

それでも探すと公式ページでctl+shift+cだと書いてあるので、押してみるが反応なし。

下記プログラムで試してみるが、最後まで表示して、プロセスが終了しないという状況になった。

for i in range(1,100000):
    print(i)

f:id:ryu022304:20171110162929p:plain
実行結果

またスタック・オーバーフローで質問したりしてみたけれども、どうやらバグみたいで公式のGitHubで同じような質問をしている人がいた。

Ctrl+Shift+C can not kill a running process on Mac · Issue #202 · lsegal/atom-runner · GitHub

さすがにそれはどうしようもないので、atom-runnerのバージョンを下げたが、それでも何故か停止できなかった。
一応Atom自体のバージョンを下げたり、atom-runnerのソースをちょっとだけいじったりしてみたが結局ダメだった。ちなみにTerminal-plusでPython3を実行してみても同じだった。

仕方ないので、パッケージのscriptの方を利用することにした。

こっちはcmd+iで実行してctl+cで停止する。
問題はどうやらデフォルトでPythonの2系で実行されてしまうということ。

そこで、こちらの質問の回答を元にしてrun with profileの設定を追加する。
https://teratail.com/questions/83419

これで、shift+cmd+kを押してEnterでPython3で実行できるようになった。
実行するのに1アクション増えてしまったのが残念だが、仕方ないのでこれで我慢することにする。

Qiita投稿時のコードブロックの挿入にタブやスペースはいらなかった

先日からQiitaに投稿したりしているけれども、プログラムじゃなくて実行結果とかを載せたいときにタブもしくはスペース4つを書かなければならないと思ってた。

Markdown - Wikipedia

スペース4つを毎行書くのは非常に面倒なので、タブを押してみるがインデントされずにフォーカスが移動してしまう。

どうにかならないかなと思って探してみると、Google Keeperで同じように思っている人がいたらしく、Google Keeper内でのタブ入力はフォーカスを移動させず、インデントをデフォルトにするChrome拡張機能を作ってくれていた。

qiita.com

わかりやすくていいじゃんと思って、コードを落とし、manifest.jsonのmatchesの部分をGoogle KeeperからQiitaのサイトに変更したらいい感じに拡張機能ができた。

 

でも皆これ不便に思わなかったんだろうかと考えて、コードの挿入例のやつからファイル名や言語名を除いたら普通にできた・・・

 

バッククオート3つか1つで囲めば出来るんですね。

 

まあでもせっかく拡張機能作ったんで、短いやつはタブで書く感じにします。

PandasのデータフレームからCSVへの追記

またQiitaに投稿しました。

qiita.com

webスクレイピングして、得られたデータをCSVで保存しておきたいなあと思っていたらwebスクレイピングでも、CSVへの保存でもつまずいたのでまずはCSVの方の備忘録。

 

PandasのデータフレームをCSVファイルとして出力するサイトは結構見つけたけれども、CSVファイルに追記する方法が見つからなかったのでちょっと苦戦した。

苦戦したけれどもオプションをつければ済む話だったので、Qiitaに書くまでもなかった気はしている。

 

でもまあ自分と同じような人がいた時のために一応書いておく。

Qiitaに初めて投稿してみた(MAMPにMongoDBのドライバーの導入(PHP7.1.1))

qiitaの方にだいぶ前に結構困っていたことを書いてみました。

qiita.com

就活で忙しくて出先でも色々試したいと思っていた時のやつですね。

Qiitaに技術的なこと書いてはてなブログには雑多なことを書くという住み分けが良いんだろうか。