忍者ブログ
Home > 記事一覧

rago1975の部屋

このブログは管理人が個人的に興味がある事項を書き留めておくメモみたいなものです。当面は、Manjaro Linux関係の記事が中心になります。

熊本地震で被災していました。

平成28年4月14日以降、熊本地方で相次いで発生した地震の被害に遭われました皆様につきましては、心よりお見舞い申し上げます。

、、と書いているのですが、私自身も熊本地震で被災していました。自宅の建屋自体は、さほど損傷もなく、とりあえず住める状態なのですが、門を含む外構は傾いてしまいました。未だ余震が続く状態で、家族は福岡に避難しています。

私自身は地震そのもののダメージというよりは、それに派生した、職場の災害関連の業務があまりにも忙しく、未だに日常生活に戻れていない感じがします。

Linux 関連についても、震災以降の情報は全く追いかけていません。そういえば、Manjaro LinuxのForumがいつの間にか新しくなっていました。従前のForumは「新たなトピックを作成しようとすると503エラーが出る。」というトラップみたいな不具合があったのですが、今回はそれは解決されているみたいです。DiscourseというRubyで書かれたアプリケーションを使用しているみたいです。

いずれまた、色々な活動ができる状況になるまで、今しばらくお待ちいただければ、と思います。
PR

【メモ】vimtexでLuaTeXの環境構築

私自身のTeXの知識が20世紀末くらいの時点で止まってしまっていて、もう少しきちんと勉強したいなと考えていたところです。
できるだけ、楽にTeXでの文書作成ができないかと思いながら、Lyxとか、Tex Studioとか試してみたのですが、最近エディタ関係はVim(Neovim)に移行しつつあるので、Vimのプラグインを使ってみることにしました。

