粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

Usepackageで相対・絶対パス上のファイルを指定できるか?

出来ます。これでGitやDropBoxで動的に更新されるstyファイルを使う事ができます。

絶対パスの与え方

例えばこんな感じ。

\usepackage{C:/Users/Ossyaritoori/Documents/GitHub/LaTeX_template/<yourfile>}

この際,コツとして

  • ファイル名の拡張子 .sty を省略する
  • 「\」はTexで変に解釈されるので「/」を使う

があげられます。

相対パスの与え方

同様。

\usepackage{../style/<yourfile>}

なお,Staticなstyファイルは普通にTexのdist-packageに置きましょう。
ossyaritoori.hatenablog.com

リモートデスクトップのUbuntuのTab補間を有効化

ossyaritoori.hatenablog.com

問題編

WindowsからリモートでUbuntu(ログインした時のレイアウトはXubuntu)にログインすると
「Tab補間」が効かなくなる問題があります。これはバグではなくxrdpのデフォルトの仕様のようです。
gihyo.jp
技術メモメモ: Xubuntu 16.04にxrdpを使ってRDPでリモートデスクトップ接続をする

解決編

上記に加えて以下のやり取りも参考にしました。
Bash auto_completion with Xubuntu and xrdp from windows - Ask Ubuntu

以下のファイルを編集します。
~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

下の方に,

<property name="<Super>Tab" type="string" value="switch_window_key"/>

という行があるのでこれを編集して

<property name="<Super>Tab" type="string" type="empty"/>

へと書き換えます。

その後サービスを再起動します。
sudo service xrdp restart
って感じだったはず。この時点で接続が切れるので注意です。
普通にOSを再起動してもいいかも。


以上。

私的文章作成手法あれこれまとめ

最近いろいろ試していて混乱してきたのでメモ

使用中のもの

Texstudio

デフォルトの文章作成ツール

おなじみのTex文章作成ツール。利点は

  • 機能が豊富。辞書と予測変換の使い勝手の良さ。
  • SumatraPDFとの連携でより使いやすく。コンパイル時の操作も指定可能

ossyaritoori.hatenablog.com

jupyter notebook

ちょっとした説明資料用


最近取り入れようとしている。コードと文章を共存できる強いやつ。

  • コードもTexも専用のエディタの使い勝手には及ばない
  • コメントが見やすいコードだと思えばまぁ悪くないかも
  • 起動が若干面倒

まぁ作成後もTexへと起こす事ができるので比較的無駄はない。
ossyaritoori.hatenablog.com

StackEdit

コンパイルのいらないオンラインTexもどきメモ
f:id:ossyaritoori:20171111160457p:plain

GoogleChromeの拡張アプリ。GoogleDrive上でも使える簡単なMarkdownエディタ。

  • 簡単でわかりやすい機能
  • GoogleDriveやDropbox等と好相性
  • Webに繋げない時起動が出来ない…?(未検証)
  • PDF化に年間525円必要。

Classeur

StackEditの後継。
StackEditに比べて多機能かつPDF化も無料。
ハイライトがちょっと見づらい。

f:id:ossyaritoori:20171111155852p:plain
Pandocを介するっぽいのでPDF化で時々エラーがでるかも。

VisualStudioCode

ローカルなMarkdownエディタとして使用中。軽快に動く万能Editor。見た目がかっこいいのもGood。

f:id:ossyaritoori:20171111155439p:plain

で数式を打てるMarkdown環境の完成。

GoogeDocument

図付きのメモ帳。

特筆することは無いが,無難に使えるのと画像をポンと貼れるのが良い。
SnippingToolで切り取りしてGoogleDocumentに貼るとお手軽で見やすい文章が出来る。

後はマークダウンに対応してほしかった。

Word

嫌いだが,使わなければいけない場合がある。
上記全てが揃っていると特に出番はない。

嫌々使う

ためそうと思っているもの

Atom

