PC心得帖

2004/10/26

研究や教育で用いられるコンピュータについての心得を書いておきます. 最近は段々多くなってきたので目次をつけておきます.

  1. Stataで回帰結果を esttab で整理してExcelに保存する方法
  2. Stataで「在支診病院数 × 医療費」の散布図を描く(都道府県番号つき/背景白/タイトルなし)
  3. Stataで相関係数の表をつくる(画面表示・p値・Excel出力・記号付き)
  4. Stataで記述統計量をつくる:画面表示/Excel出力/実務的Tips
  5. excelで出席を集計する方法
  6. LaTeXで図を簡単に書く方法
  7. TeXでOHPシートの作り方
  8. dviファイルをpdfファイルに変換する方法
  9. LaTeXで表を簡単に作る方法
  10. Excel のグラフを TeX 形式のファイルに載せる方法
  11. Excel のグラフを HTML 形式のファイルに載せる方法
  12. TeXの起動
  13. LaTeXで左右のマージン
  14. LaTeXで色を表示
  15. LaTeXでテストの問題番号を自動化
  16. Windowsのショートカットキー
  17. LaTeXで最初のページにページ番号を入れない
  18. Geocities のページに広告を入れない
  19. Excelの図をEPSファイルにする方法
  20. Windows 2000/XPでパスを設定する方法
  21. LaTeX文章の文字数を数える方法

Stataで回帰結果を esttab で整理してExcelに保存する方法

回帰分析を複数本走らせたあと、「きれいに並べて表にしたい」「Excelで扱いたい」というニーズに対して、Stata のユーザーコマンド esttab を用い、①回帰推定 → ②推定結果の保存・並べ替え → ③Excel 用に出力までの最短ルートをまとめます。自由度修正済みR²(Adjusted R²)も含めます。

目次
  1. estoutパッケージのインストール
  2. 回帰式を推定して保存(eststo)
  3. 並べ替え(変数の順序を揃える)
  4. Excel 用に CSV 出力(Adj. R² を含める)
  5. 仕上げ(ラベル/桁数/星/タイトル)
  6. 代替:.xlsx 直出力(outreg2)
  7. まとめ

1. estout パッケージのインストール

ssc install estout

2. 回帰式を推定して保存(eststo

* 1本目
eststo m1: regress medi_population clinic homedeath nursingdeath age income

* 2本目
eststo m2: regress care clinic homedeath nursingdeath age income

3. 並べ替え(変数の順序を揃える)

表に出す変数を限定し、表示順序を統一します。

local show clinic homedeath nursingdeath age income

4. Excel 用に CSV 出力(Adj. R² を含める)

esttab はネイティブの .xlsx 直書きには向きません。Excel でそのまま開ける .csv を出力するのが実務的です。

esttab m1 m2 using "回帰結果.csv", ///
    se r2 ar2 n keep(`show') order(`show') replace

5. 仕上げ(ラベル/桁数/星/タイトル)

label var clinic        "在支診病院数"
label var homedeath     "在宅死亡"
label var nursingdeath  "介護施設死亡"
label var age           "平均年齢"
label var income        "所得"

esttab m1 m2 using "回帰結果.csv", ///
    se(%9.3f) b(%9.3f)                  /// 桁数
    star(* 0.10 ** 0.05 *** 0.01)       /// 有意水準の星
    r2 ar2 n                            /// 統計量
    keep(`show') order(`show')          /// 並べ替え
    label                               /// 変数ラベル
    title("在宅支援 回帰結果")          /// 表タイトル
    mtitle("medi_population" "care")    /// モデル名
    replace

縦並びにしたいときは long オプションを追加:
esttab m1 m2 using "回帰結果.csv", se ar2 long replace

6. 代替:ネイティブ Excel(.xlsx)に出すなら outreg2

ssc install outreg2

* 1本目
regress medi_population clinic homedeath nursingdeath age income
outreg2 using "回帰結果.xlsx", replace ///
    addstat("Adj. R-squared", e(r2_a), "R-squared", e(r2), "N", e(N)) ///
    dec(3) label

* 2本目
regress care clinic homedeath nursingdeath age income
outreg2 using "回帰結果.xlsx", append  ///
    addstat("Adj. R-squared", e(r2_a), "R-squared", e(r2), "N", e(N)) ///
    dec(3) label

7. まとめ

Stataで「在支診病院数 × 医療費」の散布図を描く(都道府県番号つき/背景白/タイトルなし)

横軸:clinic(在支診病院数)/ 縦軸:medi_population(医療費・億円)/ ラベル:no(都道府県番号)

  1. 使う変数と前提
  2. 最短コード(点のみ・背景白・タイトルなし)
  3. 番号(no)を重ねる実務版
  4. 注:1〜47の番号と都道府県の対応を図下に表示
  5. 重なり回避・見やすさ調整のコツ
  6. コピペ用 do ファイル(欠損防御・高解像度保存つき)

1) 使う変数と前提

2) 最短コード(点のみ・背景白・タイトルなし)

// 背景を白ベース
set scheme s2color

// clinic(横) × medi_population(縦)
// タイトルなし・凡例なし・背景白固定
twoway scatter medi_population clinic, ///
    msymbol(O) msize(small) mcolor(navy) ///
    legend(off) ///
    graphregion(fcolor(white) lcolor(white)) ///
    plotregion(fcolor(white) lcolor(white)) ///
    xtitle("在支診病院数") ytitle("医療費(億円)")

// 画像保存(任意)
graph export "scatter_clinic_medi.png", as(png) replace width(1600)

3) 番号(no)を重ねる実務版