私が昔(1990年代)使っていたのはpTeXだったと思いますが、最近の動向を見てみると、文字コードのユニコード化などの流れもあって、upTeXとかXeTeXとか、新しい処理系が出ているみたいです。今回は、LuaTexを試すことにしました。LuaTexはtexファイルのコンパイルの際、直接pdfファイルを出力します。(Tex wikiLuaTeX-ja プロジェクト

Neovimの環境(Manjaro Linux LXQt)

  • Neovim
  • qterminal-git (AUR)
  • qtermwidget-cjk-git (AUR)

Texlive パッケージ等(全て公式リポジトリから導入可能)

  • texlive-core
  • texlive-langjapanese
  • texlive-latexextra
  • 上記の依存パッケージ(texlive-bin 等)
  • qpdfview(PDFビューワー)
  • poppler-data

vimtexの導入

vimtexはvimプラグインです。導入にあたり、今回はdeinを使用しました。deinについての説明はこのあたりを参照してください。既にdeinが導入されている場合は、~/.config/nvim/init.vim 内に記載されるプラグインのリストに以下の行を追加します。
call dein#add('lervag/vimtex')
さらに、vimtex用の設定として、init.vimに以下の行を追加します。ここでは、PDFファイルビューワーとして、qpdfviewを指定しています。
let g:vimtex_latexmk_continuous = 1
let g:vimtex_latexmk_background = 1
let g:vimtex_view_general_viewer = 'qpdfview'
init.vimの設定が終了したら、neovimを実行して、コマンドモードから call dein#update() を実行します。

.latexmkrcの編集

vimtexはtexファイルのコンパイルに際して、latexmkというツールを使用します。latexmkはTexliveパッケージに同梱されています。vimtexの使用に際しては設定ファイル.latexmkrcを編集する必要があります。(今回は .latexmkrcはホームディレクトリの下に置いています。)
こちらを参考に .latexmkrcを以下のように設定しました。
#!/usr/bin/env perl
$latex = 'uplatex %O -synctex=1 -interaction=nonstopmode %S';
$pdflatex = 'lualatex %O -synctex=1 -interaction=nonstopmode %S';
$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
$bibtex = 'upbibtex %O %B';
$makeindex = 'upmendex %O -o %D %S';
$dvipdf = 'dvipdfmx %O -o %D %S';
$dvips = 'dvips %O -z -f %S | convbkmk -u > %D';
$ps2pdf = 'ps2pdf %O %S %D';
$pdf_mode = 1;
$pdf_previewer = 'qpdfview'
ここまで準備すると、vimtexが動くようになります。Neovimでtexファイルを開いている時に、コマンドモードで :VimtexCompile と入力すると、コンパイルが始まり、pdfファイルの作成、プレビューまでしてくれます。

参考リンク


qtermwidget-cjk-git というパッケージを作成し、AURに登録した。

qtermwiget というのは、qtで書かれた端末ソフトウェアqterminalの構成要素であり、通常qterminalの依存パッケージとしてインストールされます。先日も書いた通り、qtermwidgetは、East Asian Ambiguous カテゴリー(wikipediaの記述)の扱いについて、全角としていません。ですので、これらの文字を全角として扱うには、ソースコードに手を入れる必要がありました。

そこで、ソースを修正して、East Asian Ambiguous カテゴリーの文字幅を全角としたものを、qtermwidget-cjkという名前で、私のgithubのリポジトリに設置しました
これを元にArch/Manjaro 用にqtermwidget-cjk-git というパッケージを作成し、AURに登録しました。パッケージといっても、上記のgithubのリポジトリからパッケージをビルトする手順をPKGBUILDというファイルに書いて自動化するようにしたものに過ぎません。

インストール手順(Arch / Manjaro)

AURパッケージなので、yaourt でビルド、インストールできます。
yaourt -S qtermwidget-cjk-git
既に、qtermwidget または qtermwidget-git がインストールされている場合は、インストール作業の最後に、
qtermwidget-cjk-git と qtermwidget-git が衝突しています (qtermwidget)。qtermwidget-git を削除しますか? [y/N]
というようなメッセージが出る(qtermwidget-gitの場合)ので、yとタイプして置き換えてください。
なお、このパッケージの動作確認はqterminal-git 上(AURパッケージ)で行っています。

このパッケージの特徴

  • qterminal上でNeovimが動きます。(Manjaroの公式リポジトリのバージョンでは、この部分の更新が間に合っておらず、動きません。)
  • qterminal上でVimまたはNeovim を作動させる際、設定ファイル(.vimrc とか~/.config/nvim/init.vim)内でset ambiwidth=double と設定することにより、East Asian Ambiguous カテゴリーの文字の幅を全角として取り扱うことができるようになります。
  • ただし、コマンドライン上でこれらの文字を入力した場合は、不具合が生じます。(ファイル名でこれらの文字を用いる場合等は注意してください。)

本家を含めて、改良に努めたいと思いますので、何かありましたらご連絡ください。

2月13日のアップデートについて(Manjaro Linux)

Manjaro Linuxは、最近では約1週間ごとにアップデートが行われているみたいですが、最近では2月13日にアップデートが行われました。(公式サイトの記事Forumの記事
私のデスクトップマシーンの環境(CPU: Intel core i3 550, GPU はオンボードのもの)では、アップデートの実施後、画面のちらつき、ウィンドウ(タブ)が切り替わらない、等のトラブルが発生しました。
そこで、pacman -U コマンドを実施して、xf86-video-intelというパッケージのバージョンを元に戻しました。ついでに、/etc/pacman.conf のIgnorePkg の行のコメントアウトを外し、xf86-video-intel を追加しました。

ユーザーにおかれましては、ご注意を、と言いたいところですが、私以外でその問題が発生している人は特にいないみたいです。

追記(2016/02/22 22:30)

2月21日にアップデートがあり(公式サイトの記事)、そのアップデートの結果、正常に作動するようになりました。

qterminal における East Asian Ambiguous の取扱いについて(あるいは、封印されたコードについて)

先日、qterminalを使いこなす。という記事を書いて、そこで、qtermwidgetのソースコードに変更を加えることによって、qterminal で「※」「☆」といった全角記号を表示させる方法を書きました。この方法を使えば、vimでambiwidthを設定することができます。しかし、前回書いた方法は、ちょっと泥縄的だったと思います。今回、もう少し筋の通ったやり方にします。

qtermwidget のソースコードはgithub上にあるのですが、実際に文字の種類による文字幅を定義しているのは lib/konsole_wcwidth.cppというファイルです。前回の記事では、このファイルの130〜138行目のところに色々な文字を追加していました。今回はこの場所はそのままにしておきます。

実は、このファイルの142行目から216行目にかけて、「#if 0」でコメントアウトされた部分があります。この部分が上述の「※」「☆」等を含むいわゆるEast Asian Ambiguous カテゴリー(wikipediaの記述)に属する文字の幅を全角として処理するコードになります。わざわざコードを書いたうえで、「#if 0」で封印している事情は、詳細は分からないのですが、東アジア以外ではこれらの文字は半角扱いされるので敢えて適用しない、という事なのだと思います。
「#if 0」を外して、他のファイルも一部修正してビルドすると、きちんと全角文字が表示され、vimのambiwidthを設定することができるようになりました。修正箇所はこの通り

それはさておき、わざわざ手動でビルドするのは大変です。上記の経緯を考えると、「#if 0」を外す形でPull request を出すのも、通らなさそうです。

やり方としては、今回の変更を含むソースコードを「qtermwidget-cjk-patched-git」みたいな適当な名前でパッケージ化して、AURに掲載して配布するのが、多分一番手っ取り早いと思います。(AURへの掲載については、私がこれから勉強しなければならないので、ちょっと時間がかかると思いますが。。)



プロフィール

HN:
rago1975 (Takefumi Nagata)
HP:
性別:
男性
自己紹介:
熊本在住の一般人です。Manjaro Linux関係の翻訳などを少々やっています。
twitter: https://twitter.com/rago1975

カレンダー

01 2018/02 03
S M T W T F S
1 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28

P R