毎日もくもく

毎日もくもく

日記,そして備忘録

プログラミング嫌い

プログラミング嫌い.
ただ理系なら必須なのが辛いところ(シミュレーションや実験データ解析のため).
別に新しいアルゴリズムを考える必要はないけれど,数式とか理論をプログラムに起こせる能力がないと生きていけない.
今学部 4 年の私は卒論のために色々コーディングしているけど,それでつまっていてとてもつらい.
卒業できる気がしない.

Arch Linux でイヤホンから音が出なくなった

ノートパソコン(Thinkpad X260)に入れている Arch Linux でイヤホンから音が出なくなった.
普通にパソコンのスピーカーからは音が出るし,デュアルブートしている Windows 10 ではイヤホンから音がでていたので Arch Linux での問題と判断.
ただ,イヤホンは認識されているっぽいし,なんで急にそうなったかが分からずもやもや.
Google で "linux headphone sound" とかで調べると同じような問題は過去にいっぱいあったらしく,16.04 - Laptop headphone jack produces no sound - Ask Ubuntu を参考にしたら私の場合は直った.
以下のコマンドを実行した(root はいらないらしいが,私は sudo つけてしまった).

$ alsactl restore

私の場合はこのコマンドが使えなかったので,

# pacman -S alsa-utils

を事前にした.
これで一応イヤホンから音が聞こえるようになってめでたしめでたしなのだが,理由がわからないので気持ち悪い.
ちなみに alsactl のマニュアルを読んでみると,restore オプションのところにこんなことが書いてある.

$ man alsactl

restore loads driver state for the selected soundcard from the configuration file. If restoring fails (eventually partly), the init action is called.

英語分からないから雰囲気で.

参考書を信じた俺が馬鹿だった

参考書だよりに数値計算Python で実装していて,完全に実装したはずなのに全然理論的なものと一致しないと思っていたら,どうやら教科書の式が違ったっぽい.
参考書を信じた俺が馬鹿だった.
論文だけを信じていけ.

numpy は天才で発達障害だから凡人の俺の意図を汲み取れない

ちなみにプログラムは書いたとおりにしか動かない.

今日は私の誕生日です.

LuaLaTeX のテンプレを整える (2)

前(LuaLaTeX のテンプレを整える (1) - 毎日もくもく)から部分的に変えたので,一応載せる.

\documentclass[10pt,a4paper]{ltjsarticle}       % LuaTeX を使う

\usepackage[luatex,draft]{graphicx}             % LuaTeX 用, draft がついているときは図の代わりに同じ大きさの枠ができる
\usepackage{here}                               % 図表の位置を強制して出力
\usepackage{afterpage}                          % 残っている図を貼り付ける(\afterpage{\clearpage})
\usepackage[subrefformat=parens]{subcaption}    % サブキャプション(図1(a) とか)
\usepackage{wrapfig}                            % 図に文章を回りこませる
\usepackage{booktabs}                           % きれいな表(\toprule \midrule \bottomrule)
\usepackage{multirow}                           % 表で行結合
\usepackage{multicol}                           % 表で列結合
\usepackage{hhline}                             % 表で 2 重線
\usepackage[table]{xcolor}                      % カラー
\usepackage{tikz}                               % 図描画用
\usepackage[framemethod=tikz]{mdframed}         % 文章を囲むとき用
\usepackage[version=3]{mhchem}                  % 化学式
\usepackage{siunitx}                            % 単位
\usepackage{comment}                            % コメント
\graphicspath{./img/}                           % 画像ファイルのパス
\setcounter{tocdepth}{3}                        % 目次に subsubsection まで表示

% -----余白の設定-----
% geometry と fancyhdr の順番は http://d.hatena.ne.jp/pureodio/20110212/1297475110 参照
\usepackage{geometry}
\geometry{%
  left=19.05truemm,%
  right=19.05truemm,%
  top=25.40truemm,%
  bottom=25.40truemm}