点は薄めに描き、同じ座標に「都道府県番号 no」を重ねます。重なりが多いときは mlabpos()mlabgap() を調整。

// 欠損を除外(安全)
preserve
keep if !missing(clinic, medi_population, no)

// 背景白
set scheme s2color

// 点+番号
twoway ///
    (scatter medi_population clinic, mcolor(blue%25) msymbol(O) msize(small)) ///
    (scatter medi_population clinic, msymbol(i) mlabel(no) ///
        mlabpos(12) mlabgap(1.5) mlabsize(small) mlabcolor(black)), ///
    legend(off) ///
    graphregion(fcolor(white) lcolor(white)) ///
    plotregion(fcolor(white) lcolor(white)) ///
    xtitle("在支診病院数") ytitle("医療費(億円)") ///
    xlabel(, format(%9.0fc)) ylabel(, format(%9.0fc)) ///
    aspect(0.7)

// 高解像度保存
graph export "scatter_clinic_medi_no.png", as(png) replace width(2000)
restore

4) 注:1〜47の番号と都道府県の対応を図下に表示

図の下に凡例的な注を出します(長いので複数行に分割)。

local n1  "注:番号の対応(1–47)"
local n2  "1 北海道, 2 青森, 3 岩手, 4 宮城, 5 秋田, 6 山形, 7 福島"
local n3  "8 茨城, 9 栃木, 10 群馬, 11 埼玉, 12 千葉, 13 東京, 14 神奈川"
local n4  "15 新潟, 16 富山, 17 石川, 18 福井, 19 山梨, 20 長野, 21 岐阜, 22 静岡, 23 愛知, 24 三重"
local n5  "25 滋賀, 26 京都, 27 大阪, 28 兵庫, 29 奈良, 30 和歌山"
local n6  "31 鳥取, 32 島根, 33 岡山, 34 広島, 35 山口, 36 徳島, 37 香川, 38 愛媛, 39 高知"
local n7  "40 福岡, 41 佐賀, 42 長崎, 43 熊本, 44 大分, 45 宮崎, 46 鹿児島, 47 沖縄"

twoway (scatter medi_population clinic, mcolor(blue%25) msymbol(O) msize(small)) ///
       (scatter medi_population clinic, msymbol(i) mlabel(no) mlabpos(12) mlabsize(small)), ///
       legend(off) graphregion(fcolor(white)) plotregion(fcolor(white)) ///
       xtitle("在支診病院数") ytitle("医療費(億円)") ///
       note(`"`n1'"' `"`n2'"' `"`n3'"' `"`n4'"' `"`n5'"' `"`n6'"' `"`n7'"', ///
            pos(6) ring(0) j(left) size(vsmall))

5) 重なり回避・見やすさ調整のコツ

6) コピペ用 do ファイル(完成版)

//--------------------------------------------------
// scatter_clinic_medi_no.do
// clinic(横) × medi_population(縦) に都道府県番号(no)を表示
// 背景白・タイトルなし・注で1〜47対応・高解像度保存
//--------------------------------------------------

preserve
keep if !missing(clinic, medi_population, no)
set scheme s2color

