Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

【一太郎】マクロのヘルプが表示されない

「ツール」→「マクロ」→「マクロバイザー」から、各項目を表示させようとすると、「このプログラムからヘルプを取得できない理由」と表示されて、ヘルプが表示されないことがある。

f:id:munibus:20190522070913p:plain

これは、古い形式(*.hlp)のヘルプファイルを開くためのプログラムがインストールされていないため。Windows 7では、初期状態ではインストールされていない。

この古い形式のヘルプファイルを開くためのプログラム(winhlp32.exe)は、マイクロソフトの公式ページから無料でダウンロードしてインストール、使用することができる。

https://support.microsoft.com/ja-jp/help/917607/feature-not-included-help-not-supported-error-opening-help-windows

上記のページからダウンロードして、インストールすれば良い。

【Excel】セルに入力した文字の一部の色を変更したのに表示されない

セルに入力した文字の一部の色を変更したのに、編集時は表示されるのに、編集後にはそれが表示されなくなることがある。

このような場合は、セルの書式設定を見る(そのセルの上で、右クリック→「セルの書式設定」)。表示形式の分類を「標準」にしてみると、直ることがある。

【TeX】upLaTeXで図としてPDFファイルを挿入する

\includegraphicsを使う。ただし、いろいろと細かな設定が必要。

\documentclass[uplatex]{jsarticle}
\begin{document}
\includegraphics{figure.pdf}
\end{document}

コンパイルしてみる。

PS > uplatex document
(表示省略)
! Undefined control sequence.
l.○ \includegraphics
{figure.pdf}

何も考えないでPDFファイルを指定すると、上記のようなエラーが発生する。\usepackageで以下のように指定する。

\documentclass[uplatex]{jsarticle}
\usepackage[dvips]{graphicx,color}
\begin{document}
\includegraphics{figure.pdf}
\end{document}

コンパイルしてみる。

PS > uplatex document
(表示省略)
! LaTeX Error: Cannot determine size of graphic in figure.pdf (no BoundingBox).
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.○ \includegraphics{figure.pdf}

これでもエラーが発生する。ドキュメントクラスのオプションにdvipdfmxを指定する必要がある。

\documentclass[uplatex,dvipdfmx]{jsarticle}
\usepackage[dvips]{graphicx,color}
\begin{document}
\includegraphics[]{figure.pdf}
\end{document}

これで、図が挿入される。

【PowerShell】コマンドの実行時間を測定する

Measure-Commandコマンドレットを使う。Measure-Commandの後に、実行時間を測定したいコマンドなどを波括弧「{ }」で挟んで入力して、このコマンドレットを実行する。

以下は、フォルダーC:\Windows\SysWOW64(サブディレクトリ内も含む)から、note~で始まるファイルを検索した例。

PS > Measure-Command {Get-ChildItem C:\Windows\SysWOW64 -include note* -recurse -name}
Days : 0
Hours : 0
Minutes : 0
Seconds : 10
Milliseconds : 122
Ticks : 101224232
TotalDays : 0.000117157675925926
TotalHours : 0.00281178422222222
TotalMinutes : 0.168707053333333
TotalSeconds : 10.1224232
TotalMilliseconds : 10122.4232

実行時間は見てのとおり。この例では、約10.12秒かかったということ。

【PowerShell】キー入力待ちの状態にする

[Console]::ReadKey()メソッドを使う。このメソッドを使うことで、コマンドプロンプトのpauseコマンドと同様に、何かしらのキー(Shift、Ctrl、Altは除く)が押されるまで待つ状態を作ることができる。

PS > [Console]::ReadKey($true) | Out-Null

【PowerShell】文字列の入力を読み取る

Read-Hostコマンドレットを使う。このコマンドレットを使うと、Enterキーの入力待ち状態になる。入力された文字列は返される。プロンプトに表示する文字列を指定することができるが、最後に1バイトのコロンが強制的に付与される。

