質問用フォーラムです。ご質問の前に質問のしかたをご覧ください。

改訂第7版LaTeX2e美文書作成入門

- 藤井 深 の投稿
皆様、こんにちは、藤井深です。

いつもお世話になります。

改訂第7版LaTeX2e美文書作成入門の最後の頁に、「お願い」があり、「FAXまたは封書で問い合わせて下さい」と、ありました。

私は、このフォーラムを時々ではありますが、利用させて頂き、親切な回答を頂いたりしてきましたので、また、皆さん、ネット環境にあると思いますので、FAXまたは封書で問い合わせて下さい」という「お願い」には、少々違和感を感じました。

このフォーラムで質問するよう記載してあげると仲間が増えて良かったんじゃないかと、残念に思いました。

デジタル化されていない問い合わせに対して、編集部の方々も、苦労するな、と、思いました。

それでは、失礼します。

2018年10月5日(金)午前5時28分:藤井深

macOS High Sierra においてヒラギノフォントを使う

- いへうよ きどか の投稿
Latex2εを購入し,macOS High Sierra ver.10.13.6にインストールしたのですが,ヒラギノフォントが使用できません.

kanji-config-updmap statusをターミナルで入力すると

Cannot find ptex-fontmaps-macos-data.dat, skipping!

CURRENT family for ja: ipaex

Standby family : ipa」

と表示されます.また,kanji-config-updmap-sys hiraginoを入力すると,

「Cannot find ptex-fontmaps-macos-data.dat, skipping!

hiragino not available, falling back to auto!

CURRENT family for ja: ipaex

Standby family : ipa

Setting up ... ptex-ipaex.map

updmap will read the following updmap.cfg files (in precedence order):

/usr/local/texlive/2018/texmf-config/web2c/updmap.cfg

/usr/local/texlive/2018/texmf-dist/web2c/updmap.cfg

updmap may write changes to the following updmap.cfg file:

/usr/local/texlive/2018/texmf-config/web2c/updmap.cfg

updmap: Directory "/usr/local/texlive/2018/texmf-var/fonts/map/dvips/updmap" isn't writable: at /Library/TeX/texbin/updmap line 1449.」と表示されます.

対処法を教えて頂けないでしょうか?


texmakerでbeamerが使えない

- 伊柳 友貴 の投稿
いつもお世話になっております。

今回、texmaker の設定が終わりBeamer を使って、試しに以下のスライドを実行したところエラーが発生しました。

\documentclass{beamer}
\begin{document}
\begin{frame}
Hello!
\end{frame}
\end{document}

Error line2 undifined control sequence.

beamerに必要なパッケージはダウンロードしたつもりですが、保存先の指定が不十分なのでしょうか。 どのように保存すれば正常に動くようになるよでしょうか。エラーの原因を特定できません。

ダウンロードしたファイルは

latex-Beamer-3.07.tar.gz
pgf-2.01.tar.gz
xcolor211.cab

の三つです。

索引で%や&などの文字を表示させるには

- yoko kai の投稿
mendexやmakeindexを使って索引を作るとき、
索引にしたい言葉が、通常は表示されない%や&などで始まる場合、
例えば「&&演算子」を索引に載せたいとき、
\index{&&えんざんし@&&演算子}
とすると、(当然)表示されず、
そのまま表示させる\verb|・|で囲んで
\index{\verb|&&|えんざんし@\verb|&&|演算子}
のようにしても表示されません。
半角はあきらめて全角で&&とすることも考えましたが、
奥村先生の『美文書作成入門』では綺麗に半角ででてますので、
諦めきれず、ここに質問した次第です。
『改訂第6版』でインストールしたものを使っています(アップデートしたかも)。
これはエラーとかではなく、やり方の質問なので、
ここに寄せるのはお門違いかとも思ったのですが、
思ったように情報を見つけることができなかったので、質問しました。
よろしくお願いしますm( _ _)m

ベクトル表現等の作成について

- Yagi Bei の投稿
[改訂第6版]LaTeX2e美文書作成入門の付録DVD-ROMよりlatexをダウンロードしました(Windows 10)。以下について教えていただければ幸いです。

*かっこの中に縦に数字を入れる方法

以下のURLにあげた図が作れません。
https://github.com/YagiBei/Others/blob/master/photos/photo.jpg
お分かりになる方、教えていただければ幸いです。

