adbird(広告鳥) 備忘録

Geanyで改行削除

テキストエディタのGeanyで改行を削除するときに注意する点。

  • 「検索文字列」の欄に改行の正規表現である \n を入れる。
  • 「置換文字列」の欄には何も入れない。
  • 正規表現を使用」にチェックを入れる。
  • 「複数行一致を使用」にチェックを入れる。※これを忘れがち。

f:id:adbird:20190506161920p:plain
geany 改行削除

lualatexで新規インストールしたフォントが見つからないエラーへの対処

M+フォントを使っていて、LuaLaTeXで縦書きのPDFを生成時に一部の記号等が表示されない問題が発生、エラー報告をしていたのだが、ありがたいことに問題を修正してくださった。

早速新しいバージョンをダウンロードして、/home/〜/.fontsフォルダ内に置いて、lualatexを実行すると、「フォントが見つかりません」と出る…。

\documentclass{ltjtbook}
\usepackage{luatexja-fontspec}
\setmainjfont{mplus-1p-regular}
\setsansjfont{mplus-1p-regular}
\begin{document}

これは(全角の丸括弧)。

これは[全角の大括弧]。

等号=も表示されなかった。

\end{document}

UbuntuのレポジトリからインストールしたM+フォントはアンストールしているし、上記のようにちゃんとフォントも指定しているし、$ fc-cache -fvでフォントキャッシュも更新したし、なぜだ…?

その後、いろいろ調べて、試行錯誤した結果、lualatexのキャッシュらしい/home/〜/.texlive2018/texmf-var内にあるluatex-cacheフォルダとluatexjaフォルダを削除するとうまくいった。

上記の2つのフォルダを削除後にlualatexを実行すると、新たにキャッシュフォルダを作成する間、「しばらく待ってね」的なメッセージが出るけど、再びluatex-cacheフォルダとluatexjaフォルダが作成された2回目以降はすんなり実行される。

ffmpegで複数の動画をワンライナーで結合

ffmpegのバージョンが上がって、以前書いた方法だとできなくなっていたので、新しく修正。

任意のフォルダ内に結合したい動画(001.mp4、002.mp4というように必ず連番で)を入れて、そのフォルダ内で端末を開いて、以下を実行。

for f in *.mp4; do echo "file '$f'" >> mylist.txt; done && ffmpeg -f concat -i mylist.txt -c copy output.mp4 && rm mylist.txt

  • インデックスファイルを作る。
  • 動画結合。
  • インデックスファイルを削除。

のコマンドをつなげただけ。

参照 wiki:Concatenate

複数の動画を再エンコードせずに結合する方法をググると、インデックスファイルを作ってから…という情報が出てくるのだけど、いちいちインデックスファイルは作りたくないので、調べてみたら、以下の方法でできた。

$ ffmpeg -i "concat:imput001.mp4|input002.mp4|input003.mp4" -c copy output.mp4

参照 How to concatenate two .aac files with the ffmpeg?

スカパー!オンデマンドの再生画面をユーザースタイルシートでシンプルに

今年ももうすぐアメリカのフォーミュラカーレースのトップカテゴリーであるインディカー・シリーズが開催される。
佐藤琢磨のほかにも日本でも走っていたローゼンクヴィストがフル参戦するし、インディ500には今年もアロンソが参戦するし、楽しみ。

僕はスカパー!オンデマンドの インディカー・シリーズ PPV(ペイ・パー・ビュー) 全話パック(税抜 9,980円) を購入して視聴する。
レースのライブ中継が見られるし(日本時間の深夜・早朝にあることが多いので、ライブで見ることはあまりないけど)、ライブ中継後も翌年2月末まではオンデマンドでいつでもレースを見られるので、インディカー・シリーズに興味がある人はぜひ。

ただ、スカパー!オンデマンドで不満なのは、再生時の画面表示がごちゃごちゃしていたり、ボタンの配置場所などのレイアウトが僕好みでないことだ。
再生中にマウスを動かすと、以下のように再生ボタンなどのアイコンが出てくるのと同時に、番組情報なども表示されて画面の半分近くが隠れてしまう…。

f:id:adbird:20190306132117p:plain
スカパー!オンデマンド再生時デフォルト

そこでユーザースタイルシートを適用させて、自分好みのシンプルな画面表示にしてみた。

環境は以下の通り。