// 注テキスト
local n1  "注:番号の対応(1–47)"
local n2  "1 北海道, 2 青森, 3 岩手, 4 宮城, 5 秋田, 6 山形, 7 福島"
local n3  "8 茨城, 9 栃木, 10 群馬, 11 埼玉, 12 千葉, 13 東京, 14 神奈川"
local n4  "15 新潟, 16 富山, 17 石川, 18 福井, 19 山梨, 20 長野, 21 岐阜, 22 静岡, 23 愛知, 24 三重"
local n5  "25 滋賀, 26 京都, 27 大阪, 28 兵庫, 29 奈良, 30 和歌山"
local n6  "31 鳥取, 32 島根, 33 岡山, 34 広島, 35 山口, 36 徳島, 37 香川, 38 愛媛, 39 高知"
local n7  "40 福岡, 41 佐賀, 42 長崎, 43 熊本, 44 大分, 45 宮崎, 46 鹿児島, 47 沖縄"

twoway ///
  (scatter medi_population clinic, mcolor(blue%25) msymbol(O) msize(small)) ///
  (scatter medi_population clinic, msymbol(i) mlabel(no) mlabpos(12) mlabgap(1.5) ///
     mlabsize(small) mlabcolor(black)), ///
  legend(off) ///
  graphregion(fcolor(white) lcolor(white)) ///
  plotregion(fcolor(white) lcolor(white)) ///
  xtitle("在支診病院数") ytitle("医療費(億円)") ///
  xlabel(, format(%9.0fc)) ylabel(, format(%9.0fc)) aspect(0.7) ///
  note(`"`n1'"' `"`n2'"' `"`n3'"' `"`n4'"' `"`n5'"' `"`n6'"' `"`n7'"', ///
       pos(6) ring(0) j(left) size(vsmall))

graph export "scatter_clinic_medi_no.png", as(png) replace width(2000)
graph export "scatter_clinic_medi_no.svg", as(svg) replace
restore

display as result "scatter_clinic_medi_no.(png|svg) を出力しました。"

Stataで相関係数の表をつくる(画面表示・p値・Excel出力・記号付き)

変数例:medi_population care clinic homedeath nursingdeath age income(必要に応じて置き換え)

目次

  1. まずは画面で相関係数を確認(最小)
  2. listwise(完全観測のみ)で相関行列を取得
  3. p値行列を作る(両側検定)
  4. 下三角だけの表に整形(上三角空欄)
  5. Excelに書き出す(相関・p値)
  6. 記号(*, **, ***)付きの表
    1. 記号だけの表(文字)
    2. 値+記号(セルは数値のまま)
  7. 4シートを1つのExcelにまとめる
  8. トラブル対処集

1) まずは画面で相関係数を確認(最小)

pairwise(ペアごとに欠損処理)で手早く確認:

pwcorr medi_population care clinic homedeath nursingdeath age income

p値も見たいとき:

pwcorr medi_population care clinic homedeath nursingdeath age income, sig
メモ: pwcorr は見た目に便利ですが、行列として返るのは相関 r(rho) のみ。p値を行列処理したい場合は correlate を使います。

2) listwise(完全観測のみ)で相関行列を取得

correlate medi_population care clinic homedeath nursingdeath age income
matrix R = r(C)   // 相関行列
scalar  NN = r(N) // 使用観測数(全ペア共通)
matrix list R

3) p値行列を作る(両側検定)

帰無仮説 H0: ρ = 0、t統計量 t = r * sqrt((N-2)/(1-r^2))、p値 p = 2*ttail(N-2, |t|)

local n = rowsof(R)
matrix P = J(`n', `n', .)

forvalues i = 1/`n' {
    forvalues j = 1/`n' {
        scalar r_ij = R[`i',`j']
        if (`i'==`j') {
            matrix P[`i',`j'] = 0
        }
        else if (!missing(r_ij) & NN>2 & abs(r_ij)<1) {
            scalar t_ij = r_ij*sqrt((NN-2)/(1-r_ij^2))
            matrix P[`i',`j'] = 2*ttail(NN-2, abs(t_ij))
        }
    }
}
matrix list P

4) 下三角だけの表に整形(上三角空欄)

// 相関R:上三角を欠損、対角を1
local n = rowsof(R)
forvalues i = 1/`n' {
    forvalues j = 1/`n' {
        if (`j' > `i')  matrix R[`i',`j'] = .
        if (`j' == `i') matrix R[`i',`j'] = 1
    }
}

// p値P:上三角を欠損、対角を0
forvalues i = 1/`n' {
    forvalues j = 1/`n' {
        if (`j' > `i')  matrix P[`i',`j'] = .
        if (`j' == `i') matrix P[`i',`j'] = 0
    }
}

5) Excelに書き出す(相関・p値)