Githubが開発したエディタ。

  • Markdownの記述に向いている。(というか大体のことが出来る)
  • Editor上でGitへとコミット可能。
  • メモリを結構食う&起動がちょっと遅いらしい
  • jupyterがエディタ上で動く。Hydorogen

オフラインでのメモに使えそう。

マークダウンの数式入力で楽をするマクロ

JupyterでTexソースコードを書くことで,資料と実行コードを両立できてモチベや管理が楽になるかと思い色々いじっています。
追記: StackEditのマークダウンでも有効なことを確認。タイトルを修正

ossyaritoori.hatenablog.com

数式マクロをjypyter notebookで使う。

行列などは書くのが面倒すぎてマクロがないと書きたくない体になってしまいました。
ossyaritoori.hatenablog.com

jupyterでもこのマクロを導入する事ができます。
詳しくはこの質疑に情報が詰まっています。
IPython (Jupyter) MathJaX preamble - Stack Overflow

やり方は,「$$で囲んだ箇所にnewcommandを書く」でおしまいです。
少し不格好ですがノート頭で私は以下のようにマクロ宣言を実行しています。

## Tex Preamble
$$
\newcommand{\bm}[1]{{\bf #1}}
\newcommand{\eq}[1]{Eq.(\ref{eq:#1})}
\newcommand{\zu}[1]{図\ref{fig:#1}}
\newcommand{\shiki}[1]{式(\ref{eq:#1})}
\newcommand{\fig}[1]{Fig.\ \ref{fig:#1}}
\newcommand{\grp}[1]{Fig.\ \ref{grp:#1}}
\newcommand{\tab}[1]{Table\ \ref{tab:#1}}
\newcommand{\defeq}{:=}
\newcommand{\tvec}[1]{\bvec{#1}^{\mathsf{T}}} 
\newcommand{\mr}[1]{\mathrm{#1}}%rm体
\newcommand{\ml}[1]{\mathcal{#1}}%frac体
\newcommand{\bmat}[1]{\begin{bmatrix} #1 \end{bmatrix}}%行列簡略化
\newcommand{\pmat}[1]{\begin{pmatrix} #1 \end{pmatrix}}%行列簡略化
\newcommand{\mat}[1]{\left( \begin{matrix} #1 \end{matrix} \right)}%行列簡略化
%\newcommand{\nom}[1]{ \ml{N} \{ 0,\sigma_{ #1 } \} }
\newcommand{\expo}[1]{ \mathrm{e}^{#1} }
$$

どんな感じになるか画像

マクロ宣言部分は実は実行後消えるのでそこまで不格好な感じにはならないかと。
f:id:ossyaritoori:20171029174026p:plain

このようにスッキリ。
f:id:ossyaritoori:20171029174045p:plain

問題・課題

厳密には走っているのはTexではなくMathJaxなのでいくつかの関数は使えません。
例えばちょっと驚いたのは

  • \boldmath

が使えないことです。

あとは,これをTexにした所,宣言文が\[で囲まれ,数式として認識されてエラーが出ます。
従って全自動はめんどくさそう…

快適にjupyternotebookを書くという目的以外には使わない方が良さそうです。

Windows10からUbuntu16(jetsonTX1)へとリモートデスクトップ接続

いつだかラズパイ上のUbuntuへのリモートデスクトップ接続を試しました。

ossyaritoori.hatenablog.com

今回はGPUボードに接続したいのですが,前回の手法だと何故かうまくいかないので以下の回答に準拠しました。
remote desktop - Can I access Ubuntu from Windows remotely? - Ask Ubuntu

Ubuntu側のセットアップ手順

XRSPをインストール

sudo apt-get update
sudo apt-get install xrdp

次にHomeディレクトリに移動して,

sudo apt-get install xfce4 
echo xfce4-session >~/.xsession

最後に以下のファイルを編集します。

sudo gedit /etc/xrdp/startwm.sh

編集結果がこちら

#!/bin/sh

if [ -r /etc/default/locale ]; then
  . /etc/default/locale
  export LANG LANGUAGE
fi

startxfce4

私の場合は最終行だけ変更することになりました。

その後サービスをリスタート

sudo service xrdp restart

Windows側からの接続

リモートデスクトップ接続の画面から接続します。
過去記事を参照。

結果以下のような画面が見れます。
なんだか元のデスクトップと違うのですがこういう仕様でしたっけ?
f:id:ossyaritoori:20171027220153p:plain

何かあったら追記します。

jupyter notebookをTex,PDFへと変換

jupyterでコードとプリアンブルを書いてTexに移せばいろいろと捗るのではという目論見の元はじめたこの企み,思ったより面倒なことがあります。

結論

下のような感じでjupyterの見た目を保存したようなTex,PDF資料を作れます。
必要箇所を抜き出せば普通に資料にできますね。
f:id:ossyaritoori:20171025200603p:plain


結局何をすればいい?

ここのGistからファイルをダウンロードして,
New template for jupyter · GitHub

以下のようなPathの下に置いて,

C:\Users\<User>\Anaconda3\envs\matlab\Lib\site-packages\nbconvert\templates\latex

(追記)C:\Users\\AppData\Local\conda\conda\envs\matlab\Lib\site-packages\nbconvert\templates\latex
にある場合もありました。


作成手順は,例えば名前がipythonの名前がfooだった場合,
Texをダウンロード

jupyter-nbconvert --to latex foo.ipynb 

コンパイル

extractbb foo_files/*.png
platex foo.tex
dvipdfmx foo.dvi

以上!

大体の人はドコかでエラーがでるので詳細な手順を順に追っていきましょう。

LatexやPDFへの変換

GUIでやる

[File]から[Download as]で好きなフォーマットを選択できます。

コマンドプロンプトから

jupyter nbconvert --to latex <HOGE>.ipynb

と実行することで同様のことができます。

pandocのインストール

そのままだとpandocがありませんという旨のエラーが出ます。

anaconda search -t conda pandoc

の出力を見た感じ,conda-forgeが良さそうですので

anaconda show conda-forge/pandoc

とうってURLを確認します。
2017年10月現在では以下のURLからダウンロードできます。

conda install --channel https://conda.anaconda.org/conda-forge pandoc

これで,Latex形式で落とせます。

Latex変換の結果

Markdownの#は\section{}へ,数式は

\[\begin{align}

\end{align}\]

のように変換されました。

コード部分はVervatimに変換されますが,それに関してとんでもない量のプリアンブルを生成します。

PDFへの変換

PDF変換はLatexコンパイルすることで達成されます。

手順は,例えば名前がipythonの名前がfooだった場合,
Texをダウンロード

jupyter-nbconvert --to latex foo.ipynb 

コンパイル関係

extractbb foo_files/*.png
platex foo.tex
dvipdfmx foo.dvi

XXX.styがない,XXX.defがない

日本語を用いる場合,様々なエラーが出ます。

例えば実行するとucs.styが無いことに気づきます。
ここからダウンロードしましょう。
CTAN: /tex-archive/macros/latex/contrib/ucs
いかのサイトからコピーしたほうが良いです。
https://mirror.hmc.edu/ctan/macros/latex/contrib/ucs/ucs.sty

私はucs.styの他,以下の3つのdefファイルが最終的に必要でした。
ucsencs.def,uni-global.def,utf8x.def


適宜Pathの通ったフォルダにおいておいてください。

Package amsmath Error: Erroneous nesting of equation structures;(amsmath) trying to recover with `aligned'. \end{align}

alignの前に\[がついているせいです。数式の二重宣言をやめさせるべきです。

noboundingbox

dvipdfmxを使うようにTexを書き換えるべきです。

つまり

\usepackage[dvipdfmx]{graphicx}

と変更します。

これは非常に変更点が多い上,面倒ですね…

テンプレートの変更

いままでの問題は使用しているテンプレートに主に問題があるようです。

デフォルトのテンプレート

僕の場合,場所は以下の所にありました。

C:\Users\User\Anaconda3\envs\matlab\Lib\site-packages\nbconvert\templates\latex

デフォルトで使われる設定ファイルはarticle.tplxというファイルで,中身はこんな感じです。

% Default to the notebook output style
((* if not cell_style is defined *))
    ((* set cell_style = 'style_ipython.tplx' *))
((* endif *))

% Inherit from the specified cell style.
((* extends cell_style *))


%===============================================================================
% Latex Article
%===============================================================================

((* block docclass *))
\documentclass[11pt]{article}
((* endblock docclass *))


この\documentclassの箇所を
\documentclass[10pt,dvipdfmx,fleqn]{jarticle}
と変更します。jarticleにすることでutf8等の面倒なdefを入れずとも日本語をコンパイル出来るはずです。
fleqnは数式左寄せ,dvipdfmxはBoundingBox問題を起こさないようにする配慮です。


参考:
Jupyter nbconvert(ファイル変換)メモ - はしくれエンジニアもどきのメモ
jupyter notebookをLaTeXに変換 - Qiita

プリアンブルや基本関数の変更

構造として,このarticle.tplxがstyle_ipython.tplxを呼び出し,base.tplxを呼び出すという構造になっていました。

プリアンブルや諸関数に関しては,
base.tplxというファイルに全て記述があるのでこれを変更することでより細かな調整ができます。
例えば不要そうなパッケージを排除できます。

  • utf8まわりなど

変更した新しいファイル群をGistにあげておきました。
New template for jupyter · GitHub


テンプレートの見た目変更

こだわりたい人はどうぞ…
人の作ったものを流用するのが最初は良いでしょう。
nbconvert-examples/style_notebook.tplx at master · jupyter/nbconvert-examples · GitHub

jupyterとmatlabを有効に使うための備忘録

jupyterの使い勝手がだんだんわかってきたので本格的に使うにはどうすれば良いのか模索中です。

想定した運用

  • コードの実行できる文書として使用したい。

従って,matlabコマンドと図,Texの数式の機能などが過不足なく使えるように。
特にLatexはマクロを使えるようにしたい。

  • 簡単な文書として運用したい

notebookで書いたものをlatexやpdfに変換すればそのまま簡易資料にできるようにしたい。


ショートカットキー

マウスをなるべく使いたくないのでショートカットキーを覚えるべきですね。
Jupyterのショートカット - Qiita

実行の仕方から,

  • 実行:Ctrl+Enter
  • 実行&改セル:Shift+Enter

マークダウンとコードの切り替え

  • マークダウンへと移行:Esc+m
  • コードへと移行:Esc+y

そしてセルのコピペ

  • コピー:Esc+c
  • ペースト:Esc+p
  • 削除:Esc+dd

LatexやPDFへの変換

GUIでやる

[File]から[Download as]で好きなフォーマットを選択できます。

コマンドプロンプトから

jupyter nbconvert --to latex <HOGE>.ipynb

と実行することで同様のことができます。

pandocのインストール

そのままだとpandocがありませんという旨のエラーが出ます。

anaconda search -t conda pandoc

の出力を見た感じ,conda-forgeが良さそうですので

anaconda show conda-forge/pandoc

とうってURLを確認します。
2017年10月現在では以下のURLからダウンロードできます。

conda install --channel https://conda.anaconda.org/conda-forge pandoc

これで,Latex形式で落とせます。

詳しい説明は別記事で。
ossyaritoori.hatenablog.com

Latexマクロをjupyterで組む。

こういう感じのマクロを組まないと生でTex数式を書くのはつらすぎます。
ossyaritoori.hatenablog.com

以下の質疑が参考になりそうですがまた今度,,,
IPython (Jupyter) MathJaX preamble - Stack Overflow

How to write LaTeX in IPython Notebook? - Stack Overflow