また、以下の問題も抱えているため、お分かりになる方いらっしゃいましたら、教えていただければ、と思います。貴重なお時間を頂き恐縮ですが、よろしくお願い致します。

*連立方程式の表示位置について

\documentclass{jsarticle}
\begin{document}

% 連立方程式 始まり

$$

\left\{</p> <p style="margin:0px;">\begin{tabular}{l}

$420=143 \times 2+134$,,,(1) \\

$143=134 \times 1+9$,,,(2) \\

$420=143 \times 14+8$,,,(3) \\

$420=143 \times 1+1$,,,(4) \\

\end{tabular}

\right.

$$

% 連立方程式 終わり

\end{document}


以上のように組む場合、ページの中央に連立方程式が表示されます。

これを、ページの左端に表示させることはできないでしょうか。

自作マクロがうまく動きません

- ぺけぽん の投稿
こんにちは。
お世話になります。

今,TeXのマクロを勉強していまして,以下のようなものを作ってみました。
やりたいことは,長さのカウンタを1ptずつ増やしながらruleで階段状の塗りつぶした四角形を描くことです。(実用性はありません。あくまでも勉強用です。)
しかし,うまく動かず,2つの疑問点が生じました。疑問点は下の方に書きます。
まず,作成したマクロを示します。

プリアンブル部で

\makeatletter
\def\foo#1{%
\@tempdima=\z@
\loop
\advance\@tempdima 1pt
\rule{1zw}{\@tempdima}%
\ifdim\@tempdima<#1\relax
\repeat
}
\makeatother

としておいて,本文中で

\foo{1zh}

とすると,

「....(空白,幅は確保されているっぽい)...」

となってしまい,マクロが有効に機能していません。

疑問点は以下のとおりです。

(疑問点1)塗りつぶした四角形が表示されず,空白となってしまいます。

(疑問点2)\rule部分の挙動を確認しようとして,\fboxを使って確認しようとしました。すると,無限ループっぽい状態になり,「! TeX capacity exceeded, sorry [main memory size=5000000]」で落ちます。具体的には\ruleの部分を「\fbox{\rule{1zw}{\@tempdima}}」と変更すると,うまくいきません。

たぶん,勘違いなどがあるために動かないと思うのですが,ご教示いただけますと幸いです。

graphicxのincludegraphicsのpdf取り込みについて

- J S の投稿
はじめまして。
『[改訂第6版] LaTeX2e 美文書作成入門』第3刷の DVD-ROM のデータをWindows 10 Proに導入してTeXを利用している者です。

現在platex(ptex2pdf)で論文を書いておりまして、その際Stataで作成した図をpdf化し、graphicxパッケージの\includegraphicsで挿入したいのですが、コンパイルはできるものの出力されるpdfファイルにはキャプションのみで図が表示されません。
どのようにすれば表示できるかご教示いただければ幸いです。

以下、同様の問題が発生するように作ったダミーコマンドです。
\documentclass[12pt]{jsarticle}

\usepackage{url, amsmath, bm}

\usepackage[dvipdfmx]{graphicx}

\usepackage[dvipdfmx]{color}

\usepackage{natbib}

\title{ほげほげ}

\author{ほげほげ}


\begin{document}

\begin{figure}[H]

\caption{ほげほげ}

\label{fig:hoge}

\centerline{\includegraphics[width=0.5\textwidth]{hoge.pdf}}

\end{figure}

\end{document}

Powerdotのトラブル

- Yusuke の投稿
先日、MacBookAirが立ち上がらなくなり、やむなく
MacBook Pro(Mac OS High Sierra, 10.13.6)を購入しました。

そこで、

http://doratex.hatenablog.jp/entry/20180501/1525144736

に従って、MacTeX 2018 をインストールし、
Powerdotを使う必要がありましたので、

http://adragoona.hatenablog.com/entry/2014/10/20/214022

に従って、powerdotを使えるようにしたのですが、そこでトラブル
が発生し、困っております。

フォント周りのトラブルはなんとか解決し、コンパイルは
できるのですが、出来上がったpdfファイルが4 in 1(というのでしょうか?)
のようなかたちになってしまい、困っております。

どのような設定をすれば、通常のような表示になるのか、
教えていただけないでしょうか。
(サンプルファイルを添付します。ソースファイルと
pdfファイルの両方をまとめて圧縮し、sample_2.zipとしています)

いろいろ調べたのですが、どうにも解決できず、ここで質問
する次第です。

お手数をおかけしますが、よろしくお願い申し上げます。