// ラベル(変数名)を付与
local names : colnames R
matrix rownames R = `names'
matrix colnames R = `names'
matrix rownames P = `names'
matrix colnames P = `names'

// 相関(corr_lower)
putexcel set "correlation.xlsx", sheet("corr_lower") replace
putexcel A1 = matrix(R), names nformat(number_d3)

// p値(pval_lower)
putexcel set "pvalues.xlsx", sheet("pval_lower") replace
putexcel A1 = matrix(P), names nformat(number_d4)
注意: Excelを開いたままだと書き込めません。保存・閉じてから実行してください。

6) 記号(*, **, ***)付きの表

6-1. 記号だけの表(文字)

putexcel set "corr_stars.xlsx", sheet("stars_lower") replace

// 見出し(A1空欄、B1〜列名、A2〜行名)
putexcel A1 = ("")
local j = 1
foreach v of local names {
    putexcel `=char(65+`j')'1 = ("`v'")
    local ++j
}
local i = 1
foreach r of local names {
    putexcel A`= `i'+1' = ("`r'")
    local ++i
}

// 本体(下三角のみ)
local n = rowsof(P)
forvalues i = 1/`n' {
    forvalues j = 1/`n' {
        if (`j' < `i') {
            scalar pv = P[`i',`j']
            local star ""
            if !missing(pv) {
                if      (pv < 0.01) local star "***"
                else if (pv < 0.05) local star "**"
                else if (pv < 0.10) local star "*"
            }
            putexcel `=char(65+`j')'`= `i'+1' = ("`star'")
        }
    }
}

6-2. 値+記号(セルは数値のまま/“stored as text”回避)

// 小数桁(例:3)
local DEC 3
local basefmt "0"
if `DEC' > 0 {
    local basefmt "`basefmt'."
    forvalues k = 1/`DEC' {
        local basefmt "`basefmt'0"   // 例: 0.000
    }
}
// Excelのカスタム数値書式(\* で * をリテラル表示)
local FMT0 "`basefmt'"
local FMT1 "`basefmt'\*"
local FMT2 "`basefmt'\*\*"
local FMT3 "`basefmt'\*\*\*"

putexcel set "corr_values_stars.xlsx", sheet("values_stars_lower") replace

// 見出し
putexcel A1 = ("")
local j = 1
foreach v of local names {
    putexcel `=char(65+`j')'1 = ("`v'")
    local ++j
}
local i = 1
foreach r of local names {
    putexcel A`= `i'+1' = ("`r'")
    local ++i
}

// 本体(下三角のみ;対角は1、上三角は空欄)
local n = rowsof(R)
forvalues i = 1/`n' {
    forvalues j = 1/`n' {
        if (`j' < `i') {
            scalar rval = R[`i',`j']
            scalar pval = P[`i',`j']
            local fmt "`FMT0'"
            if !missing(pval) {
                if      (pval < 0.01) local fmt "`FMT3'"
                else if (pval < 0.05) local fmt "`FMT2'"
                else if (pval < 0.10) local fmt "`FMT1'"
            }
            putexcel `=char(65+`j')'`= `i'+1' = (rval), nformat("`fmt'")
        }
        else if (`j' == `i') {
            putexcel `=char(65+`j')'`= `i'+1' = (1), nformat("`FMT0'")
        }
    }
}

7) 4シートを1つのExcelにまとめる(レシピ)

// corr_lower / pval_lower / stars_lower / values_stars_lower を1ファイルに
// <1> correlate で R, NN を得る
// <2> R を下三角化 → corr_lower
// <3> P を計算して下三角化 → pval_lower
// <4> しきい値で *, **, *** を生成 → stars_lower(文字)
// <5> 数値セル + 表示だけ星 → values_stars_lower

トラブル対処集

Stataで記述統計量をつくる:画面表示/Excel出力/実務的Tips

変数例:medi_population care clinic homedeath nursingdeath age income(必要に応じて置き換え)

*******************************************************
* desc5_commented.do  —  記述統計(ワイド形式のみ)をExcel保存
* -----------------------------------------------------
* ・対象変数の mean / sd / cv / min / max を tabstat で計算
* ・行=変数、列=統計量 の行列に整形して Excel に出力
* ・ファイル名は「ファイル名_YYYYMMDDHHMMSS.xlsx」(常にユニーク)
* ・ロング形式は出力しません
* ・必要な編集箇所は「PARAMETERS」ブロックのみ
*******************************************************