PS > Read-Host
abc
abc
PS > Read-Host "入力をどうぞ"
入力をどうぞ: abc
abc

返された文字列は変数に代入できる。

PS > $r = Read-Host "入力をどうぞ"
入力をどうぞ: abc
PS > $r
abc

【Vim】検索するときに英文字の大文字小文字を区別する

Vimは「/」(スラッシュ)コマンドを使用して検索をするとき、初期状態では英文字(半角のA~Zとa~z)の大文字と小文字は区別されずに検索される(例えばAAAを検索するとAAaにもヒットする)。これを区別するには以下のコマンドを次移行する

:set noignorecase

検索時の英文字の大文字小文字を同一視することを明示的に設定するには、以下のようにする。

:set ignorecase

上記の設定をしなくても、検索する文字列に「\c」を含めると、上記の設定を無視して大文字小文字を無視して検索をする。「\C」を含めるとsetコマンドによる設定を無視して強制的に大文字小文字を区別して検索する。


/String\c

String、STRING、stringなどを検索

 

/String\C

Stringのみを検索

【R】正規表現のパターンに一致した文字列のみを取り出す

regmatches関数とregexpr関数を組み合わせることで、正規表現のパターンに一致したその文字のみを取り出すことができる。

以下は、文字型ベクトルからパターンに一致した文字のみをとりだした例。パターン「^1\\.[1-2]」の解釈は、「先頭文字が「1」で次の文字が「.」(ピリオド)でその次の文字が「1」か「2」」である(\\と\を2個並べていることに注意)。よって該当する文字は「1.1」と「1.2」のみであり、ベクトルの1つ目と2つ目の要素が該当し、そのパターンに一致した「1.1」と「1.2」が返されている。

> st <- c("1.1.1", "1.2.1", "1.3.1")
> regmatches(st, regexpr("^1\\.[1-2]", st))
[1] "1.1" "1.2"

これを利用すると、例えばApacheのログファイルから、アクセス元のIPアドレスのみを簡単に抜き出すことができる。Apacheのログは、通常は以下のような書式である。

XX.XX.XX.XX - - [XX/XXX/XXXX:XX:XX:XX +0900] "GET ~"
XX.XX.XX.XX - - [XX/XXX/XXXX:XX:XX:XX +0900] "GET ~"
・・・

この各行が1行ごとにベクトルvに代入されている場合は、以下のようにすれば、先頭のIPアドレスのみを文字ベクトルとして抜き出すことができる。

> regmatches(v, regexpr("^[0-9]{1,3}(\\.[0-9]{1,3}){3}", v))
[1] "XX.XX.XX.XXX" "XXX.XXX.X.XX" "X.XXX.XX.X"
・・・

【make】makefileの例(複数のファイルから1つのファイルを作成する)

複数のファイルから1つのファイルを作成する場合の例。

upLaTeXでPDFファイルを作成する

元ファイル doc.tex docsub1.tex docsub2.tex
作成するPDFファイル doc.pdf

doc.pdf: doc.tex docsub1.tex docsub2.tex
     ptex2pdf -l -u $<

自動変数「$<」は、1行目の一番左に書いたものに自動で置き換わる。

【PowerShell】ディレクトリー(サブディレクトリー含む)からファイル名を指定してファイルを検索する

Get-ChildItemコマンドレットは、ファイル名を指定してファイルの検索を行うことができる。-Recurseオプションをつけると、そのフォルダーにある全てのサブディレクトリの中も検索する。

以下は、ディレクトリーC:\Windowsおよびそのサブディレクトリーから、ファイル名がnoteで始まりかつ拡張子がexeのファイルを検索した例。-nameオプションをつけることで、ファイル名のみが表示されるようになる。

PS > Get-ChildItem C:\Windows -include note*.exe -recurse -name
notepad.exe
System32\notepad.exe
SysWOW64\notepad.exe