% -----ヘッダ・フッタの設定-----
\usepackage{fancyhdr}
\usepackage{lastpage}
\pagestyle{fancy}
\lhead{}                                 % 左ヘッダ
\chead{}                                 % 中央ヘッダ
\rhead{}                                 % 右ヘッダ
\lfoot{}                                 % 左フッタ
\cfoot{\thepage~/~\pageref{LastPage}}    % 中央フッタ
\rfoot{}                                 % 右フッタ
\renewcommand{\headrulewidth}{0pt}       % ヘッダの罫線を消す

% -----フォントの設定-----
% https://ja.osdn.net/projects/luatex-ja/wiki/LuaTeX-ja%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9
% http://myfuturesightforpast.blogspot.jp/2013/12/tex-gyre.html など
% 欧文
\usepackage{fontspec}
% Avant Garde -> TeX Gyre Adventor
% Bookman Old Style -> TeX Gyre Bonum
% Zapf Chancery -> TeX Gyre Chorus
% Courier -> TeX Gyre Cursor
% Helvetica -> TeX Gyre Heros
% Helvetica Narrow -> TeX Gyre Heros Cn
% Palatino -> TeX Gyre Pagella
% New Century Schoolbook -> TeX Gyre Schola
% Times -> TeX Gyre Termes
\setmainfont[Ligatures=TeX]{TeXGyreTermes}
\setsansfont[Ligatures=TeX]{TeXGyreHeros}
\setmonofont[Scale=MatchLowercase]{TeXGyreCursor}
% 日本語
% ipaex -> IPAex Mincho + IPAex Gothic
% noto-otf -> Noto Serif CJK + Noto Sans CJK
\usepackage[match,deluxe,expert,bold,noto-otf]{luatexja-preset}
\usepackage{luatexja-otf}
% 数式
\usepackage{amsmath}    % 高度な数式用
% times ベース -> newtxmath
% palatino ベース -> newpxmath
\usepackage{newtxmath}
\usepackage{mathrsfs}   % 花文字用
\usepackage{bm}         % 斜体太字ベクトル

% -----PDF ハイパーリンク,ブックマーク,URL の設定-----
% オプション(\hypersetup{})は https://texwiki.texjp.org/?hyperref 参照
\usepackage{hyperref}
\hypersetup{%
  luatex,%
  unicode=true,%
  hidelinks,%
  bookmarksnumbered=true,%
  bookmarksdepth=subsubsection,%
  pdfencoding=auto,%
  setpagesize=false}
\usepackage{url}

% -----ソースコードの設定-----
% オプション(\lstset{})は http://tug.ctan.org/tex-archive/macros/latex/contrib/listings/listings.pdf 参照
% 使うときは
% \begin{lstlisting}[language=aaaa,caption=bbbb,label=List:cccc]
% hogehoge
% \end{lstlisting}
\usepackage{listings}
\lstset{%
  basicstyle=\ttfamily\small,%
  frame=single,%
  frameround=ffff,%
  numbers=left,%
  stepnumber=1,%
  numbersep=1\zw,%
  breaklines=true,%
  tabsize=4,%
  captionpos=t,%
  commentstyle=\itshape}