TeXWorksを用いてpLaTeXにpdfの画像を貼りpdfに変換しようとしたがerrorが発生した。

- 伊藤 啓 の投稿
TeX Live 2018 の ネットワークインストーラーから Windows 7 Home 64-bit にインストールして pdfの画像を貼りpdfに変換しようとしたところ、

LaTeX Warning: File `graph.pdf' not found on input line 18.



! LaTeX Error: Cannot determine size of graphic in graph.xbb (no BoundingBox).


See the LaTeX manual or LaTeX Companion for explanation.

Type H <return> for immediate help.

...

 

l.18 \includegraphics[width=7.0cm]{graph.pdf}

 

?

とerrorが出て変換することが出来なくなってしまっている。対処法をご教授願いたく思っております。よろしくお願いいたします。

upBibTeXが特定の方法でsubstringを使うとフリーズする

- さかい たかし の投稿
私が確認に使った環境は
macOS 10.13.6上に
HomebrewでインストールしたTeXLive 2018のupbibtex
upBibTeX 0.99d-j0.33-u1.23 (utf8.uptex) (TeX Live 2018)
および、同じコンピュータ上で
texlive-20180414-source.tar.xzをビルドしたものに含まれるupbibtex
(バージョン同じ)
です。

重複がないかどうかは確認したつもりですが、報告済み・修正済みでしたら申し訳ありません。
(少なくとも1.23で修正された問題とは別であるはずです。)

upBibTeXのスタイルファイル(.bst)において、
特定の文字列に対して特定のパラメータでsubstring$を呼び出し、
その結果に対して別の特定のパラメータでsubstring$を呼び出すと、
結果が文字化けします。
さらにその結果にまた別のパラメータでsubstring$を呼び出すと、
upBibTeXがフリーズします。

特定の文字列・パラメータを具体的にいうと、
(何らかの文字)(半角文字)(全角文字)
という文字列(実用的(?)な例でいうと「第1回」)と、
それを左から1文字ずつ切り落とす操作を行うパラメータ
(例えば
"第1回" #4 #200 substring$ #2 #200 substring$
)です。
(途中の値を変数においても再現するため、文字を数えるなどの処理を書くときに困ります。)
例としてaux, bib, bstの3ファイルを示します。

% a.aux
\bibstyle{a}
\bibdata{./a}
\citation{a}

% a.bib
@a{a,}

% a.bst
ENTRY{}{}{}
FUNCTION {a}{}

READ

STRINGS{t}

FUNCTION {begin.bib}
{
"11あ" #2 #200 substring$ #2 #200 substring$ warning$
"11あ" #2 #200 substring$ #2 #200 substring$ #4 #200 substring$ warning$
}
EXECUTE {begin.bib}

%%%%%%%%%%

ここで、1つ目の行の出力は文字化けしますが、
FUNCTION {begin.bib}
{
"11あ" #2 #200 substring$ #2 #200 substring$ write$ newline$
}
などと書き換えてバイナリエディタで確認すると、出力内容が
e3 81 81 82
であることがわかります。
UTF-8で「あ」は
e3 81 82ですから、2バイト目が2回出力されているようです。

そして、pTeX Liveのビルド途中で生成されるC言語のソースファイルをprintfデバッグした結果、
次の動作を確認しました。

(0)
str_pool[]: 文字列プール(スタック)
pool_ptr: ↑のトップ
str_start[]: 文字列プール内の各文字列の開始位置を表す配列
str_ptr: ↑のトップ
multibytelen(first_byte):
first_byteがシングルバイト文字であれば1を返す
first_byteがマルチバイト文字の1バイト目であればその文字のバイト数を返す
first_byteがマルチバイト文字の2バイト目以降であれば-2を返す
そのほかの場合-1を返す
前のsubstring$の結果をそのまま渡すと、
その値がstr_poolのトップに来る。

(1) substring$の冒頭で引数を取り出す。
最初の引数は文字列であるが、このとき、次の処理が行われる。
(a). str_ptr-- (str_startをpop)
(b). pool_ptr = str_start[str_ptr](str_poolにstr_startのトップを代入)

(2) 計算する。
sp_ptr: 指定されたsubstringのstr_poolにおける開始バイト
sp_end: 指定されたsubstringのstr_poolにおける終了バイト+1

(3) substring$の最後で出力の文字列を一文字ずつ書き込む。
書き込みのアルゴリズムは以下の通り
while (sp_ptr < sp_end)
str_pool[pool_ptr++] = str_pool[sp_ptr];
if multibytelen(str_pool[sp_ptr]) > 1 then
str_pool[pool_ptr++] = str_pool[sp_ptr+1];
if multibytelen(str_pool[sp_ptr]) > 2 then
str_pool[pool_ptr++] = str_pool[sp_ptr+2];
if multibytelen(str_pool[sp_ptr]) > 3 then
str_pool[pool_ptr++] = str_pool[sp_ptr+3];
if multibytelen(str_pool[sp_ptr]) > 0 then
sp_ptr := sp_ptr + multibytelen(str_pool[sp_ptr])

2回目のsubstring$のとき、
「前のsubstring$の結果をそのまま渡すと、
その値がstr_poolのトップに来る」ため
(3)では
□123
というデータをin placeで
123空
にすることになります。しかし、このアルゴリズムではそれができません。
まず
str_pool[pool_ptr++] = str_pool[sp_ptr];
if multibytelen(str_pool[sp_ptr]) > 1 then
str_pool[pool_ptr++] = str_pool[sp_ptr+1];
を実行するところまでは行きますが、この結果
__↓← pool_str
1223
_↑← sp_ptr
と、str_pool[sp_ptr]がマルチバイト文字の2バイト目の文字になってしまうため
if multibytelen(str_pool[sp_ptr]) > 2 then
str_pool[pool_ptr++] = str_pool[sp_ptr+2];
if multibytelen(str_pool[sp_ptr]) > 3 then
str_pool[pool_ptr++] = str_pool[sp_ptr+3];
if multibytelen(str_pool[sp_ptr]) > 0 then
sp_ptr := sp_ptr + multibytelen(str_pool[sp_ptr])
までを素通りして
else
sp_ptr := sp_ptr + 1
に行ってしまいます。すると
__↓← pool_str
1223
__↑← sp_ptr
という状況になって、結局
1223
という出力になります。

(1)と(3)のどちらかが間違っているのは確かだと思いますが、
私にはどちらが正しいか判断できませんでした。
・文字をシフトさせる処理をin placeで行うという速度低下につながるメモリ利用
・(引数の値とstr_poolのトップの値が無関係である場合があるにも関わらず)
文字列プールstr_poolのトップを削除するという乱暴な処理
などの点から(1)の方がかなり怪しいと思います。
しかし、修正が楽なのは(3)だと感じたので、試しにパッチを書いてみました。

/* ---------- */

--- a/texk/web2c/uptexdir/upbibtex.ch 2018-02-25 09:31:25.000000000 +0900
+++ b/texk/web2c/uptexdir/upbibtex.ch 2018-09-04 14:51:37.000000000 +0900
@@ -232,6 +232,21 @@
@z

@x
+@<|execute_fn|({\.{substring\$}})@>=
+procedure x_substring;
+label exit;
+var tps,tpe:pool_pointer; {temporary pointer}
+begin
+@y
+@<|execute_fn|({\.{substring\$}})@>=
+procedure x_substring;
+label exit;
+var tps,tpe:pool_pointer; {temporary pointer}
+ mblen_top:integer; {multibyte_length of the character at the top of copy source}
+begin
+@z
+
+@x
{ 2 bytes Kanji code break check }
tps:=str_start[pop_lit3];
while (tps < sp_ptr) do begin
@@ -299,14 +314,15 @@
end;
@y
append_char (str_pool[sp_ptr]);
- if multibytelen(str_pool[sp_ptr]) > 1 then
+ mblen_top := multibytelen(str_pool[sp_ptr]);
+ if mblen_top > 1 then
append_char (str_pool[sp_ptr+1]);
- if multibytelen(str_pool[sp_ptr]) > 2 then
+ if mblen_top > 2 then
append_char (str_pool[sp_ptr+2]);
- if multibytelen(str_pool[sp_ptr]) > 3 then
+ if mblen_top > 3 then
append_char (str_pool[sp_ptr+3]);
- if multibytelen(str_pool[sp_ptr]) > 0 then
- sp_ptr := sp_ptr + multibytelen(str_pool[sp_ptr])
+ if mblen_top > 0 then
+ sp_ptr := sp_ptr + mblen_top
else
incr(sp_ptr);
@z

/* ---------- */

これが適切なパッチか判断して、適切であれば修正して反映などしていただけるとありがたいと思うのですが、
これはどこに言えば良いのでしょうか。

よろしくお願いいたします。