たぶんWindowsFirefoxでもできると思う。

chromeフォルダを作成

なぜFirefoxなのにchromeフォルダなのかは知らない…。場所は以下の通り。

/home/(ユーザー名)/.mozilla/firefox/xxxxx.default/chrome

「xxxxx.default」のところは、環境によってそれぞれ違っていると思うが、それに類するフォルダがすでに存在しているはず。
その中にchromeフォルダを作成する。

userContent.css ファイルを作成

chromeフォルダ内に、以下の内容の userContent.css ファイルを作成する。

@-moz-document domain(vod.skyperfectv.co.jp) {
    /*番組情報 非表示*/
    .metadata-info-row{
    display:none !important;
    }
    /*シークバー周囲余白*/
    .progress-controls-row{
    padding: 0.5em 0 1em 0 !important;
    }
    /*再生ボタン周り調整*/
    .button-controls-row{
    width:0 !important;
    margin:0.5em 0 0.5em 0 !important;
    left:43%;
    }
    .spod-miniplayer .bottom-controls, .spod-player .bottom-controls{
    padding-top:0 !important;
    }
    .button-controls-row a img.ch-img{
    display:none !important;
    }
    .player-control-spacer-element{
    display:none !important;
    }
    .zapping-arrow.left{margin-top:-3.5em !important;}
    .zapping-arrow.right{margin-top:-3.5em !important;}
}

なお、上記ソース内の!importantは、サイト側設定のスタイルよりもここで設定したスタイルの方を優先させるために必要。

Firefoxを起動していたら、一度終了させて、再起動する。

結果

こんな感じに!マウスを動かして再生ボタン等のアイコンが出てきても画面の大半が見えている!

f:id:adbird:20190306134023p:plain
スカパー!オンデマンド再生時ユーザースタイルシート適用

デフォルトに戻したいときは、userContent.css ファイルを削除すればいいし、他にもいじりたい人はFirefoxでページを表示中に右クリック>「要素を調査」でどこにどんなスタイルが適用されているかを確認して、userContent.css ファイルで調整すればいい。

LaTeXで作成したPDFの本文(行)とノンブルの表裏の重なりの確認方法

LaTeX(LuaLaTeX) で A5・縦書き・2段組の小説本・エッセイ本を作る のような LaTeX で縦書きの文書を組んだとき、版面をいじることになる。

そうやって版面をいじって製本(両面印刷)した際に、本文(行)とノンブルが用紙の表裏で、きっちりと重なるようにしなくては裏写りしてしまって美しくない。

以下、完成したデータ「原稿.pdf」があるとして、そのデータの本文(行)とノンブルが表裏できっちりと重なっているかを確認する方法。

1 画像編集ソフトGIMPで「原稿.pdf」の確認したいページを開く。解像度は適当に300ピクセルぐらいに。

f:id:adbird:20190128213844p:plain

2  「レイヤーとして開く」で再び、「原稿.pdf」を選択して開き(解像度は1.と同じにする。おそらく、自動で1.の設定が引き継がれているはず。)、上記のページの上に、ウラ面にあたるページをレイヤーとして重ねる。

f:id:adbird:20190128214106p:plain

3 「鏡像反転」で重ねたレイヤー(2.で重ねたページ)を反転させる。

4  「不透明度」を50ぐらいにすると、最初に開いたページが見えてくるので、重なっていることを確認。

f:id:adbird:20190128214206p:plain

WindowsでLinuxのシェルスクリプト(.sh)を実行

過去の記事からもわかるように、僕はmarkdownからhtmlやpdf等に変換する際に、pandocだけでなく、sedも組み合わせてシェルスクリプトやバッチファイルを作る。

Windows環境の場合、これまではsed for Windowsをインストールして、バッチファイルにsedコマンドを並べて処理していた。しかし、 gnuwin32のsedコマンド使用時に半角記号や文字コードで気をつけること - Qiitaでも紹介されているように、同じsedのはずなのに、一部の記号について、Linuxシェルスクリプトに書いたsedでは問題なく置換してくれるものが、Windowsのバッチファイルに書いたsedではエスケープをつけないと置換してくれない(またはエスケープ方法が分からない)というような状況になっていた。

もういいかげん面倒くさくなってきたので、LinuxでつくったシェルスクリプトをそのままWindowsでも実行したい!!ということで、 CygwinWindowsに導入して、WindowsでもLinuxシェルスクリプトを実行できるようにした。

