--- /dev/null
+MAIN START
+ LAD GR1,WD
+ CALL MULT
+ LD GR1,GR0
+ LAD GR2,STR
+ CALL L2STR
+ ST GR0,LEN
+ OUT STR,LEN
+ RET
+WD DC '12 45.'
+STR DS 5
+LEN DS 1
--- /dev/null
+DTOB START
+ RPUSH
+ ADDL GR2,GR1
+ LAD GR0,0 ; 戻り値の初期化
+LP CPL GR1,GR2 ; 変換終了?
+ JZE FIN
+ LD GR4,0,GR1 ; 数字1文字の取出し
+ SUBL GR4,='0' ; 1 桁を数値に変換
+ SLL GR0,1 ; GR0を10倍してGR4を加算
+ LD GR5,GR0
+ SLL GR5,2
+ ADDL GR0,GR5
+ ADDL GR0,GR4
+ LAD GR1,1,GR1
+ JUMP LP
+FIN RPOP
+ RET
+ END
--- /dev/null
+GETWD START
+ RPUSH
+ LD GR6,GR1
+ LD GR7,GR2
+ LD GR3,=-1 ; 数字列の処理状態フラグの初期化
+ LAD GR6,-1,GR6
+LP LAD GR6,1,GR6
+ LD GR4,0,GR6 ; 1文字の取出し
+ CPL GR4,='.'
+ JZE FIN
+ CPL GR4,=' '
+ JNZ NUM
+ CALL SETWD
+ JUMP LP
+NUM LD GR3,GR3 ; 数字列の処理中?
+ JZE LP
+ LD GR3,=0 ; 次の数字列の処理開始
+ LD GR1,GR6 ; 数字列の先頭アドレスを退避
+ JUMP LP
+FIN CALL SETWD
+ LD GR2,=-1
+ ST GR2,0,GR7 ; 数値の終わりを示す印を格納
+ RPOP
+ RET
+SETWD LD GR3,GR3
+ JNZ FIN2
+ LD GR2,GR6
+ SUBL GR2,GR1
+ CALL DTOB ; 数字列を数値に変換
+ ST GR0,0,GR7
+ LD GR3,=-1 ; 数字列の処理中状態を解除
+ LAD GR7,1,GR7
+FIN2 RET
+ END
--- /dev/null
+../../casl2lib/l2str.casl
\ No newline at end of file
--- /dev/null
+MULT START
+ RPUSH
+ LAD GR2,CTBL
+ CALL GETWD
+ LD GR4,0,GR2 ; GR4 ← 被乗数
+ LD GR5,1,GR2 ; GR5 ← 乗数
+ LD GR0,=0
+ LD GR5,GR5
+LP JZE FIN
+ LD GR3,GR5
+ AND GR3,=#0001 ; 乗数の最下位ビットのチェック
+ JZE NEXT
+ ADDL GR0,GR4
+NEXT SLL GR4,1 ; 被乗数を1ビット左論理シフト
+ SRL GR5,1
+ JUMP LP
+FIN RPOP
+ RET
+CTBL DS 3 ; GETWD用管理テーブル
+ END
+++ /dev/null
-MAIN START
- LAD GR1,#0000 ; #0000: #1210 #0000
- LAD GR2,#000F ; #0002: #1220 #000F
- LAD GR3,#0009 ; #0004: #1230 #0009
- CALL #000B ; #0006: #8000 #000B
- RET ; #0008: #8100
- NOP ; #0009: #0000
- DC 3 ; #000A: #0003 :: 3 = #0003 = 0000000000000011
- PUSH #0000,GR6 ; #000B: #7006 #0000
- PUSH #0000,GR7 ; #000D: #7007 #0000
- LD GR6,GR1 ; #000F: #1461
- LD GR7,GR2 ; #0010: #1472
- LD GR1,#0032 ; #0011: #1010 #0032
- LD GR2,#0033 ; #0013: #1020 #0033
- LD GR4,GR6 ; #0015: #1446
- LD GR5,GR7 ; #0016: #1457
- ADDL GR2,#0034 ; #0017: #2220 #0034
- JOV #001D ; #0019: #6600 #001D
- JUMP #001F ; #001B: #6400 #001F
- ADDL GR1,#0035 ; #001D: #2210 #0035
- SUBL GR6,#0000,GR3 ; #001F: #2363 #0000
- JOV #002F ; #0021: #6600 #002F
- SUBL GR7,#0001,GR3 ; #0023: #2373 #0001
- JOV #0029 ; #0025: #6600 #0029
- JUMP #0015 ; #0027: #6400 #0015
- SUBL GR6,#0036 ; #0029: #2360 #0036
- JOV #002F ; #002B: #6600 #002F
- JUMP #0015 ; #002D: #6400 #0015
- POP GR7 ; #002F: #7170
- POP GR6 ; #0030: #7160
- RET ; #0031: #8100
- DC 65535 ; #0032: #FFFF :: 65535 = #FFFF = 1111111111111111
- DC 65535 ; #0033: #FFFF :: 65535 = #FFFF = 1111111111111111
- DC 1 ; #0034: #0001 :: 1 = #0001 = 0000000000000001
- DC 1 ; #0035: #0001 :: 1 = #0001 = 0000000000000001
- DC 1 ; #0036: #0001 :: 1 = #0001 = 0000000000000001
- END
; 処理 ; GR1 中の'1'のビットの個数を求める
; 出力 ; GR0:GR1 中の'1'のビットの個数
PUSH 0,GR1 ;
- PUSH 0,GR2 ; Count = 0
- SUBA GR2,GR2 ; 全部のビットが'0'?
- AND GR1,GR1 ; 全部のビットが'0'なら終了
- JZE RETURN ; Count = Count + 1
-MORE LAD GR2,1,GR2 ; 最下位の'1'のビット 1 個を
- LAD GR0,-1,GR1 ; '0'に変える
- AND GR1,GR0 ; '1'のビットが残っていれば繰返し
- JNZ MORE ; GR0 = Count
-RETURN LD GR0,GR2 ;
+ PUSH 0,GR2 ;
+ SUBA GR2,GR2 ; Count = 0
+ AND GR1,GR1 ; 全部のビットが'0'?
+ JZE RETURN ; 全部のビットが'0'なら終了
+MORE LAD GR2,1,GR2 ; Count = Count + 1
+ LAD GR0,-1,GR1 ; 最下位の'1'のビット 1 個を
+ AND GR1,GR0 ; '0'に変える
+ JNZ MORE ; '1'のビットが残っていれば繰返し
+RETURN LD GR0,GR2 ; GR0 = Count
POP GR2 ;
POP GR1 ;
RET ; 呼出しプログラムへ戻る
+++ /dev/null
-INKSCAPE := inkscape -z
-CONVERT := convert
-
-%.png: %.svg
- $(INKSCAPE) -y 0.0 -e $@ $< >$<2png.log 2>&1
-
-%.eps: %.svg
- $(INKSCAPE) -E $@ $< >$<2eps.log 2>&1
--- /dev/null
+../images.mk
\ No newline at end of file
--- /dev/null
+*.html
+*.pdf
+*.eps
--- /dev/null
+VPATH := img
+
+CSS := ../style.css
+
+TEXITARGETS := fe_2018_04.html fe_2018_04.pdf
+
+.PHONY: all clean distclean
+
+all: $(TEXITARGETS)
+
+clean: texinfo-clean
+ $(RM) *.bak
+ $(MAKE) -C img clean
+
+distclean: clean texinfo-distclean
+ $(RM) *.d *.html *.pdf
+ $(MAKE) -C img distclean
+
+include ../texinfo_exam.mk
+
+include ../../images.mk
--- /dev/null
+\input texinfo @c -*-texinfo-*-
+@c %**start of header
+@ifnottex
+@documentlanguage ja_JP
+@end ifnottex
+@setfilename exam_fe_2018h.info
+@documentencoding UTF-8
+@settitle 基本技術情報者試験 2018年 春期 午後問題
+@firstparagraphindent insert
+@paragraphindent 0
+@ifhtml
+@exampleindent 0
+@end ifhtml
+@c %**end of header
+
+@indicateurl{https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2018h30_1/2018h30h_fe_pm_qs.pdf} P.62〜P.66より
+
+@unnumbered 問12
+次のアセンブラプログラムの説明及びプログラムを読んで,設問1~3に答えよ。
+
+@unnumberedsec 〔プログラム1の説明〕
+0~65534の整数を表す数字から成る文字列(以下,数字列という)を数値に変換する副プログラムDTOBである。
+
+(1) 文字列は,DC命令の文字定数と同じ形式で主記憶に格納される。数字列567を 格納した例を,図1に示す。
+
+@center @image{img/fig1,15cm,,,.svg}
+
+@center 図1 数字列の格納例
+
+(2) 主プログラムは,数字列が格納されている領域の先頭アドレスをGR1に,数字列の長さをGR2に設定して,DTOBを呼ぶ。DTOBは,数値に変換して得た値をGR0に格納して呼出し元に戻る。
+
+(3) 副プログラムDTOBから戻るとき,汎用レジスタGR1~GR7の内容は元に戻す。
+
+
+@unnumberedsubsec〔プログラム1〕
+
+@verbatim
+DTOB START
+ RPUSH
+ ADDL GR2,GR1
+ LAD GR0,0 ; 戻り値の初期化
+LP CPL GR1,GR2 ; 変換終了?
+ JZE FIN
+ LD GR4,0,GR1 ; 数字1文字の取出し
+ SUBL GR4,='0' ; 1 桁を数値に変換
+ SLL GR0,1 ; GR0を10倍してGR4を加算
+ LD GR5,GR0
+ ::ansbox:8:a::
+ ADDL GR0,GR5
+ ADDL GR0,GR4
+ LAD GR1,1,GR1
+ JUMP LP
+FIN RPOP
+ RET
+ END
+@end verbatim
+
+@unnumberedsec 設問1
+
+プログラム1中の::ansbox:4::に入れる正しい答えを,解答群の中から選べ。
+
+aに関する解答群
+@itemize @w{}
+
+@item
+ア @code{ADDL GR5,GR4}
+
+@item
+イ @code{SLL GR4,1}
+
+@item
+ウ @code{SLL GR4,2}
+
+@item
+エ @code{SLL GR5,1}
+
+@item
+オ @code{SLL GR5,2}
+@end itemize
+
+@unnumberedsec 設問2
+
+文字列の先頭から数字列を探索し,順に,対応する数値を管理テーブルに格納する副プログラムGETWDを,DTOBを使用して作成した。プログラム2中の::ansbox:4::に入れる正しい答えを,解答群の中から選べ。
+
+
+@unnumberedsubsec 〔プログラム2の説明〕
+
+(1) 文字列は,一つ以上の空白文字で区切られた任意の個数の数字列を含み,最後はピリオドで終わる。最後の数字列とピリオドの間,又は文字列の先頭に一つ以上の空白文字があってもよい。文字列の例を,図2に示す。
+
+
+@center @image{img/fig2,15cm,,,.svg}
+
+@center 図2 文字列の例
+
+(2) 管理テーブルには,文字列中に数字列が現れるごとに,順に1 語から成る要素を追加し,数字列を数値に変換して得た値を格納する。数字列の探索が終了したとき,管理テーブルの最後に1 語から成る要素を追加し,数値の終わりを示す印として-1を格納する。図2の文字列をGETWDで処理して得た管理テーブルを,図3に示す。
+
+@center @image{img/fig3,15cm,,,.svg}
+
+@center 図3 GETWDで処理して得た管理テーブル
+
+(3) 主プログラムは,文字列が格納されている領域の先頭アドレスをGR1に,管理テーブルの先頭アドレスをGR2に設定して,GETWDを呼ぶ。
+
+(4) 副プログラムGETWDから戻るとき,汎用レジスタGR1~GR7の内容は元に戻す。
+
+@unnumberedsubsec 〔プログラム2〕
+
+@verbatim
+GETWD START
+ RPUSH
+ LD GR6,GR1
+ LD GR7,GR2
+ LD GR3,=-1 ; 数字列の処理状態フラグの初期化
+ LAD GR6,-1,GR6
+LP LAD GR6,1,GR6
+ LD GR4,0,GR6 ; 1文字の取出し
+ CPL GR4,='.'
+ JZE FIN
+ CPL GR4,=' '
+ ::ansbox:8:b::
+ CALL SETWD
+ JUMP LP
+NUM LD GR3,GR3 ; 数字列の処理中?
+ JZE LP
+ LD GR3,=0 ; 次の数字列の処理開始
+ LD GR1,GR6 ; 数字列の先頭アドレスを退避
+ JUMP LP
+FIN CALL SETWD
+ LD GR2,=-1
+ ST GR2,0,GR7 ; 数値の終わりを示す印を格納
+ RPOP
+ RET
+SETWD LD GR3,GR3
+ ::ansbox:8:c::
+ LD GR2,GR6
+ SUBL GR2,GR1
+ CALL DTOB ; 数字列を数値に変換
+ ST GR0,0,GR7
+ LD GR3,=-1 ; 数字列の処理中状態を解除
+ ::ansbox:8:d::
+FIN2 RET
+ END
+@end verbatim
+
+
+bに関する解答群
+@itemize @w{}
+
+@item
+ア @code{JNZ FIN}
+
+@item
+イ @code{JNZ LP}
+
+@item
+ウ @code{JNZ NUM}
+
+@item
+エ @code{JZE FIN}
+
+@item
+オ @code{JZE LP}
+
+@item
+カ @code{JZE NUM}
+@end itemize
+
+cに関する解答群
+@itemize @w{}
+
+@item
+ア @code{JNZ FIN}
+
+@item
+イ @code{JNZ FIN2}
+
+@item
+ウ @code{JNZ NUM}
+
+@item
+エ @code{JZE FIN}
+
+@item
+オ @code{JZE FIN2}
+
+@item
+カ @code{JZE NUM}
+@end itemize
+
+d に関する解答群
+
+@itemize @w{}
+@item
+ア @code{LAD GR6,1,GR1}
+
+@item
+イ @code{LAD GR6,1,GR6}
+
+@item
+ウ @code{LAD GR7,1,GR2}
+
+@item
+エ @code{LAD GR7,1,GR7}
+
+@item
+オ @code{LD GR6,GR1}
+
+@item
+カ @code{LD GR7,GR2}
+@end itemize
+
+@unnumberedsec 設問3
+
+GETWDを使用して,二つの整数の積を求める副プログラムMULTを作成した。プログラム3中の::ansbox:4::に入れる正しい答えを,解答群の中から選べ。
+
+@unnumberedsubsec 〔プログラム3の説明〕
+
+(1) MULTは,数字列を二つだけ含む,〔プログラム2の説明〕の(1)で示した形式の文字列について,最初の数字列に対応する数値を被乗数とし,2番目の数字列に対応する数値を乗数として乗算を行う。乗算においてあふれは発生しないものとする。
+
+(2) 主プログラムは,文字列が格納されている領域の先頭アドレスをGR1に設定して,MULTを呼ぶ。MULTは,演算結果をGR0に格納して呼出し元に戻る。
+
+(3) 副プログラムMULTから戻るとき,汎用レジスタGR1~GR7の内容は元に戻す。
+
+@unnumberedsubsec 〔プログラム3〕
+
+@verbatim
+MULT START
+ RPUSH
+ LAD GR2,CTBL
+ CALL GETWD
+ LD GR4,0,GR2 ; GR4 ← 被乗数
+ LD GR5,1,GR2 ; GR5 ← 乗数
+ LD GR0,=0
+ LD GR5,GR5
+LP ::ansbox:8:e::
+ LD GR3,GR5
+ AND GR3,=#0001 ; 乗数の最下位ビットのチェック
+ JZE NEXT
+ ADDL GR0,GR4
+NEXT SLL GR4,1 ; 被乗数を1ビット左論理シフト
+ ::ansbox:8:f::
+ JUMP LP
+FIN RPOP
+ RET
+CTBL DS 3 ; GETWD用管理テーブル
+ END
+@end verbatim
+
+eに関する解答群
+
+@itemize @w{}
+@item
+ア @code{JMI FIN}
+
+@item
+イ @code{JMI NEXT}
+
+@item
+ウ @code{JPL FIN}
+
+@item
+エ @code{JPL NEXT}
+
+@item
+オ @code{JZE FIN}
+
+@item
+カ @code{JZE NEXT}
+@end itemize
+
+
+fに関する解答群
+
+@itemize @w{}
+@item
+ア @code{ADDL GR0,GR5}
+
+@item
+イ @code{ADDL GR5,GR4}
+
+@item
+ウ @code{LD GR5,GR4}
+
+@item
+エ @code{SLL GR5,1}
+
+@item
+オ @code{SRL GR5,1}
+@end itemize
+@bye
--- /dev/null
+all: $(foreach ext,.png .eps,$(addsuffix $(ext),$(basename $(wildcard *.svg))))
+
+clean:
+ $(RM) *.log
+
+distclean: clean
+ $(RM) *.png *.eps *.jpg
+
+include ../../../images.mk
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="90" viewBox="0 0 200 60">
+ <g transform="translate(10,10)">
+ <g stroke="black" stroke-width="1" fill="none">
+ <rect x="0" y="0" width="180" height="30" />
+ <line x1="60" y1="0" x2="60" y2="30" />
+ <line x1="120" y1="0" x2="120" y2="30" />
+ </g>
+ <g font-family="monospace" font-size="10" fill="black">
+ <text x="15" y="20">#0035</text>
+ <text x="75" y="20">#0036</text>
+ <text x="135" y="20">#0037</text>
+ </g>
+ <g font-family="sans-serif" font-size="10px" fill="black">
+ <text x="5" y="40">(1語目)</text>
+ <text x="65" y="40">(2語目)</text>
+ <text x="125" y="40">(3語目)</text>
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="360" height="120" viewBox="0 0 240 60">
+ <g transform="translate(10,10)">
+ <rect x="0" y="0" width="170" height="30" stroke="black" stroke-width="1" fill="none" />
+ <text font-family="monospace" font-size="10" fill="black" x="10" y="20">△△1234△56789△△△9876△.</text>
+ <g font-family="sans-serif" font-size="10" fill="black">
+ <text x="0" y="40">注記</text>
+ <text x="30" y="40">空白文字は“△”と表示する</text>
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="360" height="90" viewBox="0 0 240 60">
+ <g transform="translate(10,10)">
+ <g stroke="black" stroke-width="1" fill="none">
+ <rect x="0" y="0" width="200" height="30" />
+ <line x1="50" y1="0" x2="50" y2="30" />
+ <line x1="100" y1="0" x2="100" y2="30" />
+ <line x1="150" y1="0" x2="150" y2="30" />
+ </g>
+ <g font-family="monospace" font-size="10px" fill="black">
+ <text x="20" y="20">1234</text>
+ <text x="65" y="20">56789</text>
+ <text x="120" y="20">9876</text>
+ <text x="180" y="20">-1</text>
+ </g>
+ <g font-family="sans-serif" font-size="10" fill="black">
+ <text x="0" y="40">注記</text>
+ <text x="30" y="40">数値は,10進数で表記している。</text>
+ </g>
+ </g>
+</svg>
--- /dev/null
+body {
+ margin-left: 6em;
+ margin-right: 12em;
+ color: black;
+ background-color: #EEE;
+ font-family: sans-serif;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: navy;
+ background-color: inherit;
+}
+
+h1, h2 {
+ margin-left: -2em;
+}
+
+.node{
+ margin-left: -3em;
+ color: inherit;
+ background-color: #DDF;
+}
+
+.menu, .node {
+ color: inherit;
+ background-color: #DDF;
+}
+
+table.menu, table.menu th, table.menu td {
+ border-style: none;
+}
+
+h2 {
+ padding: 0.25em;
+}
+
+.contents {
+ background-color: #DDF;
+ border: 4px double #000;
+ padding: 0.5em 1em 0.5em 1em;
+}
+
+.contents h2 {
+ margin-left: 0;
+ color: black;
+ background-color: #DDF;
+}
+
+.contents li {
+ list-style-type: none;
+}
+
+.shortcontents {
+ background-color: #DDF;
+ border: 4px double #000;
+ }
+
+.shortcontents h2{
+ display: none;
+}
+
+h1.node-heading {
+ display: none;
+}
+
+h2.contents-heading{
+ display: none;
+}
+
+h2.shortcontents-heading{
+ display: none;
+}
+
+.shortcontents a {
+ margin-right: 1em;
+}
+
+h3, h4, h5 {
+ margin-left: -1em;
+}
+
+h5 {
+ font-size: 100%;
+}
+
+p {
+ line-height: 1.25em;
+ margin-top: 0;
+ margin-bottom: 0.5em;
+}
+
+a:hover {
+ color: red;
+ text-decoration: underline;
+}
+
+pre.example, pre.verbatim {
+ padding: 0.5em 1em 0.5em 1em;
+ border: 1px solid #CCC;
+ font-size: 120%;
+}
+
+a {
+ text-decoration: none;
+}
+
+blockquote {
+ line-height: 1.25em;
+ border: 1px solid #00F;
+}
+
+kbd, code, .file, var {
+ font-style: normal;
+ font-weight: normal;
+ font-family: monospace;
+ font-size: 120%;
+ margin-left:0.25em;
+ margin-right: 0.25em;
+}
+
+table, th, td {
+ border: 1px solid black;
+ border-collapse: collapse; /* 枠線の表示方法 */
+ margin-bottom: 1em;
+}
+
+table.cartouche, table.cartouche th, table.cartouche td {
+ border: none;
+}
+
+pre.example .command, pre.example .option, pre.example kbd {
+ font-weight: bold;
+ font-family: monospace;
+ font-size: 110%;
+ background-color: inherit;
+ font-style: normal;
+ margin-left:0;
+ margin-right: 0;
+}
+
+pre.example strong {
+ font: inherit;
+ border: 2px solid green;
+}
+
+th, em {
+ font-style: normal;
+ font-weight: bold;
+ font-family: sans-serif;
+}
+
+th {
+ text-align: center;
+}
+
+dfn {
+ font-style: normal;
+}
+
+.header, .menu {
+ display: none;
+}
+
+.selection {
+ color: navy;
+ font-weight: bold;
+ margin-right: 1em;
+}
+
+.ansbox {
+ border: 2px solid navy;
+ text-align: center;
+ display: inline-block;
+}
--- /dev/null
+.PHONY: texinfo-distclean texinfo-clean texinfo-textmp-clean
+
+CP := cp
+DVIPDFMX := dvipdfmx
+DVIPDFMX_FLAGS ?=
+ECHO := echo
+INSTALL-INFO := install-info
+MAKEINFO_FLAGS ?=
+MKDIR := mkdir
+RMR := rm -rf
+SED := sed
+TEX := ptex
+TEXI2DVI := TEX=$(TEX) texi2dvi
+TEXI2DVI_FLAGS ?= -q --texinfo=@afourpaper
+MV := mv
+
+# \includeコマンドで読み込まれるファイル
+intexi = $(strip $(shell $(SED) -n -e 's/@include \(.*\)/\1/pg' $<))
+
+# \imageコマンドで読み込まれるファイル
+imagetexi = $(strip $(shell $(SED) -n -e 's/.*@image{\([^,]*\)\(,[^,]*,[^,]*,[^,]*,\([^,}]*\)\)}.*/\1\3/p' $<))
+
+# 依存関係を自動生成し、dファイルに格納
+%.d: %.texi
+ @$(ECHO) '$@ is created by scanning $<.'
+ # texiファイルと出力ファイルの依存関係
+ @$(ECHO) '$(foreach ext,.html _html .pdf .xml .info .txt .d,$(subst .texi,$(ext),$<)): $<' >$@
+ # includeファイルの依存関係
+ $(if $(intexi),@( \
+ $(ECHO) >>$@; \
+ $(ECHO) '# Include Files' >>$@; \
+ $(ECHO) '$(foreach ext,.html _html .info .pdf .xml .txt,$<),$(subst .texi,$(ext),$<): $(intexi)') >>$@)
+ # imageファイルの依存関係
+ # Docbookは未定義
+ $(if $(imagetexi),@( \
+ $(ECHO) >>$@; \
+ $(ECHO) '# Image Files: HTML, HTML split, Info' >>$@; \
+ $(ECHO) '$(foreach ext,.html _html .info,$(subst .texi,$(ext),$<)): $(imagetexi)' >>$@))
+ $(if $(imagetexi),@( \
+ $(ECHO) >>$@; \
+ $(ECHO) '# Imagefiles: DVI -> PDF' >>$@; \
+ $(ECHO) '$(subst .texi,.pdf,$<): $(addsuffix .eps,$(basename $(imagetexi)))' >>$@))
+
+# 変数TEXITARGETSで指定されたターゲットファイルに対応するdファイルをインクルード
+# .dファイルからヘッダファイルの依存関係を取得する
+# ターゲットに clean が含まれている場合は除く
+ifeq (,$(filter %clean,$(MAKECMDGOALS)))
+ -include $(addsuffix .d,$(basename $(TEXITARGETS)))
+endif
+
+%.info: %.texi
+ $(MAKEINFO) $(MAKEINFO_FLAGS) -o $@ $<
+
+%.html: %.texi
+ $(MAKEINFO) -o $@ --no-split --html --css-include=$(CSS) $<
+ $(SED) -i '' -e 's%<img src="\([^"]*\)" *[^>]*>%<object type="image/svg+xml" data="\1">&</object>%g' $@
+ $(SED) -i '' -e 's%<!-- /@w --> \([アイウエオカキクケコ]\)%<span class="selection">\1</span>%g' $@
+ $(SED) -i '' -e 's%::ansbox:\([0-9]*\):*\([a-zA-Z]\)*::%<span class="ansbox" style="min-width:\1em">\2\ </span>%g' $@
+
+%.html %_html: $(CSS)
+
+%.pdf: %.dvi
+ $(DVIPDFMX) $(DVIPDFMXFLAGS) $<
+
+%.txt: %.texi
+ $(MAKEINFO) --no-headers --disable-encoding -o $@ $<
+
+%.xml: %.texi
+ @$(MAKEINFO) --docbook -o $@ $<
+
+texinfo-distclean: texinfo-clean
+ $(RMR) *_html *.info *.html *.pdf *.dvi *.txt
+
+texinfo-clean: texinfo-textmp-clean
+ $(RM) *.d
+
+texinfo-textmp-clean:
+ $(RM) *.aux *.cp *.cps *.fn *.ky *.log *.pg *.pgs *.tmp *.toc *.tp *.vr
--- /dev/null
+INKSCAPE := inkscape -z
+CONVERT := convert
+
+%.png: %.svg
+ $(INKSCAPE) -y 0.0 -e $@ $< >$<2png.log 2>&1
+
+%.eps: %.svg
+ $(INKSCAPE) -E $@ $< >$<2eps.log 2>&1
%.html: %.texi
$(MAKEINFO) -o $@ --no-split --html --css-include=$(CSS) $<
- $(SED) -i '' -e 's%<img src="\([^"]*\)" alt="[^"]*">%<object type="image/svg+xml" data="\1"></object>%g' $@
+ $(SED) -i '' -e 's%<img src="\([^"]*\)" *[^>]*>%<object type="image/svg+xml" data="\1">&</object>%g' $@
%_html: %.texi
if test ! -e $@; then $(MKDIR) $@; fi
$(CP) $(CSS) $@/
$(MAKEINFO) -o $@ --html --css-ref=$(CSS) $<
- $(SED) -i '' -e 's%<img src="\([^"]*\)" alt="[^"]*">%<object type="image/svg+xml" data="\1"></object>%g' $@
+ $(SED) -i '' -e 's%<img src="\([^"]*\)" *[^>]*>%<object type="image/svg+xml" data="\1">&</object>%g' $@
%.html %_html: $(CSS)