* =============== [OPTIONAL] データ読込の例 ===============
* use "YOUR_DATA.dta", clear
* あるいは
* import delimited "YOUR_DATA.csv", varnames(1) clear
* ========================================================


* ===================== PARAMETERS =======================
* 1) 記述統計の対象変数(カンマ無しのリスト)
local VARS "medi_population care Medical_care_inpatient_p Inpatient_living_p Reimbursements_etc_p clinic homedeath nursingdeath age income"

* 2) 出したい統計量(cv を外したい場合は cv を消すだけ)
local STATS "mean sd cv min max"
* 例:cv を外す -> local STATS "mean sd min max"

* 3) Excelファイル名の先頭(自由に変更可)
local FILE_PREFIX "ファイル名"

* 4) 書き出すシート名(自由に変更可)
local SHEET "desc"
* ========================================================


* ---------------- 記述統計(tabstat) -------------------
* columns(statistics) で列=統計量、行=変数の並びになる
tabstat `VARS', statistics(`STATS') columns(statistics) save

* tabstat の結果(r(StatTotal))を行列HYに整形
matrix HY = r(StatTotal)'                 // 転置して「行=変数」に
matrix colnames HY = `STATS'              // 列名を統計量に
matrix rownames HY = `VARS'               // 行名を変数名に


* ----------- 出力ファイル名:タイムスタンプ -------------
* ・YYYYMMDDHHMMSS 形式の連結(空白や記号が入らない安全な形式)
local STAMP = string(date(c(current_date),"DMY"), "%tdCCYYNNDD") + ///
              string(clock(c(current_time),"hms"), "%tcHHNNSS")

* 完全なファイル名を作成
local FNAME = "`FILE_PREFIX'_" + "`STAMP'" + ".xlsx"


* --------------- Excel へワイド形式で出力 ---------------
* ・putexcel で行列HYをそのまま書き出し
* ・nformat("0.000") は Excel 純正の数値書式(互換性〇)
putexcel set "`FNAME'", sheet("`SHEET'") replace
putexcel A1 = matrix(HY), names nformat("0.000")

display as result "Saved: `FNAME'  (sheet: `SHEET')"

/***
-----------------------------------------------------------
[参考] export excel を使う堅牢版(必要に応じて使用)
・HY を一旦データ化してから export excel を使う方法
・フォーマットはExcel側で設定(ここでは設定しない)
-----------------------------------------------------------
preserve
    clear
    svmat double HY, names(col)     // HY をデータ化(列=統計量)

    * 行名(変数名)を列に復元
    gen str60 var = ""
    local i = 1
    local rnames : rownames HY
    foreach r of local rnames {
        replace var = "`r'" in `i'
        local ++i
    }
    order var

    export excel using "`FNAME'", sheet("`SHEET'") firstrow(variables) replace
restore
***/

