PDFの図をIPEで編集
前回に引き続きIPEの布教です。(今回はなぜかですます調)
IPEの強い点はLatexを用いた綺麗な作図を直接PDFで生成/編集が可能というところでした 。
ところが,IPEは任意のPDFを開けるというわけではなく「IPEで作ったPDFしか開けない」という足かせがあります。
PDFをIPEで開けるようにする
はい,実はIPEをインストールしたbinの中に「pdftoipe.exe」と「ipetoipe.exe」というファイルがありましてそいつらを使えばPDFをIPEで扱える形式に変換可能です。
Matlab · otfried/ipe-wiki Wiki · GitHub
手順は以下の2stepです。
pdftoipe.exe file.pdf file.xml ipetoipe.exe -pdf file.xml file.pdf
最初の行でPDFをIPEで開けるようにして,次の行でPDFとして保存し直しています。
まぁ編集するだけなら最初の行だけで良さそう。
具体例:MATLABの図
以下の図は僕が昔matlabで作った図です。
いろいろ突っ込みどころはありますがこれをIPEで開くと次のようになります。
TextBoxの区切りがちょっと変になったりξが文字化けしてνになっていますがこれは再編集すれば治ることです。
再編集した結果がこちら。
字体やフォントの違いなど注意事項はありますがIPEの強さがわかっていただけたかと思います。
ちなみに捏造っぽいこともできます。
良い子のみんなは真似しないように
他の具体例も暇があれば試します。
PDFのCropping
PDFの余白切り抜きも思いのままです。
上のように外苑の赤枠を加工することで,PDFの余白を削れます。
以下の記事で紹介したBrissよりはるかに高性能なので図の余白調整にはこちらを使うことにします。
ossyaritoori.hatenablog.com
batファイルの作成
毎回コマンドをうつのはだるさの極みな(環境変数などもだるい)のでbatファイルで自動化をします。
PDFをIPE形式に変換して開く(一行目のみの実装)
とりあえず以下のファイルに適当な名前を着けて保存します。
私は「openPDFinIPE.bat」という名前にしました。
「set INPUT= %1 」でドラッグ&ドロップしたファイルのパスを取得
ファイル置換を用いて変換後のファイル名を生成しています。
使用する際には最後2行のIPEのpathをキチンと書き換えてください。
@echo off echo FileName is ... set INPUT= %1 set FNAME= %INPUT:.pdf=% set IPE_FILE= %INPUT:.pdf=.ipe% set OUTPUT= %INPUT:.pdf=ipe.pdf% echo %INPUT% C:\Users\YOURNAME\Desktop\ipe-7.2.7\bin\pdftoipe.exe %INPUT% %IPE_FILE% C:\Users\YOURNAME\Desktop\ipe-7.2.7\bin\ipe.exe %IPE_FILE%
後はbatにドラッグアンドドロップすればipeでファイルを開くことができます。
ショートカットを作ってデスクトップとかに置くのもありか?
IPEでブロック図などの図を作成
使いやすいCAD風の図作成ソフトIPEの紹介です。
追記などを激しくした結果,口調が統一されていないのであしからず。
IPEとは
PDFやXML形式で図を作成,編集できる描画ソフトです。
マウス操作の使用感はCADに近くマウスが必要ですが,その分「Latexが使える強いInkscape」のような感じで使うことができます。
Inkscapeのプロではないのでやや公平性に欠けますが,使い勝手もなかなか良いです。
他にもPDFで吐いたFigureをちょっと加工したいときとかに便利。
キッカリした図を書くのが得意で,ブロック図とか,
座標系とかの図がサラサラ書けます。
動画
インド英語で聞きとりにくいという噂
www.youtube.com
簡単なブロック線図を書く手順
起動すると以下のような画面が出てくる。今回気をつけるであろう所に赤◯を着けた。上の◯はグリッドのサイズ調整なので無視してくれて良い。
また,グリッドが表示されてない人は左上から数えて5番目の田みたいになってるアイコン(「Snap」の真下)をクリックしてくれ。
ブロックを書く
箱を書くところだが以下のように箱のマークをクリックしてグリッドをクリックすることで描画が開始できる。
グリッドが荒く感じたら上の16ptとなっている所をいじろう。
左上と右下の2点のみを指定すればブロックが書ける。
テキストオブジェクトを挿入
テキストオブジェクトは当然「A」みたいになってるアイコンから呼べる。
上のような画面が出てくるが,
①で普通の文とLatex数式環境を選択でき,
②で文字サイズ(ただしTex形式)を変更可能。今回はLARGEを使用。
各コマンドの具体的な大きさはLaTeXコマンド集 - 文字サイズを見てくれ。
なお,①で普通の文を選んでも$で囲めば数式環境になるので気にならない。
このウィンドウは右クリックMenu最下段でも呼べる。
テキストオブジェクトの位置調整
IPEはこのグリッド上でしかオブジェクトを移動できないらしい。
しかもデフォルトではこのオブジェクトの位置の基準が左下にあるのでどうやっても綺麗に並ばない。
- 右クリックで「Horizontal Alignment」→「hcenter」
- 右クリックで「Vertical Alignment」→「baseline」
として基準を真ん中に持ってくることで解決。
左が提案手法で右がデフォルト。
矢印でつなぐ
線を呼ぶオブジェクトをクリック。
始点はクリック1回。終点はクリック2回。
その際以下の赤線で囲った所をクリックして矢印オブジェクトを指定する。
丸を付ける
フィードバックなどの結合部に◯を書くには以下のような,中心と円周を指定して円を描くモードを使うと良い。
この際上のグリッドを細かくしておかないといい大きさの◯が書けない。
ファイルの保存とエクスポート
ちなみにこんな感じになる。
基本操作や小技など
上のメニューのModeという所から選択モード,並進移動モード等が用意されている。
詳しくはマニュアル参照。
http://simtec.jp/IPE7Manual_JPN.pdf
移動などのショートカット
オブジェクトの移動にはAltを押しながらドラッグする。
他にも覚えておくと操作が楽になるショートカットがあるので適宜覚えて置くと良い。
プリアンブルの作成
「Edit」→「Document Propaties」からTexのプリアンブルを変更可能。
MATLABのFigureからの連携?
Matlab FigureをTexで使えるTikzに変換する的なやつ。これ関連してたかどうか記憶にないが同カテゴリとして認識しているので加えておく。
https://jp.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz-matlab2tikz
IPE網掛け加工
塗りつぶしの代わりにhatchingすなわち網掛け処理をしたい場合,
右クリックからTiling Patternをクリックし,fallingないしrisingを選択します。
網掛けの線の色はFill color を変更することで変更可能です。
結線を書く
四角形を書くところのすぐ左に○◆Xなどが並んだMarksという処理ボタンがあります。
それを選択して置きたい箇所をクリックするだけ。
PythonでYoutube動画検索
以下を参照。
Google API Python Clientを使ってYouTube Data APIv3をいじる - Qiita
APIを許可する
Google Cloud Platformにアクセスして,新しいプロジェクトを作成。
Youtube Data APIを入れる。
YouTube Data API の概要 | YouTube Data API (v3) | Google Developers
パッケージ導入
ここを元にYoutubeに関するAPIのパッケージを導入。
Installation | API Client Library for Python | Google Developers
pip install --upgrade google-api-python-client
管理者権限で実行することを忘れずに。
サンプルコード
サンプルコードはこちらから。
Python コード サンプル | YouTube Data API (v3) | Google Developers
使ったのはYoutube検索API。なんとなく構造がわかったのでそれでよし。
適当なキーワードを入れて動画を検索し,その結果を表示。
動画とプレイリスト,チャンネルを区別できる。
APIのKEYを含めることを忘れずに。
# -*- coding: utf-8 -*- """ Created on Sun Jan 21 23:38:58 2018 @author: Edwin Ri """ #!/usr/bin/python from apiclient.discovery import build from apiclient.errors import HttpError from oauth2client.tools import argparser # Set DEVELOPER_KEY to the API key value from the APIs & auth > Registered apps # tab of # https://cloud.google.com/console # Please ensure that you have enabled the YouTube Data API for your project. DEVELOPER_KEY = "ここのKeyは最初に取得したAPIキーを用いること。" YOUTUBE_API_SERVICE_NAME = "youtube" YOUTUBE_API_VERSION = "v3" def youtube_search(options): youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=DEVELOPER_KEY) # Call the search.list method to retrieve results matching the specified # query term. search_response = youtube.search().list( q=options.q, part="id,snippet", maxResults=options.max_results ).execute() videos = [] channels = [] playlists = [] # Add each result to the appropriate list, and then display the lists of # matching videos, channels, and playlists. for search_result in search_response.get("items", []): if search_result["id"]["kind"] == "youtube#video": videos.append("%s (%s)" % (search_result["snippet"]["title"], search_result["id"]["videoId"])) elif search_result["id"]["kind"] == "youtube#channel": channels.append("%s (%s)" % (search_result["snippet"]["title"], search_result["id"]["channelId"])) elif search_result["id"]["kind"] == "youtube#playlist": playlists.append("%s (%s)" % (search_result["snippet"]["title"], search_result["id"]["playlistId"])) print("Videos:\n", "\n".join(videos), "\n") print("Channels:\n", "\n".join(channels), "\n") print("Playlists:\n", "\n".join(playlists), "\n") if __name__ == "__main__": # 検索ワード argparser.add_argument("--q", help="Search term", default="ベートーベン") # 検索上限 argparser.add_argument("--max-results", help="Max results", default=10) args = argparser.parse_args() try: youtube_search(args) except HttpError as e: print("An HTTP error %d occurred:\n%s" % (e.resp.status, e.content))
結果はこんな感じ。
Videos: ベートーベン メドレー 長時間 BGM No.1 (JdjNRU9QtnQ) ベートーベン ピアノソナタ メドレー (Uuws9GxHnpQ) ベートーベン作曲 交響曲第6番「田園」 (DZJHWkk0x7I) ベートーベン『運命』交響曲第五番第一楽章 (PTr1v1ksWkQ) The Best of Beethoven (W-fFHeTX70Q) ベートーヴェン 交響曲第七番 小澤征爾 1975ライブ (tbVsJcX8V5w) ベートーベン・ピアノ協奏曲第5番「皇帝」 (o5fNRKUOsco) Beethoven 9 - Chicago Symphony Orchestra - Riccardo Muti (rOjHhS5MtvA) 【作業用BGM】 ベートーヴェン 名曲ピアノメドレー 13曲 (mE0WsSxB-T0) Symphony No. 9 ~ Beethoven (t3217H8JppI) Beethoven: Symphony No. 7 - Royal Concertgebouw Orchestra & Iván Fischer (-4788Tmz9Zo) Beethoven - Moonlight Sonata (FULL) (4Tr0otuiQuU) Beethoven: Symphony No.6, "Pastorale"; Jarvi, DKB (iQGm0H9l9I4) ベートーヴェン「月光」 Beethoven "Moonlight Sonata" (-uVmGm9yiGg) Beethoven "Moonlight" Sonata op 27 # 2 Mov 3 Valentina Lisitsa (zucBfXpCA6s) ベートーヴェン 歓喜の歌 交響曲第九番 Beethoven Symphony No 9-video part1- (SKWm4SWzDjg) Beethoven: Symphony No.2; Jarvi, DKB (VAnjfp7vUvA) ベートーベン 月光ソナタ 全楽章 (xOMetY6Y-AA) Beethoven Pathetique Sonata - 2nd mov 「悲愴」2楽章 Eric Heidsieck (bE2Zok2eL1Q) ベートーヴェン 第9 合唱 『歓喜の歌』訳詞付 Choral "Ode to Joy" Beethoven (iU5av55T2Yk) ベートーヴェン:交響曲 第6番 「田園」 ワルター/コロンビア響 Beethoven Symphony No.6 (byayR-OnN3U) Beethoven: Symphony no. 3 Eroica - Philippe Herreweghe - Full concert in HD (kwRVR-TmKYw) ベートーヴェン ピアノ・ソナタ 第8番 「悲愴」 バックハウス Beethoven: Piano Sonata No.8〈Patheyique〉 (-JpkaNWdJDA) Wilhelm Kempff plays Beethoven's Moonlight Sonata mvt. 3 (oqSulR9Fymg) ベートーベン - トルコ行進曲 (SexvTXYNcjY) Channels: Playlists:
もう少し詳細な説明
Search | YouTube Data API | Google Developers
メソッドが返すのは次のようなJSONで表されるデータ形式。
{ "kind": "youtube#searchResult", "etag": etag, "id": { "kind": string, "videoId": string, "channelId": string, "playlistId": string }, "snippet": { "publishedAt": datetime, "channelId": string, "title": string, "description": string, "thumbnails": { (key): { "url": string, "width": unsigned integer, "height": unsigned integer } }, "channelTitle": string } }
ちょっと使ってみたんですけどいろいろ勉強すべきことが多くて面倒っぽいなぁ
font "Times-Roman" of type "Type 1" is not embedded の解決
W32Texのフォント修正について。
上記はTexインストーラ3を使っている人に起こり得る学会提出時のエラーです。
TeXインストーラ 3は非常に簡単にTex環境を構築できる便利ツールですが,
フォントの設定をおかしくしてしまうという不具合が2018年1月現在確認されています(インストールしたのは2015年ですが)。
具体的にはここを参照。
PDF を生成したとき txfonts を使った TeX 文書でフォントが変わる問題の対処法メモ - Ichiro Maruta Homepage
anacondaやpipでSIFTやSURFを使えるようにする。Contribパッケージの入れ方。
Windows側のAnacondaで環境を改変したのでメモ。
OpenCVでSIFTが使えない問題
出るよね。こういうエラー。
module 'cv2' has no attribute 'xfeatures2d' anaconda
OpenCV3以降になってからSIFTやSURF等のライセンスが必要な奴らはcontribというExtensionみたいなフォルダに分離され,普通のインストールでは入らなくなっています。
解決法はcontribを自分でコンパイルするか,誰かがコンパイルしたのをいただく事。
なお,2017年12月のROS Kinetic のモジュールにはきちんと含まれています。
なのでウチのUbuntuPCでは大丈夫。
問題はWindowsのPCでおこりました。
セットアップ内容は以下を参照
ossyaritoori.hatenablog.com
Anacondaでの解決法
以下を参照。contribを含むパッケージを探します。
OpenCV 3(core + contrib)をWindows & Python 3の環境にインストール&OpenCV 2とOpenCV 3の違い&簡単な動作チェック - Qiita
以下の通りでダウングレードはしましたが無事使えるようになりました。
conda install -c https://conda.anaconda.org/menpo opencv3
pip 使いのための解決法
普段pipを使っている人はこちら。
pipとAnaconda併用するとわけわからない事になりがち。
どうもVerの新しい方が優先されるっぽい?
contribも別で配布しているので両方入れるには以下の様にやります。
pip install opencv-python pip install opencv-contrib-python
以下の記事もあったりしてどれがいいかはちょっとよくわかっていないです。
qiita.com
どう使うか
マッチングのやり方とかは公式OR以下の例を参照。
ossyaritoori.hatenablog.com
結論
Anacondaを使っている以上はできるだけconda使うべきかもしれない。
LG G watch スマートウォッチセットアップと使ってみた所感
LG G watchについて
実家に帰ったら昔なんかで貰ったGoogle Watchがありました。
LG G Watch (スマートウォッチ) Android Wear - Black Titan
- 出版社/メーカー: LG
- メディア: Wireless Phone Accessory
- この商品を含むブログを見る
これは多分結構前の型なのでもっといいものが今はあるはず。
Android対応スマートウォッチの比較【Android Wear】
センサとして加速度計,コンパス,ジャイロスコープを積んでいるのでヘルスケア的なので使えますね。
本体にGPSはないようです。
また,Wifiが付いている機種もありますが,僕が持っているのはBlueToothだけでした。
買うなら絶対単独でWifiにつなげる機種が良さそうです。そのままだと単にスマホの外部センサってだけですからね。
iPhoneとAndroidのどっちとペアリングするべきか
Androidをメインで使っている人はAndroid一択です。
iPhoneがメインでサブでAndroid端末を持っている場合はちょっと迷います。
僕がこれを手に入れた頃はペアリング用のソフト「Android wear」はAndroidにしかなかったのですが,
どうやら今はiPhone用のアプリも出たようですね。
なるべくメインのiPhoneと接続したいですがまだ,融通が利かない問題があるようです。
iPhoneとの相性△
以下の記事に検証があります。記事に日付がないのですが,2017年の初頭くらいと予想します。
securitysoft.asia
「通知を見る」などの基本機能は使えるがカスタマイズやその他の便利機能を使うことが出来ない。
というのが結論のようです。
また,レビューを見るとiOS11と相性が悪いらしいというのも伺えます。(2018年1月現在)
すると,
メインで使っているiPhone + 連携のしづらいアプリ
サブでしか使わないAndroid + カスタマイズ自在のアプリ
の2つで利便性を天秤にかけて考える必要がありそうです。
Amazon Fireとの相性✕
FIREタブレットも試してみたのですが,あまり使えなかったです。
というのもFIREタブレットをAndroid化しても,ソフトの起動に認証が必要と出て時計のカスタマイズが出来なかったからです。
Fire HD 10 タブレット (Newモデル) 32GB、ブラック
- 出版社/メーカー: Amazon
- 発売日: 2017/10/11
- メディア: エレクトロニクス
- この商品を含むブログ (5件) を見る
なお,FIREタブのAndroid化はこちら。非公式ソフトを使うので自己責任でお願いします。
ossyaritoori.hatenablog.com
Androidとのペアリング
「Android Wear」というアプリを入れて最初にペアリングをします。
入れてみたアプリ
とりあえず以下の記事を参照にしてアプリを入れてみたり。
【スマートウォッチ】入れておくべき おすすめアプリランキングベスト10 | TECH::NOTE | プログラミングをはじめる全ての人に
使ったものについて簡潔な感想と紹介をば。
- Wear Mini Launcher
アプリを起動する際のデスクトップショートカットみたいなものを作るアプリ。
Wear Mini Launcher:Gear LiveやLG G Watchの左上からスワイプしてアプリ一覧を表示し、すぐにアプリを起動できる必須アプリ。
2018年1月現在,右フリックですぐメニューが出るのでそこまで必要性を感じないかなぁ。
評判自体は上々なので今度試してみるけど。
- Wear Mail for Gmail
Gmailを簡単操作できるアプリ。
メールをウォッチから直接確認可能。普通にAndroid出せばいいやんというのは禁句で。
これはAndroid側のMusicプレーヤーだが,インストールすることでペアリングした時計で音楽の再生や停止等を一通り制御できる。
逆に,時計に音楽を入れて時計側から再生することも可能。
常に手に装着しているデバイスだからこそ実現できる手軽感。願わくは端末側の曲をきちんとチョイスさせて欲しい。
- Wear Audio Recorder
録音アプリ。インタビューやミーティングのメモを簡単に取れたらいいかな?とおもって。
使用感は後ほど。
所感
正直普段腕時計とか見ないので違いについての言及は控えます。
「楽しいおもちゃ」であることは間違いないですが「役に立つツール」として実感はまだ出来ないです。
ソフトウェアのブラッシュアップや新機能の追加に期待ですね。
なお,元日にこれをずっといじってたら親に呆れられました。
LG G watch スマートウォッチセットアップと使ってみた所感
スマートウォッチって何が出来るねん
一般にスマートウォッチは携帯電話とBluetoothで接続して使う電子時計のことを指すようです。
1. スマホの通知やメールの確認,簡単操作
2. ジェスチャやタッチ入力による音楽などの操作
3. 音声入力を用いたメモ入力や録音
あたりが基本的な機能でしょうか。
Wifiに繋げるタイプはスタンドアロンで動画を見たり音楽を流したりも出来ます。
クァッドコアのCPUも載せてまさに腕につけられる携帯電話のような感じになりつつあります。
LG G watchについて
実家に帰ったら昔なんかで貰ったGoogle Watchがありました。
LG G Watch (スマートウォッチ) Android Wear - Black Titan
- 出版社/メーカー: LG
- メディア: Wireless Phone Accessory
- この商品を含むブログを見る
これは多分結構前の型なのでもっといいものが今はあるはず。
Android対応スマートウォッチの比較【Android Wear】
センサとして加速度計,コンパス,ジャイロスコープを積んでいるので万歩計やコンパス,ジェスチャ入力などの用途に使えます。
本体にGPSはないようです。
またこの機種は接続手法がBlueToothだけですが,買うなら絶対単独でWifiにつなげる機種が良さそうです。
時計のみのスタンドアロンでメールの送受信や動画を見たり出来ます。
iPhoneとAndroidのどっちとペアリングするべきか
Androidをメインで使っている人はAndroid一択です。
iPhoneがメインでサブでAndroid端末を持っている場合はちょっと迷います。
僕がこれを手に入れた頃はペアリング用のソフト「Android wear」はAndroidにしかなかったのですが,
どうやら今はiPhone用のアプリも出たようですね。
なるべくメインのiPhoneと接続したいですがまだ,融通が利かない問題があるようです。
iPhoneとの相性△
以下の記事に検証があります。記事に日付がないのですが,2017年の初頭くらいと予想します。
securitysoft.asia
「通知を見る」などの基本機能は使えるがカスタマイズやその他の便利機能を使うことが出来ない。
というのが結論のようです。
また,レビューを見るとiOS11と相性が悪いらしいというのも伺えます。(2018年1月現在)
すると,
メインで使っているiPhone + 連携のしづらいアプリ
サブでしか使わないAndroid + カスタマイズ自在のアプリ
の2つで利便性を天秤にかけて考える必要がありそうです。
Amazon Fireとの相性✕
FIREタブレットも試してみたのですが,あまり使えなかったです。
というのもFIREタブレットをAndroid化しても,ソフトの起動に認証が必要と出て時計のカスタマイズが出来なかったからです。
Fire HD 10 タブレット (Newモデル) 32GB、ブラック
- 出版社/メーカー: Amazon
- 発売日: 2017/10/11
- メディア: エレクトロニクス
- この商品を含むブログ (5件) を見る
なお,FIREタブのAndroid化はこちら。非公式ソフトを使うので自己責任でお願いします。
ossyaritoori.hatenablog.com
Androidとのペアリング
「Android Wear」というアプリを入れて最初にペアリングをします。
入れてみたアプリ
とりあえず以下の記事を参照にしてアプリを入れてみたり。
【スマートウォッチ】入れておくべき おすすめアプリランキングベスト10 | TECH::NOTE | プログラミングをはじめる全ての人に
使ったものについて簡潔な感想と紹介をば。
- Wear Mini Launcher
アプリを起動する際のデスクトップショートカットみたいなものを作るアプリ。
Wear Mini Launcher:Gear LiveやLG G Watchの左上からスワイプしてアプリ一覧を表示し、すぐにアプリを起動できる必須アプリ。
2018年1月現在,右フリックですぐメニューが出るのでそこまで必要性を感じないかなぁ。
評判自体は上々なので今度試してみるけど。
- Wear Mail for Gmail
Gmailを簡単操作できるアプリ。
メールをウォッチから直接確認可能。普通にAndroid出せばいいやんというのは禁句で。
これはAndroid側のMusicプレーヤーだが,インストールすることでペアリングした時計で音楽の再生や停止等を一通り制御できる。
逆に,時計に音楽を入れて時計側から再生することも可能。
常に手に装着しているデバイスだからこそ実現できる手軽感。願わくは端末側の曲をきちんとチョイスさせて欲しい。
- Wear Audio Recorder
録音アプリ。インタビューやミーティングのメモを簡単に取れたらいいかな?とおもって。
使用感は後ほど。
所感
正直普段腕時計とか見ないので違いについての言及は控えます。
「楽しいおもちゃ」であることは間違いないですが「役に立つツール」として実感はまだ出来ないです。
ソフトウェアのブラッシュアップや新機能の追加に期待ですね。
なお,元日にこれをずっといじってたら親に呆れられました。