% -----図表等の reference の設定-----
\usepackage[nomsgs]{refcheck}    % ラベルを表示
% 表示文字列を日本語化
\renewcommand{\figurename}{}
\renewcommand{\tablename}{}
\renewcommand{\lstlistingname}{リスト}
\renewcommand{\abstractname}{概要}
% 図番号等を"<章番号>.<図番号>"
% lstlisting に関しては https://tex.stackexchange.com/questions/134418/numbering-of-listings 参照
\renewcommand{\thefigure}{\thesection.\arabic{figure}}
\renewcommand{\thetable}{\thesection.\arabic{table}}
\AtBeginDocument{\renewcommand{\thelstlisting}{\thesection.\arabic{lstlisting}}}
\renewcommand{\theequation}{\thesection.\arabic{equation}}
% 節が進むごとに図番号等をリセット
% http://d.hatena.ne.jp/gp98/20090919/1253367749 参照
\makeatletter
\@addtoreset{figure}{section}
\@addtoreset{table}{section}
\@addtoreset{lstlisting}{section}
\@addtoreset{equation}{section}
\makeatother
% \ref{} の簡単化
\newcommand*{\refSec}[1]{\ref{#1}~章}
\newcommand*{\refSsec}[1]{\ref{#1}~節}
\newcommand*{\refSssec}[1]{\ref{#1}~項}
\newcommand*{\refFig}[1]{\figurename~\ref{#1}}
\newcommand*{\refTab}[1]{\tablename~\ref{#1}}
\newcommand*{\refList}[1]{\lstlistingname~\ref{#1}}
\newcommand*{\refEq}[1]{式~(\ref{#1})}
% 引用を上付き文字 (1 に
% ftp://ftp.kddilabs.jp/CTAN/macros/latex/contrib/cite/cite.pdf
% http://www.biwako.shiga-u.ac.jp/sensei/kumazawa/tex/cite.html など
\usepackage[superscript]{cite}
\renewcommand{\citeleft}{}
\renewcommand{\citeright}{}
\renewcommand*{\citeform}[1]{#1)}

% -----数式中便利な定義-----
% https://www.library.osaka-u.ac.jp/doc/TA_LaTeX2.pdf
% https://en.wikibooks.org/wiki/LaTeX/Mathematics など
\newcommand{\e}{\mathrm{e}}                                      % ネイピア数
\newcommand{\diffd}{\mathrm{d}}                                  % 微分の d
\newcommand{\imagi}{\mathrm{i}}                                  % 虚数単位(i)
\newcommand{\imagj}{\mathrm{j}}                                  % 虚数単位(j)
\newcommand{\vDel}{\varDelta}                                    % デルタ大文字
\newcommand{\veps}{\varepsilon}                                  % イプシロン小文字
\newcommand*{\paren}[1]{\left( #1 \right)}                       % () を中身の大きさに合わせる
\newcommand*{\curly}[1]{\left\{ #1 \right\}}                     % {} を中身の大きさに合わせる
\newcommand*{\bracket}[1]{\left[ #1 \right]}                     % [] を中身の大きさに合わせる
\newcommand*{\absolute}[1]{\left\lvert #1 \right\rvert}          % 絶対値
\newcommand*{\average}[1]{\left\langle #1 \right\rangle}         % 平均
\renewcommand{\Re}{\operatorname{Re}}                            % 実部
\renewcommand{\Im}{\operatorname{Im}}                            % 虚部
\newcommand*{\Fourier}[1]{\mathcal{F}\left[ #1 \right]}          % フーリエ変換
\newcommand*{\iFourier}[1]{\mathcal{F}^{-1}\left[ #1 \right]}    % フーリエ逆変換
\newcommand*{\Laplace}[1]{\mathcal{L}\left[ #1 \right]}          % ラプラス変換
\newcommand*{\iLaplace}[1]{\mathcal{L}^{-1}\left[ #1 \right]}    % ラプラス逆変換
\newcommand*{\sfrac}[2]{{}^{#1}\!/_{#2}}                         % xfrac パッケージの \sfrac{}{} の代わり
\newcommand*{\lavec}[1]{\mathbf{#1}}                             % ラテン文字太字ローマン体.
\newcommand*{\greekrm}[1]{\directlua{                            % newtxmath で,ギリシャ文字をローマン体にする
  gc = [[#1]]
  gc_len = string.len(gc)
  tex.print(string.sub(gc, 1, gc_len - 1) .. 'up')}}
\newcommand*{\lgvec}[1]{\boldsymbol{\greekrm{#1}}}               % ギリシャ文字小文字用ベクトル.太字ローマン体.
\newcommand*{\ugvec}[1]{\boldsymbol{#1}}                         % ギリシャ文字大文字用ベクトル.太字ローマン体.

% -----タイトル-----
% \maketitle の再定義
\makeatletter
\newcommand{\subtitle}[1]{\def\@subtitle{#1}}
\newcommand{\institute}[1]{\def\@institute{#1}}
\renewcommand{\maketitle}{
  \begin{mdframed}[roundcorner=10pt]
    {\small \@date}
    \vspace{-2.5ex}
    \begin{center}
      \textgt{\@subtitle}\\[0.25ex]
      {\Large \textgt{\@title}}
    \end{center}
    \vspace{-3.5ex}
    \begin{flushright}
      \@institute \hspace{0.5em} \@author
    \end{flushright}
  \end{mdframed}
}
\makeatother
% 実際のタイトルなどはここに記入
\title{タイトル Title}
\subtitle{副タイトル Subtitle}
\author{著者 Author}
\institute{所属 Institute}
\date{日付 Date}

% -----プリアンブルここまで-----

\begin{document}
\maketitle
\thispagestyle{fancy}

hogehoge

\bibliographystyle{junsrt}
\bibliography{reference}

\end{document}

変更点としては,

くらい.

今後の展望としては,

くらい.

コードに行番号をつけた

はてなブログのプログラムコードに行番号を表示する(2017/4/15修正) - tanaka's Programming Memoはてなのシンタックスハイライトに行番号をつける - 7cc@はてなブログ に感謝.

LuaLaTeX でギリシャ文字小文字の太字ローマン体を出す方法

私は TeX でベクトルを太字ローマン体にしている.
なのでギリシャ文字もそうしたい.
私は数式のために amsmathnewtxmath を使っているので,ギリシャ文字ローマン体太字は例えば

\boldsymbol{\alphaup}

とすれば望みどおりの出力を得ることができる(以下では α をギリシャ文字の一例として使う).
ギリシャ文字末尾に up をつけることでそのギリシャ文字がローマン体になり(newtxmath),\boldsymbol{} でその中身を太字にしている(amsmath).
これで解決......なのだが,もしベクトルを太字イタリック体で表そうってなったときに,上述の方法でギリシャ文字を太字ローマン体にしていると,書き換えづらくなる.
ギリシャ文字の太字イタリック体は普通に

\bm{\alpha}

で出せるが(要 bm),\boldsymbol{\alphaup} から \bm{\alpha} に書き換えるのは非常にややこしい.
なぜならベクトル中のギリシャ文字のコマンドから up を消さないといけないからだ.
なので今回,新たに \lgvec{} というコマンドを作り,\lgvec{\alpha}ギリシャ文字の太字ローマン体を出せるようにした.
また,せっかく LuaLaTeX を使っているので,Lua を使ってみた.
もしかしたらもっと楽な方法があるかもしれないが,まあ Lua を使ってみたかったので良しとする.

以下をプリアンブルに書く.
ちなみに 1 文字ずつしか対応していない(数文字まとめてベクトルにはあまりしない気がする)し,大文字にも対応していない(デフォルトでギリシャ文字大文字ってローマン体っぽい(\varDelta とかでイタリックになる).大文字はそのまま \boldsymbol{} で)

\newcommand*{\greekrm}[1]{\directlua{
gc = [[#1]]
gc_len = string.len(gc)
tex.print(string.sub(gc, 1, gc_len - 1) .. 'up')
}}
\newcommand*{\lgvec}[1]{\boldsymbol{\greekrm{#1}}}

\greekrm{} でその引数 \alpha\alphaup に変更し,それを受け取って \lgvec{} で太字にしている.
\greekrm{}Lua で書いていて,まず引数 #1 を受け取って,そのまま文字列として gc に格納している.
ここで #1[[]] で囲っているのは,Luaエスケープシーケンス(\n\t など)を無視してそのまま格納するためである(例えば \theta を入れたときに \tLua でタブと解釈されると悲惨である).
ただしこうすると gc\alphaとスペースが格納される(Writing Lua in TeX - LuaTeXWiki 参照)ので,次にその文字列の長さを取得して(string.len(gc)),最後に tex.print()gc から最後の文字(つまりスペース)を除いたもの(string.sub(gc, 1, gc_len - 1)) + ローマン体のための upTeX 側,\lgvec{}に渡している.

以上のようにややこしい方法となったし,ラテン文字のときと方法が異なるが,ギリシャ文字の太字ローマン体を出せるようになったし,簡単に太字イタリック体にも変更できるので良い.
ちなみにもっとエレガントな方法があれば教えてほしい.

また Lua については Lua 入門 - 計算数学実習資料集 を参考にした.

f:id:xartaky:20171106000426p:plain