*******************************************************
* ヒント
* ・統計量の種類は STATS で切替(cv を抜きたい時は STATS から削除)
* ・SHEET 名や FILE_PREFIX も自由に変更可能
* ・値の丸めはExcel側の表示形式でも調整できます(#,##0.000 など)
*******************************************************

















excelで出席を集計する方法

 エクセルで次のコマンドを入力する.

=IF(ISNA(VLOOKUP($B2,shusseki_1,1,FALSE)),"",1)
  1. このIFは,IF(●,■,▲)のとき条件●が真ならば■,偽ならば▲を与えるコマンドます.
  2. このISNAは,ISNA(●)のとき●がエラー値(#N/A)ならば TRUEを与え,エラー値以外ならば FALSE を与えます.ISNAは「is na」で,naは「not applicable」です.
  3. このVLOOKUPは,VLOOKUP(●,■,▲,◆)のときデータ●を範囲■の中に探して列番号▲に検索の方◆を与えます.
  4. VLOOKUPの●ですが,ここでB列に学生番号のリストがあります.B1は列のリスト名「学生番号」ですからB2から始まります.
  5. VLOOKUPの■ですが,別のシートにカートリーダーで取り込んだ出席した学生の学生番号のリストの名前「shusseki_1」があります.
  6. 学生番号を範囲指定して,右クリックするとメニューの下の方に「名前の定義」があり,それを用いてリストの前を付けます.
  7. 第1回目の出席ならば shusseki_1 ですが,第2回目は _2 などとする.予めコピーしておく.
  8. VLOOKUPの▲ですが,ここでは指定した場所の第1列目にある数値を与えます.
  9. VLOOKUPの◆ですが,検索の型◆がFALSEのときは範囲■に数値がないときはエラーを与えます.
  10. 学生番号があればVLOOKUPで学生番号を与えます
  11. 学生番号がなければ #N/A を与えます
  12. ISNAによって学生番号がないときにTRUEになり,学生番号があればFALSEになります
  13. IFによって,TRUE(学生番号がないと)ならば空白,FALSE(学生番号があれば)ならば1を与えます

LaTeXで図を簡単に書く方法

LaTeX文章に図を書き入れるときははWinTpicが便利です. 丹野の論文中にある図のほとんどはWinTpicで作成されています. 例えば,最近の論文の図を見ると TeX の数式になっていて良いですね. 画面で見ると汚いですが,印刷はちゃんとしています. その使い方とダウンロードについては,例えば,WinTpicによる描画・目次等を見て下さい.

TeXでOHPシートの作り方

OHP用のLaTeXマクロとして SLITex や slides クラスが有名ですが, 一部のコマンドが使えなかったりフォントが制限されたりします. それに TeX ではもちろん使えない. かといってOHP用の大きなフォントを自分で metafont で作るのは面倒臭い. それで,myzsize.texというマクロを用います. 最初はMETAFONTが起動してたくさんのフォントが作られて驚きますが,サイズが決まりすべてのフォントが揃えた後はMETAFONTは起動されなくなります. \input でインクルードして \mysize にポイント数を入れるだけです. フォントを生成してしまえばそれはTeXでも使えます. サンプルとしてIMGTAでのOHP東大でのOHPを挙げておきます. 日本語フォントももちろん生成できます. 図は始めに紹介した WinTpic で作りました.

dviファイルをpdfファイルに変換する方法

Acrobatがインストールされていることを前提とします. dvipskでpostscriptファイルに変換して distiller で pdf 形式にします. TeX形式のファイルをコンパイルしてできた foo.dvi に対して,

dvipsk -P dl -z foo.dvi

そして foo.ps という ps ファイルを生成します. その後,ファイルをクリックするかdistiller のアイコンにファイルを載せるとpdfファイルができ上がります.

LaTeXで表を簡単に作る方法

LaTeXで表を tabular 環境で作のは面倒臭いし,空白が多いとついつい & を余分に入力したり入れ忘れたりします. 簡単に表を制作する方法として

  1. Excel2LaTeX
  2. Visual Tabular
  3. 椿 -list editor-

を用いる方法があります. Excel2LaTeXは Excel の表を tabular 環境に出力するソフトです. Excelはあまり使いたくないので,Excelから csv 形式にセーブしてからcsv エディタを用いています. csv エディタとしてはListPadを用いていましたが,最近はHTML形式やtabular形式に 変換できる椿に乗り換えました. Visual Tabularは罫線の位置も指定することができるし,HTML形式にも落とすことができるのでとても便利です. ちょっとした表を作成するときはLaTeX形式でもHTML形式でもVisual Tabularを用いています.

Excel のグラフを TeX 形式のファイルに載せる方法

Acrobatがインストールされていることを前提とします. Excelのグラフを eps 形式に変換してdvioutの hypertex と Ghostscript を利用して表示と印刷をします. Excelのグラフを[印刷]でプリンターを distiller にしてファイル形式をEPSにするだけですが,ちょっとした工夫が必要です. マクロ経済学の講義ノート(1)にあるグラフはこのようにして LaTeX に取り込みました. 詳しくは,ExcelのグラフをEPSファイルにする方法を参考にして下さい.

また,次の方法でgifファイルにした後 Linux で netpbm を用いてEPSを作ることもできますが,Windowsベースの人はこちらの方が早いでしょう.

Excel のグラフを HTML 形式のファイルに載せる方法

Excelのグラフを gif 形式の画像に変換してimgタグでHTML形式のファイルに読み込ませます.

  1. wordを立ち上げておく.
  2. Excelのグラフをコピーする.
  3. word の画面にペーストする.
  4. そのファイルを HTML document 形式で保存する.(ファイル名は何でもよい.)
  5. そうすると Image1.gif 等というファイル名でwordがグラフ をgifファイルに変換してくれる.
  6. <IMG SRC="Image1.gif">と自分の望んだHTML文章にグラフを貼り付ける.

経済数学の試験の講評にある点数の度数分布はこのようにして HTML ファイルに取り込みました.

TeXの起動

以前 TeX や LaTeX のコンパイルは卓駆★というファイラーからコマンドを登録して行っていましたが, LaTeXフロントエンドが便利でこれを使っています. 2回目の起動は左クリック2回で一発ですし,違う tex ファイルをドラッグ&ドロップで実行することもできます. 他のTeX関係のソフトはYahooのYahoo!コンピュータ - フリーソフト&シェアウェアを参考にして下さい.

LaTeXで左右のマージン

LaTeXでは左と上に1インチ=2.54cmのマージンが自動的に入ります. それを見越して左右のマージンを調整して本文を中心に置かなければなりません. そのためには,xを左右のマージン,yを本文の幅としたときに, y+2 x=15.92cmになるようにすると本文が上手く収まります. 計算式は下を見てください.

\setlength{\textwidth}{13.90cm}
\setlength{\oddsidemargin}{1.01cm}
\setlength{\evensidemargin}{1.01cm}
% A4 横21cm  (  29.7 cm × 21.0 cm )
% 1インチ=2.54cm 
% 2.54cm +margin x + width y + x + 2.54 cm =21.00 
% y+2x=15.92 (*)

LaTeXで色を表示

講義のレジメをHTMLで書いていたときはたくさんの色を用いていましたが,LaTeX → pdf に移行してから「色が無い」という意見が出ました. それでLaTeXで色を表示することについて書いてみます. 話は簡単で,プリアンブルに

\usepackage[dvips]{color}
\usepackage{graphicx}

と書いて「赤い色」を赤くしたければ,本文中に

\textcolor{red}{赤い色}

と書くだけです. けれども,一々 \textcolor と書くのは面倒だし白黒プリンターだと赤が出ません. (実はカラープリンターを持っていません.^^;) ですから強調したい文字を太文字にしておきたいです. そこで \red という命令を新たに作っています.

\def\red#1{\textcolor{red}{\bf #1}}              % 赤

これですと\red{赤い時}で赤の太文字になり白黒プリンターでも確認ができます. 例えばミクロ経済学の基礎の1ページ目のようになります.

LaTeXでテストの問題番号を自動化

テストで何問か出題するときに問題番号を自動的に割り振ってくれるととても便利です. 特に問題を作成しているときに問題が何問あるのかを確認したり,問題の順序を変えるたびに番号を一々書き換える面倒な作業を省略できます. このミクロの問題のように小問には大問の番号をつけてアルファベット順に並べましょう. 作成するコマンドは \mondai と \shomon です. プリアンブルに次のコマンドを書くと出来上がります.

\newcounter{mondai}                                       % 問題カウンター
\def\mondai{\refstepcounter{mondai}                       % 問題
  \hspace{0zw}\makebox[2zw][r]{\fbox{\bf\large            %
  \arabic{mondai}}\hspace{1zw}}}                          %
\newcounter{shomon}[mondai]                               % 小問カウンター
\def\shomon{\refstepcounter{shomon}                       % 小問
    \makebox[1zw][r]{\fbox{\arabic{mondai}\Alph{shomon}}} %
    \hspace{0.5zw}                                        %
    \hangindent=2zw \hangafter=-3}                        %

ここでの工夫は小問の場合はインデントを深くしていることです. TeXのコマンド \hangindent でインデントを通常の倍 2zw にして, \hangafter で先頭から3行目までをインデントさせています. 小問が4行以上の場合はこの絶対値を増やします. (マイナスに注意.) もしくは,もっと多めに取っておけば良いでしょう. そうすると小問は大問に比べて引っ込んだところに位置することができます.

Windowsのショートカットキー

Windowsではショートカットキーがある程度共通化されているので覚えておくと便利です. 丹野はVZエディターのキーバインディングになれているので,以前はまったく使ってませんでしたが慣れると便利です. あんまり多いと忘れるのでIEを中心にいつも使っているキー+アルファを書いておきます. マウス操作の貼り付けで置換はおおにしさんから教えてもらいましたが,これは本当に目から鱗で感激しました.

  • [Ctrl]+[c]コピー.
  • [Ctrl]+[f]で検索.
  • [Ctrl]+[v]でペースト.
  • [Ctrl]+[x]でカット.
  • [Ctrl]+[n]で新しいウィンドウを開ける.
  • [Ctrl]+[w]でウィンドウを閉じる.
  • [Ctrl]+[a]ですべて選択.
  • [Ctrl]+[Alt]+[Delete]でタスクマネージャの起動.
  • [Alt]+[Tab]でタスクスイッチ.[Tab]を更に押すとタスクの移動.
  • [Alt]+[Esc]では押す度に最前の画面が移動する.
  • [Windows]+[m]で全ウィンドウの最小化.+[Shift]で復活.
  • [BackSpace]で履歴の後へ戻る.
  • [Home]で文書の先頭へ,[End]で末尾へ移動.
  • [Alt]+メニューのカッコ内の文字でその動作が行われる.
  • [Alt]+[F4]でアプリケーションの終了.
  • [Alt]+[Space]でサイズの変更.
  • [Ctrl]+[Esc]でスタートメニューが開く.

マウス操作

  • 選択状態で右クリック→[貼り付け]でクリップボードの中身と置換できる.
  • アイコンを[Ctrl]を押しながら選択すると個別に,[Shift]を押しながら選択するとまとめてアイコンを選択状態に.
  • URLを[お気に入り]にいれるにはアドレスにあるURLのアイコンを[お気に入り]にドラッグしていくと[お気に入りのメニュー]が表示されるのでお好みの部分にドロップすると便利です.
      ([お気に入り]→[お気に入りに追加]をクリックして行くよりも簡単です.)
  • ドラッグ中に,[Esc]でキャンセル.
  • ホイールマウスで[Shift]+上スクロールで次のページへ履歴を移動します. 反対は前のページへ.

使えるショートカットはここなどが見やすいです. しかし,これは便利だと思ってもキー操作を直ぐに忘れてしまうので代表的なショーットカットだけで十分でしょう.

LaTeXで最初のページにページ番号を入れない

論文の表紙を1頁目に書いて,ボディは2頁目以降に書くことがあります. その際にページの通し番号を2枚目以降からにして1枚目の表紙にはページ番号を入れないようにする日は,表紙のページに以下のコマンドを入れると良いです.

\thispagestyle{empty}
\setcounter{page}{0}

表紙が2ページ渡る場合は各ページで\thispagestyleを入れて,最初にページカウンターを-1にすると良いでしょう.

Geocities のページに広告を入れない

タダノブのページのミラーサイトとして無料のHPエリアGeocitiesを利用しています. しかし,ページの上に広告が出るのが玉に瑕です. 広告収入で運営されているので仕方のない面もありますが,それを標準設定で回避することができます. Geocitiesのトップページから

トップ > インフォメーションセンター > ツール > ジオガイドマネージャ > ジオガイドの調整・変更

で広告表示のオン/オフができます. 何も色んな裏ワザを駆使しなくてもいいのです. けれども,一応広告収入で運営されているので幾つかのページは広告が出るように設定しています.

Excelの図をEPSファイルにする方法

Excel のグラフを TeX 形式のファイルに載せる方法があるのですが正確に書いておかないと忘れるため新しく Excelの図をEPSファイルにする方法を作りました.

Windows 2000/XPでパスを設定する方法

昔のMS-DOSやWindows95ではautoexec.batにパスを書き込んで設定しましたが,Windows 2000やWindows XPでは初心者に分かり易いように設定がコントロールパネルでできるようになりました. 超初心者のためにパスの設定方法を書いておきます.

Windows 2000
「Windows 2000でのパスの設定」 (この池田さんのページがとても分かり易い)
Windows XP
[スタート] → [設定] →、[コントロールパネル] →[クラシック表示に切り替える] →[システム] → [詳細設定] → [環境変数] →[システム環境変数] →[PATH]という項目を表示して[編集]を選択する →セミコロン (;) で区切ってパス設定
  [クラシック表示に切り替える]がミソ. これを見つけるのにかなり時間がかかったタダノブは超初心者?

LaTeX文章の文字数を数える方法

LaTeXの文章の文字数を数える方法を紹介します. DeTexを使ってLaTeXのコマンドを除去する方法が一番簡単です. しかし,少々回りくどいのですが,DVIファイから生成されたPDFファイルをpdftextでテキストファイルへ転換して文字数を数える方法を書いておきます. pdftotextについてはnakagamiさんのPDF関連がとても親切にインストールの仕方を 教えてくれます.

$ pdftotext -enc EUC-JP hoge.pdf

そうするとhoge.txtというテキストファイルが生成されます. オプション -enc は文字のエンコーディングを指定しています. そしてText Analyzerで文字数を数えるます.テキストファイルへコンバートした時に空白ができるかもしれませんが,オプションで無視することもできるなかなかの優れものです.結局人に見せる時はPDF化するわけですし,自分で作ったマクロがある人や原稿をテキストファイルで出して欲しいと編集者に言われた場合は結局はこちらの方が早いようです.


トップへ. ホームへ. ご意見, ご感想などはemailでお気軽にどうぞ.
丹野忠晋 [タダノブ]. 最終更新 2004/10/26.