ちなみにストレージ容量が小さいポータブックでできるように、近年話題のWindows Subsystem for Linux(WSL)は導入しなかった。

Cygwin のインストール

インストールの仕方は、 さよならコマンドプロンプト!UNIXコマンドをWindowsで実行すべくCygwinを導入 あたりを参考に。

インストールの際、chere を追加しておけば、後の作業がはかどる。

PATHを通して、コマンドプロントでもLinuxコマンドが使えるようにする

PATHを通しておけば、WindowsPowerShellコマンドプロンプトからでも、Cygwinに含まれるコマンドが使えるのでいろいろ便利。

コントロールパネルの「環境変数を編集」で、インストールされたcygwinのbinフォルダ(例「C:\cygwin64\bin」)を追加すればOK。

f:id:adbird:20190117231131p:plain

今いる場所でCygwin Terminal を開く

Ubuntuで僕がよく使う、ファイルマネージャーで今、開いているディレクトリ(フォルダ)内で右クリックして「端末で開く」ってやつのCygwinバージョン。

Cygwin Bashをエクスプローラー右クリックで任意のディレクトリをカレントにして起動する方法 - Engineer's Notebookに書いてある通り。

1.Cygwinのインストール時にchereをインストールしていなかったら、もう一度セットアップexeをクリックしなおして、chereをインストール。

2.Cygwin Terminal のアイコン上で右クリックして「管理者として実行」。

3.Cygwin Terminalが開いたら、以下を実行。

$ chere -ian -e "Cygwin Terminal Here" -t mintty

これで、右クリックメニューの中に「Cygwin Terminal Here」が入っている。

jlreq のインストール方法

LaTeXの縦書き界隈で今一番アツい jlreq をインストールする(たぶんこれで合ってるはず…)。なお、環境はUbuntu18.04。

すでにTeX Live 2018には標準で入っているのだけど、 jlreq は開発が続いていて、更新も頻繁なのでローカルで更新を追加したい(tlmgrTeX Live のアップデートをしても jlreq が更新されるのかもしれないけど、システム全体をアップデートして不具合が起こったときが面倒そうなので… )。

jlreq からzipファイルをダウンロードする。

f:id:adbird:20190115153216p:plain

zipファイルを展開すると、「jlreq-master」ディレクトリができるので、その中のREADME-ja.md を読む。

## インストール
`make`で必要なJFMを生成してください.その後,

* *.tfm -> $TEXMF/fonts/tfm/public/jlreq
* *.vf -> $TEXMF/fonts/vf/public/jlreq
* jfm-jlreq.lua, jfm-jlreqv.lua -> $TEXMF/tex/luatex/jlreq
* jlreq.cls, jlreq-helpers.sty  -> $TEXMF/tex/latex/jlreq

と配置します.`make install`とすると,$TEXMF=$TEXMFHOMEとしてこのコピーを行います.

うむ、初心者にとってはすでにハードルが高い…。

色々調べる。

JFM は 和文フォントメトリック(Japanese Font Metric ?)のこと。

TEXMFHOME は C:/Users/ユーザ名/texmf (Linuxなら /home/ユーザ名/texmf )の場所のこと。

ようは、$ make install とすると Ubuntuなら「ホーム(/home/ユーザ名)」ディレクトリ内に「texmf」というディレクトリを作ってくれて、そこにインストールしてくれるということか。

開いている「jlreq-master」ディレクトリの中で右クリック > 端末で開く (Windowsならエクスプローラーのアドレス欄に cmd と打ち込む。参照:エクスプローラーからのコマンドプロンプト起動)で端末を開いて、

$ make install

を実行。たしかに「ホーム(/home/ユーザ名)」ディレクトリ内に「texmf」というディレクトリができて、もろもろ展開されている。

ホーム上だからsudoはつける必要ないかもしれないけど、wiki一覧表の作成と更新 (mktexlsr) について)にあるとおり、sudoをつけて以下を実行。

$ sudo mktexlsr

「LaTeXシステムはユーザのTEXMFHOMEから優先して検索します」(TEXMFHOMEの利用)とのことらしいので、これで追加したほうの jlreq が使われるはず。たぶん…w。

jlreqが更新されたら、上記をまた行う。