aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2014-01-06 23:02:50 -0500
committerRalph Amissah <ralph@amissah.com>2014-01-06 23:03:02 -0500
commit5fb49b575a548313b827fd66fd7ecce514fe0e45 (patch)
treee7541789806c1bc086c05d06f0af2b9d54abb1c1
parentv5: vim syntax, v5.2 match heading level D~ (diff)
v5: heading recalibration, code (downstream) changessisu_4.2.17
* here no doubt remains breakage (test, fix & test again)
-rw-r--r--data/doc/sisu/CHANGELOG_v51
-rw-r--r--lib/sisu/v5/ao_syntax.rb2
-rw-r--r--lib/sisu/v5/db_create.rb7
-rw-r--r--lib/sisu/v5/db_drop.rb1
-rw-r--r--lib/sisu/v5/db_import.rb71
-rw-r--r--lib/sisu/v5/db_indexes.rb1
-rw-r--r--lib/sisu/v5/db_load_tuple.rb32
-rw-r--r--lib/sisu/v5/html.rb32
-rw-r--r--lib/sisu/v5/html_format.rb20
-rw-r--r--lib/sisu/v5/html_minitoc.rb15
-rw-r--r--lib/sisu/v5/html_scroll.rb15
-rw-r--r--lib/sisu/v5/html_segments.rb56
-rw-r--r--lib/sisu/v5/param.rb9
-rw-r--r--lib/sisu/v5/param_make.rb13
-rw-r--r--lib/sisu/v5/txt_asciidoc.rb24
-rw-r--r--lib/sisu/v5/txt_markdown.rb12
-rw-r--r--lib/sisu/v5/txt_plain.rb6
-rw-r--r--lib/sisu/v5/txt_rst.rb12
-rw-r--r--lib/sisu/v5/txt_textile.rb12
-rw-r--r--lib/sisu/v5/xhtml.rb1
-rw-r--r--lib/sisu/v5/xhtml_epub2.rb82
-rw-r--r--lib/sisu/v5/xhtml_epub2_concordance.rb12
-rw-r--r--lib/sisu/v5/xhtml_epub2_format.rb15
-rw-r--r--lib/sisu/v5/xhtml_epub2_segments.rb64
-rw-r--r--lib/sisu/v5/xml_docbook5.rb60
-rw-r--r--lib/sisu/v5/xml_dom.rb14
-rw-r--r--lib/sisu/v5/xml_fictionbook2.rb15
-rw-r--r--lib/sisu/v5/xml_format.rb19
28 files changed, 416 insertions, 207 deletions
diff --git a/data/doc/sisu/CHANGELOG_v5 b/data/doc/sisu/CHANGELOG_v5
index 4ec2e5dd..1db35908 100644
--- a/data/doc/sisu/CHANGELOG_v5
+++ b/data/doc/sisu/CHANGELOG_v5
@@ -38,6 +38,7 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_5.2.0.orig.tar.xz
* introduce additional possible heading level, D~
* markup rule change: single document root
* breaks much downstream code, recalibrate (fix, test, fix & test again)
+ * heading recalibration, code (downstream) changes
* v4 & v5 bifurcate (diverge "un-merge-ably")
Notes, rule imposed: heading level A~ becomes, document title & sole document
diff --git a/lib/sisu/v5/ao_syntax.rb b/lib/sisu/v5/ao_syntax.rb
index fe9f3aec..cdcb3883 100644
--- a/lib/sisu/v5/ao_syntax.rb
+++ b/lib/sisu/v5/ao_syntax.rb
@@ -412,7 +412,7 @@ module SiSU_AO_Syntax
gsub(/~\[([^*+].+?)\]~/m,Mx[:en_b_o] + '* \1' + Mx[:en_b_c]). #default if markup does not specify
gsub(/~\[(.+?)\]~/m,Mx[:en_b_o] + '\1' + Mx[:en_b_c])
if dob.is ==:heading \
- and dob.ln ==1
+ and dob.ln ==0
dob.obj=dob.obj.gsub(/\s*@title\b/," #{@md.title.full}")
dob.obj=if defined? @md.creator.author \
and @md.creator.author
diff --git a/lib/sisu/v5/db_create.rb b/lib/sisu/v5/db_create.rb
index 834b55cc..4de362c5 100644
--- a/lib/sisu/v5/db_create.rb
+++ b/lib/sisu/v5/db_create.rb
@@ -236,6 +236,7 @@ module SiSU_DbCreate
seg VARCHAR(256) NULL,
lev_an VARCHAR(1),
lev SMALLINT NULL,
+ lev0 SMALLINT,
lev1 SMALLINT,
lev2 SMALLINT,
lev3 SMALLINT,
@@ -484,9 +485,9 @@ module SiSU_DbCreate
%{COMMENT ON COLUMN doc_objects.metadata_tid
IS 'tie to title in metadata_and_text';},
%{COMMENT ON COLUMN doc_objects.lev_an
- IS 'doc level A-C 1-6';},
+ IS 'doc level A-D 1-6';},
%{COMMENT ON COLUMN doc_objects.lev
- IS 'doc level 1-6 \d\~';},
+ IS 'doc level 0-6 \d\~';},
%{COMMENT ON COLUMN doc_objects.seg
IS 'segment name from level number 4 (lv 1)';},
%{COMMENT ON COLUMN doc_objects.ocn
@@ -511,6 +512,8 @@ module SiSU_DbCreate
IS 'text object - substantive text: light html markup';},
%{COMMENT ON COLUMN doc_objects.book_idx
IS 'book index creation information for paragraph, if provided';},
+ %{COMMENT ON COLUMN doc_objects.lev0
+ IS 'document structure, level number 0';},
%{COMMENT ON COLUMN doc_objects.lev1
IS 'document structure, level number 1';},
%{COMMENT ON COLUMN doc_objects.lev2
diff --git a/lib/sisu/v5/db_drop.rb b/lib/sisu/v5/db_drop.rb
index 2e4c28ba..b1ff634e 100644
--- a/lib/sisu/v5/db_drop.rb
+++ b/lib/sisu/v5/db_drop.rb
@@ -159,6 +159,7 @@ module SiSU_DbDrop
%{DROP INDEX idx_ocn;},
%{DROP INDEX idx_digest_clean;},
%{DROP INDEX idx_digest_all;},
+ %{DROP INDEX idx_lev0;},
%{DROP INDEX idx_lev1;},
%{DROP INDEX idx_lev2;},
%{DROP INDEX idx_lev3;},
diff --git a/lib/sisu/v5/db_import.rb b/lib/sisu/v5/db_import.rb
index 2289613d..8d9fc229 100644
--- a/lib/sisu/v5/db_import.rb
+++ b/lib/sisu/v5/db_import.rb
@@ -116,7 +116,7 @@ module SiSU_DbImport
puts "#{__FILE__}:#{__LINE__}" if @opt.act[:maintenance][:set]==:on
end
@id_n =0 if @col[:lid].nil? or @col[:lid].to_s.empty?
- @col[:lv1]=@col[:lv2]=@col[:lv3]=@col[:lv4]=@col[:lv5]=@col[:lv6]=0
+ @col[:lv0]=@col[:lv1]=@col[:lv2]=@col[:lv3]=@col[:lv4]=@col[:lv5]=@col[:lv6]=0
@db=SiSU_Env::InfoDb.new
@pdf_fn=SiSU_Env::FileOp.new(@md).base_filename
@@dl ||=SiSU_Env::InfoEnv.new.digest.length
@@ -152,7 +152,7 @@ module SiSU_DbImport
puts @conn.driver_name if defined? @conn.driver_name
puts @conn.driver if defined? @conn.driver
end
- begin
+ begin #% sql
if @sql_type=~/sqlite/
@conn.transaction do |conn|
t_d.each do |sql|
@@ -310,8 +310,23 @@ module SiSU_DbImport
notedata=data.obj.dup
#% :headings
if data.is==:heading \
- && (data.ln.inspect=~/[123]/)
- @col[:lev],txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.ln,data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
+ && (data.ln.inspect=~/[0-3]/)
+ (
+ @col[:lev],
+ txt,@col[:ocn],
+ @col[:lev_an],
+ @col[:ocnd],@col[:ocns],
+ @col[:t_of],@col[:t_is],
+ @col[:node],@col[:parent],
+ @col[:digest_clean],@col[:digest_all]=
+ data.ln,
+ data.obj,data.ocn,
+ data.lv,
+ data.odv,data.osp,
+ data.of,data.is,
+ data.node,data.parent,
+ '',''
+ )
@col[:lid]+=1
txt=endnotes(txt).extract_any
body=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_minus
@@ -330,6 +345,7 @@ module SiSU_DbImport
t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint)
@tuple_array << t.tuple
case @col[:lev]
+ when /0/ then @col[:lv0]+=1
when /1/ then @col[:lv1]+=1
when /2/ then @col[:lv2]+=1
when /3/ then @col[:lv3]+=1
@@ -337,7 +353,20 @@ module SiSU_DbImport
@col[:lev]=@col[:plaintext]=@col[:body]=''
elsif data.is==:heading \
&& data.ln==4
- @@seg,txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.name,data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
+ (
+ @@seg,txt,
+ @col[:ocn],@col[:lev_an],
+ @col[:ocnd],@col[:ocns],
+ @col[:t_of],@col[:t_is],
+ @col[:node],@col[:parent],
+ @col[:digest_clean],@col[:digest_all]=
+ data.name,data.obj,
+ data.ocn,data.lv,
+ data.odv,data.osp,
+ data.of,data.is,
+ data.node,data.parent,
+ '',''
+ )
@col[:seg]=@@seg
@col[:lv4]+=1
@col[:lid]+=1
@@ -365,7 +394,20 @@ module SiSU_DbImport
@col[:lev]=@col[:plaintext]=@col[:body]=''
elsif data.is==:heading \
&& data.ln==5
- txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
+ (
+ txt,
+ @col[:ocn],@col[:lev_an],
+ @col[:ocnd],@col[:ocns],
+ @col[:t_of],@col[:t_is],
+ @col[:node],@col[:parent],
+ @col[:digest_clean],@col[:digest_all]=
+ data.obj,
+ data.ocn,data.lv,
+ data.odv,data.osp,
+ data.of,data.is,
+ data.node,data.parent,
+ '',''
+ )
@@seg_full=data.name if data.is==:heading \
&& data.ln==5 \
&& data.name #check data.name
@@ -433,8 +475,21 @@ module SiSU_DbImport
#% :
else #% regular text
@col[:lid]+=1
- txt=''
- txt,@col[:ocn],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.odv,data.osp,data.of,data.is,'',data.parent,'',''
+ (
+ txt=''
+ txt,@col[:ocn],
+ @col[:ocnd],@col[:ocns],
+ @col[:t_of],@col[:t_is],
+ @col[:node],@col[:parent],
+ @col[:digest_clean],@col[:digest_all],
+ @col[:lev]=
+ data.obj,data.ocn,
+ data.odv,data.osp,
+ data.of,data.is,
+ '',data.parent,
+ '','',
+ 9
+ )
@hname=if @col[:seg] \
and not @col[:seg].to_s.empty?
@@hname=@col[:seg].to_s
diff --git a/lib/sisu/v5/db_indexes.rb b/lib/sisu/v5/db_indexes.rb
index 0e260f76..0fa51b3f 100644
--- a/lib/sisu/v5/db_indexes.rb
+++ b/lib/sisu/v5/db_indexes.rb
@@ -83,6 +83,7 @@ module SiSU_DbIndex
%{CREATE INDEX idx_ocn ON doc_objects(ocn);},
%{CREATE INDEX idx_digest_clean ON doc_objects(digest_clean);},
%{CREATE INDEX idx_digest_all ON doc_objects(digest_all);},
+ %{CREATE INDEX idx_lev0 ON doc_objects(lev0);},
%{CREATE INDEX idx_lev1 ON doc_objects(lev1);},
%{CREATE INDEX idx_lev2 ON doc_objects(lev2);},
%{CREATE INDEX idx_lev3 ON doc_objects(lev3);},
diff --git a/lib/sisu/v5/db_load_tuple.rb b/lib/sisu/v5/db_load_tuple.rb
index 9bad5757..750a47f0 100644
--- a/lib/sisu/v5/db_load_tuple.rb
+++ b/lib/sisu/v5/db_load_tuple.rb
@@ -69,25 +69,20 @@ module SiSU_DbTuple
def initialize(conn,col,opt,file_maint)
@conn,@col,@opt,@file_maint=conn,col,opt,file_maint
@col[:lev]=@col[:lev].to_i
- unless @col[:lev]=~/^[1-6]/ \
- or @col[:lev]==1 \
- or @col[:lev]==2 \
- or @col[:lev]==3 \
- or @col[:lev]==4 \
- or @col[:lev]==5 \
- or @col[:lev]==6 #changed from \d+ ??
- @col[:lev]=0
+ unless @col[:lev].inspect=~/^[0-6]/ \
+ or @col[:lev]==0..6
+ @col[:lev]=9
end
@col[:ocn]=0 unless @col[:ocn].inspect=~/\d+/
@cX=SiSU_Screen::Ansi.new(@opt.act[:color_state][:set]).cX
end
def tuple #% import line
sql_entry=if @col[:en_a]
- "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev1, lev2, lev3, lev4, lev5, lev6, en_a, en_z, t_of, t_is, node, parent, digest_clean, digest_all) " +
- "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:en_a]}', '#{@col[:en_z]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"
+ "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev0, lev1, lev2, lev3, lev4, lev5, lev6, en_a, en_z, t_of, t_is, node, parent, digest_clean, digest_all) " +
+ "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv0]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:en_a]}', '#{@col[:en_z]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"
else
- "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev1, lev2, lev3, lev4, lev5, lev6, t_of, t_is, node, parent, digest_clean, digest_all) " +
- "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"
+ "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev0, lev1, lev2, lev3, lev4, lev5, lev6, t_of, t_is, node, parent, digest_clean, digest_all) " +
+ "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv0]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"
end
if @opt.act[:verbose_plus][:set]==:on
if @opt.act[:maintenance][:set]==:on
@@ -102,17 +97,18 @@ module SiSU_DbTuple
end
end
if @opt.act[:verbose][:set]==:on
- if @col[:lev].inspect =~/[12356789]/
+ if @col[:lev].inspect =~/[0-356]/
lev=case @col[:lev].inspect
- when /1/ then ':A'
- when /2/ then ':B'
- when /3/ then ':C'
+ when /0/ then ':A'
+ when /1/ then ':B'
+ when /2/ then ':C'
+ when /3/ then ':D'
when /5/ then ' 2'
when /6/ then ' 3'
end
- puts %{#{lev}>\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}}
+ puts %{#{lev}>\t#{@col[:lv0]}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}}
elsif @col[:lev].inspect =~/[4]/
- puts %{ #{@cX.green}1>#{@cX.off}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}\t#{@col[:seg]}}
+ puts %{ #{@cX.green}1>#{@cX.off}\t#{@col[:lv0]}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}\t#{@col[:seg]}}
end
end
sql_entry
diff --git a/lib/sisu/v5/html.rb b/lib/sisu/v5/html.rb
index 4ff58c43..f473f1b7 100644
--- a/lib/sisu/v5/html.rb
+++ b/lib/sisu/v5/html.rb
@@ -259,6 +259,7 @@ module SiSU_HTML
toc=if dob_toc.is ==:heading \
|| dob.is==:heading_insert
toc=case dob_toc.ln
+ when 0 then SiSU_HTML::Source::Toc.new(@md,dob_toc).level_0
when 1 then SiSU_HTML::Source::Toc.new(@md,dob_toc).level_1
when 2 then SiSU_HTML::Source::Toc.new(@md,dob_toc).level_2
when 3 then SiSU_HTML::Source::Toc.new(@md,dob_toc).level_3
@@ -335,6 +336,29 @@ WOK
@@toc[:seg_mini] << format_head_toc.mini_concordance
end
# <-- not used
+ def level_0
+ dob=@data
+ linkname,link=dob.obj.strip,dob.ocn
+ if link \
+ and link !~/#/ #% keep eye on link
+ SiSU_HTML_Format::ParagraphNumber.new(@md,link)
+ end
+ title=linkname
+ toc={}
+ txt_obj={ txt: title }
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
+ toc[:seg]=format_toc.lev0
+ toc[:seg_mini]=format_toc.mini_lev0
+ title=if dob.ocn ==0 then linkname
+ else
+ @@toc[:scr] << '<br />'
+ %{<b><a href="##{dob.ocn}">#{linkname}</a></b>}
+ end
+ txt_obj={ txt: title }
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
+ toc[:scr]=format_toc.lev0
+ toc
+ end
def level_1
dob=@data
linkname,link=dob.obj.strip,dob.ocn
@@ -567,9 +591,8 @@ WOK
format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
dochead=format_head_toc.head
dochead=dochead.gsub(/toc\.(html)/,'doc.\1') #kludge
- ads=SiSU_HTML_Promo::Ad.new(@md)
- toc_shared << dochead << ads.div.major
- @segtoc << format_head_toc.head << ads.div.major
+ toc_shared << dochead
+ @segtoc << format_head_toc.head
if @make.build.html_top_band?
toc_shared << format_head_toc.scroll_head_navigation_band
end
@@ -632,8 +655,7 @@ WOK
#Segtoc tail added here
@segtoc << "</p>\n" #bugfix sort later DEBUGNOW
@segtoc << @seg_toc_band_bottom
- ads=SiSU_HTML_Promo::Ad.new(@md)
- @segtoc << format_head_toc.seg_navigation_tail << ads.div.close << ads.display << format_head_toc.html_close
+ @segtoc << format_head_toc.seg_navigation_tail << format_head_toc.html_close
@segtoc=@segtoc.flatten.compact #watch
if @md.opt.act[:html_seg][:set]==:on
SiSU_HTML::Source::Output.new(@segtoc,@md).segtoc
diff --git a/lib/sisu/v5/html_format.rb b/lib/sisu/v5/html_format.rb
index 5617193f..3b15502f 100644
--- a/lib/sisu/v5/html_format.rb
+++ b/lib/sisu/v5/html_format.rb
@@ -1030,7 +1030,7 @@ WOK
para_form_css(tag,attrib)
end
def heading_normal(tag,attrib)
- section_break=(tag=~/h[1-4]/) \
+ section_break=(tag=~/h[1-5]/) \
? '<br /><hr width=90% /><br />'
: ''
%{#{section_break}
@@ -1045,6 +1045,9 @@ WOK
def heading_body
heading_normal('p','norm')
end
+ def heading_body0
+ heading_normal('h1','norm')
+ end
def heading_body1
heading_normal('h1','norm')
end
@@ -1075,6 +1078,9 @@ WOK
</div>
}
end
+ def title_heading0
+ title_heading('h1','tiny')
+ end
def title_heading1
title_heading('h1','tiny')
end
@@ -1332,6 +1338,9 @@ WOK
else ''
end
end
+ def lev0 #docinfo
+ lev('h1','toc')
+ end
def lev1
lev('h1','toc')
end
@@ -1350,13 +1359,14 @@ WOK
def lev6
lev('h6','toc')
end
- def lev0 #docinfo
- lev('h0','toc')
- end
def strip_endnotes(txt)
txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
txt
end
+ def mini_lev0
+ @txt=strip_endnotes(@txt)
+ lev('h1','minitoc')
+ end
def mini_lev1
@txt=strip_endnotes(@txt)
lev('h1','minitoc')
@@ -1382,7 +1392,7 @@ WOK
lev('h6','minitoc')
end
def mini_lev0 #docinfo
- lev('h0','minitoc')
+ lev('h1','minitoc')
end
def mini_tail
%{
diff --git a/lib/sisu/v5/html_minitoc.rb b/lib/sisu/v5/html_minitoc.rb
index 65cfe91a..dae74c46 100644
--- a/lib/sisu/v5/html_minitoc.rb
+++ b/lib/sisu/v5/html_minitoc.rb
@@ -89,6 +89,7 @@
gsub(@pat_strip_heading_name,'\1')
#gsub(/(.*?)<a name="(\d+)"><\/a>(.*)/,'\1') #2002w42 altered gsub - problematic? - suspect
toc=case txt.ln
+ when 0 then SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_0
when 1 then SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_1
when 2 then SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_2
when 3 then SiSU_HTML_MiniToc::TocMini.new(@md,txt).level_3
@@ -115,6 +116,18 @@
format_head_toc=SiSU_HTML_Format::HeadToc.new(@d0c)
@@seg_mini << format_head_toc.mini_concordance
end
+ def level_0
+ txt=@data
+ if (txt.is ==:heading \
+ || txt.is ==:heading_insert) \
+ && txt.ocn !=0
+ txt.obj=txt.obj.gsub(@pat_strip_heading_name,'\1')
+ end
+ txt_obj={ txt: txt.obj }
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
+ toc_mini=format_toc.mini_lev0
+ toc_mini
+ end
def level_1
txt=@data
if (txt.is ==:heading \
@@ -122,7 +135,7 @@
&& txt.ocn !=0
txt.obj=txt.obj.gsub(@pat_strip_heading_name,'\1')
end
- title=unless txt.obj =~/Document Information/; txt.obj
+ title=unless txt.obj =~/Document Information/ then txt.obj
else
link='metadata'
%{<b><a href="#{link}#{@md.lang_code_insert}#{Sfx[:html]}">#{txt.obj}</a></b>}
diff --git a/lib/sisu/v5/html_scroll.rb b/lib/sisu/v5/html_scroll.rb
index 5af5b133..01fe2940 100644
--- a/lib/sisu/v5/html_scroll.rb
+++ b/lib/sisu/v5/html_scroll.rb
@@ -96,7 +96,7 @@ module SiSU_HTML_Scroll
end
if dob.obj =~/^Metadata$/ \
and dob.lv =='B'
- dob.obj=dob.obj.gsub(/Metadata/,'')
+ dob.obj=dob.obj.gsub(/Metadata/,'') #dob.obj=''
end
if defined? dob.name \
and dob.name =~/^metadata/ \
@@ -115,7 +115,9 @@ module SiSU_HTML_Scroll
end
sto=SiSU_HTML_Format::FormatTextObject.new(@md,dob)
para_html=if dob.is==:heading
- x=if dob.ln==1
+ x=if dob.ln==0
+ sto.heading_body0
+ elsif dob.ln==1
sto.heading_body1
elsif dob.ln==2
sto.heading_body2
@@ -132,7 +134,11 @@ module SiSU_HTML_Scroll
and dob.from==:markup
'<br /><hr width=90% /><br />'
elsif dob.is==:heading_insert
- x=if dob.ln==1
+ x=if dob.ln==0
+ unless dob.obj.empty?
+ sto.heading_body0
+ end
+ elsif dob.ln==1
unless dob.obj.empty?
sto.heading_body1
end
@@ -216,8 +222,7 @@ module SiSU_HTML_Scroll
def tails
scr_tail=[]
format_head_scroll=SiSU_HTML_Format::HeadToc.new(@md)
- ads=SiSU_HTML_Promo::Ad.new(@md)
- scr_tail << format_head_scroll.scroll_tail << ads.div.close << ads.display << format_head_scroll.html_close
+ scr_tail << format_head_scroll.scroll_tail << format_head_scroll.html_close
scr_tail
end
end
diff --git a/lib/sisu/v5/html_segments.rb b/lib/sisu/v5/html_segments.rb
index 94df2eba..b710db81 100644
--- a/lib/sisu/v5/html_segments.rb
+++ b/lib/sisu/v5/html_segments.rb
@@ -144,8 +144,8 @@ module SiSU_HTML_Seg
@@seg_name,@@seg_name_html=[],[]
@@seg_url=@@fn=@@get_hash_to=@@get_hash_fn=''
@@loop_count=@@seg_total=@@tracker=0
- @@is4=@@is3=@@is2=@@is1=0
- @@heading1=@@heading2=@@heading3=@@heading4=0
+ @@is4=@@is3=@@is2=@@is1=@@is0=0
+ @@heading0=@@heading1=@@heading2=@@heading3=@@heading4=0
@@seg[:tocband_banner],@@seg[:tocband_bannerless],@@seg[:title],@@seg[:headings],@@seg[:main],@@seg[:idx],@@seg[:tail],@@seg[:credits],@@seg_subtoc_array,@@seg_endnotes_array,@@seg[:endnote_all]=Array.new(11){[]}
@@seg[:heading_endnotes]=''
@@tablehead,@@number_of_cols=0,0
@@ -187,7 +187,7 @@ module SiSU_HTML_Seg
protected
def articles(data)
tracking,newfile=0,0
- @@is4=@@is3=@@is2=@@is1=0
+ @@is4=@@is3=@@is2=@@is1=@@is0=0
printed_endnote_seg='n'
idx_html=nil
if @md.book_idx
@@ -234,10 +234,7 @@ module SiSU_HTML_Seg
if (dob.is==:heading \
|| dob.is==:heading_insert) \
&& dob.ln==4
- if dob.ocn==0
- @@heading4=dob.obj
- else @@heading4=dob.obj
- end
+ @@heading4=dob.obj
@@is4=newfile=1
end
if (dob.is==:heading \
@@ -258,10 +255,16 @@ module SiSU_HTML_Seg
@@heading1=dob.obj
@@is4,@@is3,@@is2,@@is1=0,0,0,1
end
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && dob.ln==0
+ @@heading0=dob.obj
+ @@is4,@@is3,@@is2,@@is1,@@is0=0,0,0,0,1
+ end
if (@@is1 && !@@is2 && !@@is3 && !@@is4)
if not (dob.is==:heading \
|| dob.is==:heading_insert) \
- && dob.ln==1
+ && dob.ln==0
$_ #; check
end
end
@@ -284,9 +287,7 @@ module SiSU_HTML_Seg
fn=@md.file.base_filename.html_seg(fnh)
segfilename="#{@file.output_path.html_seg.dir}/#{fn}"
output_seg_file=File.new(segfilename,'w') if @@seg_name_html[tracking-1]
- minitoc=(@make.build.html_minitoc?) \
- ? @minitoc
- : ''
+ minitoc=(@make.build.html_minitoc?) ? @minitoc : ''
if dob.is==:heading \
|| (@@seg_name_html[tracking-1] !~/endnotes|book_index|metadata/)
SiSU_HTML_Seg::Output.new(@md,output_seg_file,@@seg,minitoc).output
@@ -353,7 +354,7 @@ module SiSU_HTML_Seg
&& (@make.build.html_navigation_bar?)
x=if (dob.is==:heading \
|| dob.is==:heading_insert) \
- && (dob.ln.to_s =~/^[1-6]/)
+ && (dob.ln.to_s =~/^[0-6]/)
x=if @@tracker < @@seg_total-1
format_head_seg.dot_control_pre_next
else
@@ -372,31 +373,38 @@ module SiSU_HTML_Seg
if @make.build.html_navigation?
if @@tracker < @@seg_total-1
@@segtocband=if @@tracker==0
- format_head_seg.toc_next2 #if format_head_seg.toc_next2
+ format_head_seg.toc_next2
else
- format_head_seg.toc_pre_next2 #if format_head_seg.toc_pre_next2
+ format_head_seg.toc_pre_next2
end
- else @@segtocband=format_head_seg.toc_pre2 #if format_head_seg.toc_pre2
+ else @@segtocband=format_head_seg.toc_pre2
end
else @@segtocband=''
end
@p_num ||= ''
- if @@is1==1
+ if @@is0==1
@author=%{<b>#{@md.author}</b>\n} if @md.author.to_s =~/\S/
@@seg[:tocband_banner] << format_head_seg.navigation_band(@@segtocband,@@seg[:dot_nav])
- conditional_div_close=if @@get_hash_fn =~/metadata/ #watch
- '</div>'
- else ''
- end
- @@seg[:tocband_bannerless] << '<br />' << conditional_div_close << format_head_seg.navigation_band_bottom(@@segtocband,@@seg[:dot_nav])
+ @@seg[:tocband_bannerless] << '<br />' << format_head_seg.navigation_band_bottom(@@segtocband,@@seg[:dot_nav])
if @title_banner_
@@seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author).gsub(clean,'')
end
- ocn=(@@heading1[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
+ ocn=(@@heading0[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
+ ? $1
+ : ''
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
+ txt_obj={ txt: @@heading0, ocn_display: @p_num.ocn_display }
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
+ @@seg[:headings] << format_seg.title_heading0.gsub(clean,'')
+ @@heading0=@@heading0.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
+ end
+ if @@is1==1
+ heading1=@@heading1
+ ocn=(heading1[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
? $1
: ''
@p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
- txt_obj={ txt: @@heading1, ocn_display: @p_num.ocn_display }
+ txt_obj={ txt: heading1, ocn_display: @p_num.ocn_display }
format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading1.gsub(clean,'')
@@heading1=@@heading1.gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
@@ -554,7 +562,7 @@ module SiSU_HTML_Seg
if @md.flag_auto_endnotes
if (dob.is==:heading \
|| dob.is==:heading_insert) \
- && (dob.ln.to_s =~/^[1234]/) \
+ && (dob.ln.to_s =~/^[0-4]/) \
and not @@fn.to_s.empty?
@@seg_endnotes[@@fn]=[]
@@seg_endnotes[@@fn] << @@seg_endnotes_array
diff --git a/lib/sisu/v5/param.rb b/lib/sisu/v5/param.rb
index 7288842d..e8eb3fc6 100644
--- a/lib/sisu/v5/param.rb
+++ b/lib/sisu/v5/param.rb
@@ -1090,11 +1090,12 @@ module SiSU_Param
end
end
case para
- when /^:?A~#{l_0}/
+ #when /^:?A~/
+ when /^:?B~#{l_0}/
@lvs[1]=1
- when /^:?B~#{l_1}/
+ when /^:?C~#{l_1}/
@lvs[2]=1
- when /^:?C~#{l_2}/
+ when /^:?D~#{l_2}/
@lvs[3]=1
when /^1~#{l_3}/
@lvs[4]=1
@@ -1103,7 +1104,7 @@ module SiSU_Param
when /^3~#{l_5}/
@lvs[6]=1
end
- if para =~ /^:A~/ #% processing
+ if para =~ /^:?A~/ #% processing
if not defined? @title.full.nil?
tf=para[/^:A~\S*(.+)$/m,1]
tf="@title: #{tf}"
diff --git a/lib/sisu/v5/param_make.rb b/lib/sisu/v5/param_make.rb
index b83088d2..17d3b9a3 100644
--- a/lib/sisu/v5/param_make.rb
+++ b/lib/sisu/v5/param_make.rb
@@ -147,17 +147,18 @@ module SiSU_Param_Make
x=@h['headings']
x=((x =~/;/) ? (x.split(/;\s*/)) : [ x ])
lv[0]=x
- lv1=x[0] ||='1~ ' #some arbitrary changes made
+ lv0 ||='A~ ' #root level, single document apex, document title
+ lv1=x[0] ||='B~ '
lv[1]=/^#{lv1}/
- lv2=x[1] ||='2~ '
+ lv2=x[1] ||='C~ '
lv[2]=/^#{lv2}/
- lv3=x[2] ||='3~ '
+ lv3=x[2] ||='D~ '
lv[3]=/^#{lv3}/
- lv4=x[3] ||='4~ '
+ lv4=x[3] ||='1~ '
lv[4]=/^#{lv4}/
- lv5=x[4] ||='5~ '
+ lv5=x[4] ||='2~ '
lv[5]=/^#{lv5}/
- lv6=x[5] ||='6~ '
+ lv6=x[5] ||='3~ '
lv[6]=/^#{lv6}/
lv
end
diff --git a/lib/sisu/v5/txt_asciidoc.rb b/lib/sisu/v5/txt_asciidoc.rb
index 4e0e3d48..07b8832f 100644
--- a/lib/sisu/v5/txt_asciidoc.rb
+++ b/lib/sisu/v5/txt_asciidoc.rb
@@ -221,43 +221,43 @@ WOK
def decorate
def heading
def inline
- def l1
+ def l0
'='
end
- def l2
+ def l1
'=='
end
- def l3
+ def l2
'==='
end
- def l4
+ def l3
'===='
end
- def l5
+ def l4
'====='
end
- def l6
+ def l5
'' #'======' #logical
end
self
end
def underscore
- def l1
+ def l0
'='
end
- def l2
+ def l1
'-'
end
- def l3
+ def l2
'~'
end
- def l4
+ def l3
'^'
end
- def l5
+ def l4
'+'
end
- def l6
+ def l5
'' #'.' #proposed
end
self
diff --git a/lib/sisu/v5/txt_markdown.rb b/lib/sisu/v5/txt_markdown.rb
index 3a943876..96aca820 100644
--- a/lib/sisu/v5/txt_markdown.rb
+++ b/lib/sisu/v5/txt_markdown.rb
@@ -221,22 +221,22 @@ WOK
def decorate
def heading
def inline #atx
- def l1
+ def l0
'#'
end
- def l2
+ def l1
'##'
end
- def l3
+ def l2
'###'
end
- def l4
+ def l3
'####'
end
- def l5
+ def l4
'#####'
end
- def l6
+ def l5
'######'
end
self
diff --git a/lib/sisu/v5/txt_plain.rb b/lib/sisu/v5/txt_plain.rb
index 81fe7e3a..ca944a1f 100644
--- a/lib/sisu/v5/txt_plain.rb
+++ b/lib/sisu/v5/txt_plain.rb
@@ -221,11 +221,14 @@ WOK
end
def decorate
def heading_underscore
+ def l0
+ '='
+ end
def l1
'*'
end
def l2
- '='
+ '+'
end
def l3
'~'
@@ -377,6 +380,7 @@ WOK
times=wrapped.length
times=@wrap_width if times > @wrap_width
@plaintext[:body] << case lv
+ when 0 then wrapped.upcase << break_line << decorate.heading_underscore.l0*times + p_num << break_line*2
when 1 then wrapped.upcase << break_line << decorate.heading_underscore.l1*times + p_num << break_line*2
when 2 then wrapped.upcase << break_line << decorate.heading_underscore.l2*times + p_num << break_line*2
when 3 then wrapped.upcase << break_line << decorate.heading_underscore.l3*times + p_num << break_line*2
diff --git a/lib/sisu/v5/txt_rst.rb b/lib/sisu/v5/txt_rst.rb
index 8cf382d3..56a34de2 100644
--- a/lib/sisu/v5/txt_rst.rb
+++ b/lib/sisu/v5/txt_rst.rb
@@ -221,22 +221,22 @@ WOK
def decorate
def heading
def underscore
- def l1
+ def l0
'='
end
- def l2
+ def l1
'-'
end
- def l3
+ def l2
'`'
end
- def l4
+ def l3
':'
end
- def l5
+ def l4
"'"
end
- def l6
+ def l5
'"'
end
self
diff --git a/lib/sisu/v5/txt_textile.rb b/lib/sisu/v5/txt_textile.rb
index ddba6b6c..5645f490 100644
--- a/lib/sisu/v5/txt_textile.rb
+++ b/lib/sisu/v5/txt_textile.rb
@@ -221,22 +221,22 @@ WOK
def decorate
def heading
def inline
- def l1
+ def l0
'h1. '
end
- def l2
+ def l1
'h2. '
end
- def l3
+ def l2
'h3. '
end
- def l4
+ def l3
'h4. '
end
- def l5
+ def l4
'h5. '
end
- def l6
+ def l5
'h6. '
end
self
diff --git a/lib/sisu/v5/xhtml.rb b/lib/sisu/v5/xhtml.rb
index 932afd0b..0e0d7781 100644
--- a/lib/sisu/v5/xhtml.rb
+++ b/lib/sisu/v5/xhtml.rb
@@ -317,6 +317,7 @@ WOK
if dob.is==:heading
xml_structure(dob)
dob.obj=case dob.ln
+ when 0 then x.heading_body0
when 1 then x.heading_body1
when 2 then x.heading_body2
when 3 then x.heading_body3
diff --git a/lib/sisu/v5/xhtml_epub2.rb b/lib/sisu/v5/xhtml_epub2.rb
index 27496f99..33e3a529 100644
--- a/lib/sisu/v5/xhtml_epub2.rb
+++ b/lib/sisu/v5/xhtml_epub2.rb
@@ -209,7 +209,7 @@ module SiSU_XHTML_EPUB2
@@toc={ seg: [], seg_mini: [], scr: [], ncx: [], opf: [] }
md_opf_a_content,md_opf_a_spine,md_opf_a_guide=[],[],[]
@nav_no=0
- @s_a_no,@s_b_no,@s_c_no,@lv5_no,@lv6_no=0,0,0,0,0
+ @s_a_no,@s_b_no,@s_c_no,@s_d_no,@lv5_no,@lv6_no=0,0,0,0,0,0
@@toc[:ncx] << @epub.toc_ncx.open #epub ncx navmap
@@toc[:ncx] << @epub.toc_ncx.head_open << @epub.toc_ncx.head << @epub.toc_ncx.head_close
@@toc[:ncx] << @epub.toc_ncx.doc_title << @epub.toc_ncx.doc_author
@@ -231,7 +231,7 @@ module SiSU_XHTML_EPUB2
md_opf_a_spine << @epub.metadata_opf.spine_sisu_toc
md_opf_a_guide << @epub.metadata_opf.guide_sisu_toc
end
- @ncxo=[nil,false,false,false,false,false,false]
+ @ncxo=[false,false,false,false,false,false,false]
@dob_toc2,@dob_toc3=nil,nil
@ncx_cls=[]
@level_a_first_occurrence=true
@@ -240,7 +240,7 @@ module SiSU_XHTML_EPUB2
|| dob.is==:heading_insert
dob_toc=dob.dup
toc=case dob_toc.ln
- when 1
+ when 0
@s_a_no +=1
lv_name='section_a' + @s_a_no.to_s
@nav_no+=1
@@ -251,20 +251,21 @@ module SiSU_XHTML_EPUB2
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1]
- @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false,false
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[0]
+ @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false,false,false
@epub.sections(dob_toc,lv_name)
- @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc
if @level_a_first_occurrence \
&& @make.build.toc?
- @nav_no+=1
@@toc[:ncx] << @epub.toc_ncx.navmap_sisu_toc(@nav_no) #epub ncx navmap, toc
+ @nav_no+=1
@level_a_first_occurrence=false
end
+ @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc
md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name)
md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name)
md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name)
- SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_1
- when 2
+ SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_0
+ when 1
@s_b_no +=1
lv_name='section_b' + @s_b_no.to_s
@nav_no+=1
@@ -274,6 +275,24 @@ module SiSU_XHTML_EPUB2
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1]
+ @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false,false
+ @epub.sections(dob_toc,lv_name)
+ @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc
+ md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name)
+ md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name)
+ md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name)
+ SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_1
+ when 2
+ @s_c_no +=1
+ lv_name='section_c' + @s_c_no.to_s
+ @nav_no+=1
+ @nav_no2=@nav_no
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]
@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false
@epub.sections(dob_toc,lv_name)
@@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc
@@ -282,8 +301,8 @@ module SiSU_XHTML_EPUB2
md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name)
SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_2
when 3
- @s_c_no +=1
- lv_name='section_c' + @s_c_no.to_s
+ @s_d_no +=1
+ lv_name='section_d' + @s_d_no.to_s
@nav_no+=1
@nav_no3=@nav_no
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]
@@ -364,7 +383,8 @@ module SiSU_XHTML_EPUB2
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1]
- @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=false,false,false,false,false,false
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[0]
+ @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=false,false,false,false,false,false,false
md_opf_a_content << @epub.metadata_opf.manifest_images(@md.ec[:image])
@@toc[:seg] << "</div>\n</div>"
@@toc[:scr] << "</div>\n</div>"
@@ -381,9 +401,32 @@ module SiSU_XHTML_EPUB2
@@toc
end
protected
+ def level_0
+ dob=@data
+ linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip
+ link=dob.ocn
+ title=linkname
+ toc={}
+ txt_obj={ txt: title }
+ format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj)
+ toc[:seg]=format_toc.lev1
+ title=if dob.ocn ==0 then linkname
+ else
+ @@toc[:scr] << '<br />'
+ link=(dob.ln) \
+ ? dob.ln
+ : ''
+ %{<b><a href="##{link}">#{linkname}</a></b>}
+ end
+ txt_obj={ txt: title }
+ format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj)
+ toc[:scr]=format_toc.lev1
+ toc
+ end
def level_1
dob=@data
- linkname,link=dob.obj.strip,dob.ocn
+ linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip
+ link=dob.ocn
title=if dob.obj !~/Document Information/
linkname
else
@@ -422,7 +465,8 @@ module SiSU_XHTML_EPUB2
end
def level_2
dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
+ linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip
+ ocn=dob.ocn
if ocn \
and ocn !~/#/
p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn)
@@ -441,7 +485,8 @@ module SiSU_XHTML_EPUB2
end
def level_3
dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
+ linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip
+ ocn=dob.ocn
if ocn \
and ocn !~/#/
p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn)
@@ -460,7 +505,8 @@ module SiSU_XHTML_EPUB2
end
def level_4
dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
+ linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip
+ ocn=dob.ocn
p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) if ocn
if dob.ln==4
seg_link=%{ <a href="#{dob.name}#{Sfx[:epub_xhtml]}">
@@ -485,7 +531,8 @@ module SiSU_XHTML_EPUB2
end
def level_5
dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
+ linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip
+ ocn=dob.ocn
toc={}
if ocn \
and ocn !~/#/
@@ -505,7 +552,8 @@ module SiSU_XHTML_EPUB2
end
def level_6
dob=@data
- linkname,ocn=dob.obj.strip,dob.ocn
+ linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip
+ ocn=dob.ocn
toc={}
if ocn \
and ocn !~/#/
diff --git a/lib/sisu/v5/xhtml_epub2_concordance.rb b/lib/sisu/v5/xhtml_epub2_concordance.rb
index 6324a8cd..6d7c4758 100644
--- a/lib/sisu/v5/xhtml_epub2_concordance.rb
+++ b/lib/sisu/v5/xhtml_epub2_concordance.rb
@@ -160,11 +160,13 @@ WOK
@env,@md,@ao_array=particulars.env,particulars.md,particulars.ao_array
@path="#{@env.processing_path.epub}"
@freq=Hash.new(0)
- @rxp_lv1=/^#{Mx[:lv_o]}1:/ #fix Mx[:lv_o]
- @rxp_lv2=/^#{Mx[:lv_o]}2:/ #fix Mx[:lv_o]
- @rxp_lv3=/^#{Mx[:lv_o]}3:/ #fix Mx[:lv_o]
+ @rxp_lv0=/^#{Mx[:lv_o]}0:/
+ @rxp_lv1=/^#{Mx[:lv_o]}1:/
+ @rxp_lv2=/^#{Mx[:lv_o]}2:/
+ @rxp_lv3=/^#{Mx[:lv_o]}3:/
@rxp_seg=/^#{Mx[:lv_o]}4:(\S+?)#{Mx[:lv_c]}/
@rxp_title=Regexp.new("^#{Mx[:meta_o]}title#{Mx[:meta_c]}\s*(.+?)\s*$")
+ @rxp_t0=Regexp.new('^T0')
@rxp_t1=Regexp.new('^T1')
@rxp_t2=Regexp.new('^T2')
@rxp_t3=Regexp.new('^T3')
@@ -271,12 +273,14 @@ WOK
end
@freq[word] +=1
@word_map[word] ||= []
- if line !~@rxp_lv1 \
+ if line !~@rxp_lv0 \
+ and line !~@rxp_lv1 \
and line !~@rxp_lv2 \
and line !~@rxp_lv3
@word_map[word] << location_seg("#{@seg}\##{toy}",toy)
else
@word_map[word] << case line
+ when @rxp_lv0 then location_seg('T0',toy)
when @rxp_lv1 then location_seg('T1',toy)
when @rxp_lv2 then location_seg('T2',toy)
when @rxp_lv3 then location_seg('T3',toy)
diff --git a/lib/sisu/v5/xhtml_epub2_format.rb b/lib/sisu/v5/xhtml_epub2_format.rb
index b7b5f9a0..8dd8a88e 100644
--- a/lib/sisu/v5/xhtml_epub2_format.rb
+++ b/lib/sisu/v5/xhtml_epub2_format.rb
@@ -1306,6 +1306,7 @@ application/epub+zip
dir_epub_cont=@md.env.processing_path.epub + '/' + Ep[:d_oebps]
segfilename=dir_epub_cont + '/' + name
output_epub_cont_seg=File.new(segfilename,'w')
+ txt=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'')
output_epub_cont_seg << %{#{doc_type}
<head>
<title>
@@ -1320,7 +1321,7 @@ application/epub+zip
<div class="substance">
<label class="ocn"><a href="#o#{dob.ocn}" class="lnkocn">#{dob.ocn}</a></label>
<h1 class="norm" id="o#{dob.ocn}">
- #{dob.obj}
+ #{txt}
</h1>
</div>
</div>
@@ -1413,15 +1414,16 @@ output_epub_cont_seg.close
WOK
end
def navpoint(dob,no,fn_base,hashtag=nil)
- fn=fn_base + Sfx[:epub_xhtml]
- name=hashtag ? fn + hashtag : fn
+ fn=fn_base + Sfx[:epub_xhtml]
+ name=hashtag ? fn + hashtag : fn
id_u=DISABLE[:epub][:ncx_navpoint_unique_id] \
? ''
: "-#{no}"
+ txt=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'')
<<-WOK
<navPoint class="chapter" id="navpoint#{id_u}" playOrder="#{no}">
<navLabel>
- <text>#{dob.obj}</text>
+ <text>#{txt}</text>
</navLabel>
<content src="#{name}" />
WOK
@@ -1989,6 +1991,11 @@ output_epub_cont_seg.close
</div>
}
end
+ def title_heading0
+ DISABLE[:epub][:per_section_title] \
+ ? ''
+ : title_heading('h1','tiny')
+ end
def title_heading1
DISABLE[:epub][:per_section_title] \
? ''
diff --git a/lib/sisu/v5/xhtml_epub2_segments.rb b/lib/sisu/v5/xhtml_epub2_segments.rb
index 07447020..764fcc17 100644
--- a/lib/sisu/v5/xhtml_epub2_segments.rb
+++ b/lib/sisu/v5/xhtml_epub2_segments.rb
@@ -124,8 +124,8 @@ WOK
@@seg_name,@@seg_name_xhtml=[],[]
@@seg_url=@@fn=@@get_hash_to=@@get_hash_fn=''
@@loop_count=@@seg_total=@@tracker=0
- @@is4=@@is3=@@is2=@@is1=0
- @@heading1=@@heading2=@@heading3=@@heading4=0
+ @@is4=@@is3=@@is2=@@is1=@@is0=0
+ @@heading0=@@heading1=@@heading2=@@heading3=@@heading4=0
@@seg[:headings],@@seg[:main],@@seg[:idx],@@seg[:tail],@@seg_subtoc_array,@@seg_endnotes_array,@@seg[:endnote_all]=Array.new(7){[]}
@@seg[:heading_endnotes]=''
@@tablehead,@@number_of_cols=0,0
@@ -155,7 +155,7 @@ WOK
protected
def articles(data)
tracking,newfile=0,0
- @@is4=@@is3=@@is2=@@is1=0
+ @@is4=@@is3=@@is2=@@is1=@@is0=0
printed_endnote_seg='n'
idx_xhtml=nil
if @md.book_idx
@@ -196,35 +196,38 @@ WOK
#end
if (dob.is==:heading \
|| dob.is==:heading_insert) \
- and dob.ln==4
- if dob.ocn==0
- @@heading4=dob.obj
- else @@heading4=dob.obj
- end
+ && dob.ln==4
+ @@heading4=dob.obj
@@is4=newfile=1
end
if (dob.is==:heading \
|| dob.is==:heading_insert) \
- and dob.ln==3
+ && dob.ln==3
@@heading3=dob.obj
@@is4,@@is3=0,1
end
if (dob.is==:heading \
|| dob.is==:heading_insert) \
- and dob.ln==2
+ && dob.ln==2
@@heading2=dob.obj
@@is4,@@is3,@@is2=0,0,1
end
if (dob.is==:heading \
|| dob.is==:heading_insert) \
- and dob.ln==1
+ && dob.ln==1
@@heading1=dob.obj
@@is4,@@is3,@@is2,@@is1=0,0,0,1
end
- if (@@is1 && !@@is2 && !@@is3 && !@@is4)
+ if (dob.is==:heading \
+ || dob.is==:heading_insert) \
+ && dob.ln==0
+ @@heading0=dob.obj
+ @@is4,@@is3,@@is2,@@is1,@@is0=0,0,0,0,1
+ end
+ if (@@is0 && !@@is1 && !@@is2 && !@@is3 && !@@is4)
if not (dob.is==:heading \
|| dob.is==:heading_insert) \
- and dob.ln==1
+ && dob.ln==0
$_ #; check
end
end
@@ -235,7 +238,7 @@ WOK
newfile=0
if (dob.is==:heading \
|| dob.is==:heading_insert) \
- and dob.ln==4
+ && dob.ln==4
if tracking != 0
SiSU_XHTML_EPUB2_Seg::Seg.new(@md).tail
segfilename="#{dir_epub_cont}/#{@@seg_name_xhtml[tracking-1]}#{Sfx[:epub_xhtml]}"
@@ -275,8 +278,8 @@ WOK
end
if (dob.is==:heading \
|| dob.is==:heading_insert) \
- and dob.ln==4 \
- and dob.name
+ && dob.ln==4 \
+ && dob.name
@@get_hash_to=dob.name
@@get_hash_fn=dob.name
end
@@ -302,15 +305,19 @@ WOK
def head(dob)
clean=/<!.*?!>|<:.*?>$/
@p_num ||= ''
- if @@is1==1
+ if @@is0==1
if defined? @md.creator.author \
and @md.creator.author
@author=%{<b>#{@md.creator.author}</b>\n}
end
- ocn=(@@heading1[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
- ? $1
- : ''
- @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn)
+ @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn)
+ txt_obj={ txt: @@heading0, ocn_display: @p_num.ocn_display }
+ format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
+ @@seg[:headings] << format_seg.title_heading0.gsub(clean,'')
+ @@heading0=@@heading0.gsub(/#{$ep[:hsp]}<a name="-[\d*+]+" href="#_[\d*+]+">#{$ep[:hsp]}<sup>[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'')
+ end
+ if @@is1==1
+ @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn)
txt_obj={ txt: @@heading1, ocn_display: @p_num.ocn_display }
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading1.gsub(clean,'')
@@ -318,10 +325,7 @@ WOK
end
if @@is2==1
heading2=@@heading2
- ocn=(heading2[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
- ? $1
- : ''
- @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn)
+ @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn)
txt_obj={ txt: heading2, ocn_display: @p_num.ocn_display }
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading2.gsub(clean,'')
@@ -329,10 +333,7 @@ WOK
end
if @@is3==1
heading3=@@heading3
- ocn=(heading3[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
- ? $1
- : ''
- @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn)
+ @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn)
txt_obj={ txt: heading3, ocn_display: @p_num.ocn_display }
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading3.gsub(clean,'')
@@ -340,10 +341,7 @@ WOK
end
if @@is4==1
heading4=@@heading4
- ocn=(heading4[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
- ? $1
- : ''
- @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn)
+ @p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn)
txt_obj={ txt: heading4, ocn_display: @p_num.ocn_display }
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
@@seg[:headings] << format_seg.title_heading4.gsub(clean,'')
diff --git a/lib/sisu/v5/xml_docbook5.rb b/lib/sisu/v5/xml_docbook5.rb
index dc5de48a..0dddf264 100644
--- a/lib/sisu/v5/xml_docbook5.rb
+++ b/lib/sisu/v5/xml_docbook5.rb
@@ -132,18 +132,20 @@ module SiSU_XML_Docbook_Book
def tags
# collapsed -->
def collapsed
- %w[ 0 1 2 3 4 5 6 ]
+ %w[ 0 1 2 3 4 5 ]
end
def docbook(lc,chlv='')
case lc
- when 1
+ when 0
'book'
+ when 1
+ lc==chlv ? 'chapter' : 'section'
when 2
lc==chlv ? 'chapter' : 'section'
when 3
lc==chlv ? 'chapter' : 'section'
when 4
- lc==chlv ? 'chapter' : 'section'
+ 'section'
when 5
'section'
when 6
@@ -219,7 +221,7 @@ module SiSU_XML_Docbook_Book
doc_position=:body_and_tail
else
filename_docbook.puts structure_build_tag_close(o.lc,h)
- filename_docbook.puts %{#{space*(o.lc-1)}<#{tags.docbook(o.lc,chlv)}#{tag_id}>
+ filename_docbook.puts %{#{space*(o.lc)}<#{tags.docbook(o.lc,chlv)}#{tag_id}>
#{space*o.lc}<title#{id}>
}
end
@@ -238,33 +240,41 @@ module SiSU_XML_Docbook_Book
def structure_build_tag_close(lc,h)
x=[]
case h
+ when 0
+ x << "#{space*0}</#{tags.docbook(0)}>" if (lc <= 0)
when 1
- x << "#{space*0}</#{tags.docbook(1)}>" if (lc <= 1)
+ x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.docbook(0)}>" if (lc <= 0)
when 2
- x << "#{space*1}</#{tags.docbook(2,@chlv)}>" if (lc <= 2)
- x << "#{space*0}</#{tags.docbook(1)}>" if (lc <= 1)
+ x << "#{space*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2)
+ x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.docbook(0)}>" if (lc <= 0)
when 3
- x << "#{space*2}</#{tags.docbook(3,@chlv)}>" if (lc <= 3)
- x << "#{space*1}</#{tags.docbook(2,@chlv)}>" if (lc <= 2)
- x << "#{space*0}</#{tags.docbook(1)}>" if (lc <= 1)
+ x << "#{space*3}</#{tags.docbook(3,@chlv)}>" if (lc <= 3)
+ x << "#{space*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2)
+ x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.docbook(0)}>" if (lc <= 0)
when 4
- x << "#{space*3}</#{tags.docbook(4,@chlv)}>" if (lc <= 4)
- x << "#{space*2}</#{tags.docbook(3,@chlv)}>" if (lc <= 3)
- x << "#{space*1}</#{tags.docbook(2,@chlv)}>" if (lc <= 2)
- x << "#{space*0}</#{tags.docbook(1)}>" if (lc <= 1)
+ x << "#{space*4}</#{tags.docbook(4,@chlv)}>" if (lc <= 4)
+ x << "#{space*3}</#{tags.docbook(3,@chlv)}>" if (lc <= 3)
+ x << "#{space*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2)
+ x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.docbook(0)}>" if (lc <= 0)
when 5
- x << "#{space*4}</#{tags.docbook(5)}>" if (lc <= 5)
- x << "#{space*3}</#{tags.docbook(4,@chlv)}>" if (lc <= 4)
- x << "#{space*2}</#{tags.docbook(3,@chlv)}>" if (lc <= 3)
- x << "#{space*1}</#{tags.docbook(2,@chlv)}>" if (lc <= 2)
- x << "#{space*0}</#{tags.docbook(1)}>" if (lc <= 1)
+ x << "#{space*5}</#{tags.docbook(5)}>" if (lc <= 5)
+ x << "#{space*4}</#{tags.docbook(4,@chlv)}>" if (lc <= 4)
+ x << "#{space*5}</#{tags.docbook(3,@chlv)}>" if (lc <= 3)
+ x << "#{space*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2)
+ x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.docbook(0)}>" if (lc <= 0)
when 6
- x << "#{space*5}</#{tags.docbook(6)}>" if (lc <= 6)
- x << "#{space*4}</#{tags.docbook(5)}>" if (lc <= 5)
- x << "#{space*3}</#{tags.docbook(4,@chlv)}>" if (lc <= 4)
- x << "#{space*2}</#{tags.docbook(3,@chlv)}>" if (lc <= 3)
- x << "#{space*1}</#{tags.docbook(2,@chlv)}>" if (lc <= 2)
- x << "#{space*0}</#{tags.docbook(1)}>" if (lc <= 1)
+ x << "#{space*6}</#{tags.docbook(6)}>" if (lc <= 6)
+ x << "#{space*5}</#{tags.docbook(5)}>" if (lc <= 5)
+ x << "#{space*4}</#{tags.docbook(4,@chlv)}>" if (lc <= 4)
+ x << "#{space*3}</#{tags.docbook(3,@chlv)}>" if (lc <= 3)
+ x << "#{space*2}</#{tags.docbook(2,@chlv)}>" if (lc <= 2)
+ x << "#{space*1}</#{tags.docbook(1,@chlv)}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.docbook(0)}>" if (lc <= 0)
end
x.join("\n")
end
diff --git a/lib/sisu/v5/xml_dom.rb b/lib/sisu/v5/xml_dom.rb
index 22c711d3..c8f3d881 100644
--- a/lib/sisu/v5/xml_dom.rb
+++ b/lib/sisu/v5/xml_dom.rb
@@ -191,11 +191,10 @@ WOK
n=n1=n2=n3=0
if dob.is==:heading
lv=dob.ln
- n=dob.ln - 1
+ n=dob.ln
n1=dob.ln
- n2=dob.ln + 1
- n3=dob.ln + 2
- dob.ln - 3
+ n2=dob.ln + 2
+ n3=dob.ln + 3
else lv=nil
end
tag=if defined? dob.name and dob.name=~/\S+/
@@ -374,7 +373,12 @@ WOK
format_scroll=SiSU_XML_Format::FormatScroll.new(@md,dob) if dob.is==:para and dob.indent ##FIX
x=SiSU_XML_Format::FormatSeg.new(@md,dob)
if dob.is==:heading
- if dob.ln==1
+ if dob.ln==0
+ type="heading_section_#{dob.ln.to_s}"
+ xml_markup(dob)
+ xml_structure(dob,type)
+ dob.obj=x.heading_body0
+ elsif dob.ln==1
type="heading_section_#{dob.ln.to_s}"
xml_markup(dob)
xml_structure(dob,type)
diff --git a/lib/sisu/v5/xml_fictionbook2.rb b/lib/sisu/v5/xml_fictionbook2.rb
index aeb74ef3..6549fa12 100644
--- a/lib/sisu/v5/xml_fictionbook2.rb
+++ b/lib/sisu/v5/xml_fictionbook2.rb
@@ -132,10 +132,11 @@ module SiSU_XML_Fictionbook
def tags
# collapsed -->
def collapsed
- %w[ 0 1 2 3 4 5 6 ]
+ %w[ 0 1 2 3 4 5 ]
end
def fictionbook
- [ 'section',
+ [
+ 'section',
'section',
'section',
'section',
@@ -313,7 +314,7 @@ module SiSU_XML_Fictionbook
h=o.lc
elsif o.is ==:heading_insert \
and o.obj =~/Endnotes/ \
- and o.ln == 2
+ and o.ln == 1
break
elsif (o.of ==:para or o.of ==:block)
filename_fictionbook.puts SiSU_TextUtils::Wrap.new("<p>#{o.obj}#{ocn}</p>",80,6).line_wrap
@@ -327,26 +328,33 @@ module SiSU_XML_Fictionbook
def structure_build_tag_close(lc,h)
x=[]
case h
+ when 0
+ x << "#{space*0}</#{tags.fictionbook[0]}>" if (lc <= 0)
when 1
x << "#{space*1}</#{tags.fictionbook[1]}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.fictionbook[0]}>" if (lc <= 0)
when 2
x << "#{space*2}</#{tags.fictionbook[2]}>" if (lc <= 2)
x << "#{space*1}</#{tags.fictionbook[1]}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.fictionbook[0]}>" if (lc <= 0)
when 3
x << "#{space*3}</#{tags.fictionbook[3]}>" if (lc <= 3)
x << "#{space*2}</#{tags.fictionbook[2]}>" if (lc <= 2)
x << "#{space*1}</#{tags.fictionbook[1]}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.fictionbook[0]}>" if (lc <= 0)
when 4
x << "#{space*4}</#{tags.fictionbook[4]}>" if (lc <= 4)
x << "#{space*3}</#{tags.fictionbook[3]}>" if (lc <= 3)
x << "#{space*2}</#{tags.fictionbook[2]}>" if (lc <= 2)
x << "#{space*1}</#{tags.fictionbook[1]}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.fictionbook[0]}>" if (lc <= 0)
when 5
x << "#{space*5}</#{tags.fictionbook[5]}>" if (lc <= 5)
x << "#{space*4}</#{tags.fictionbook[4]}>" if (lc <= 4)
x << "#{space*3}</#{tags.fictionbook[3]}>" if (lc <= 3)
x << "#{space*2}</#{tags.fictionbook[2]}>" if (lc <= 2)
x << "#{space*1}</#{tags.fictionbook[1]}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.fictionbook[0]}>" if (lc <= 0)
when 6
x << "#{space*6}</#{tags.fictionbook[6]}>" if (lc <= 6)
x << "#{space*5}</#{tags.fictionbook[5]}>" if (lc <= 5)
@@ -354,6 +362,7 @@ module SiSU_XML_Fictionbook
x << "#{space*3}</#{tags.fictionbook[3]}>" if (lc <= 3)
x << "#{space*2}</#{tags.fictionbook[2]}>" if (lc <= 2)
x << "#{space*1}</#{tags.fictionbook[1]}>" if (lc <= 1)
+ x << "#{space*0}</#{tags.fictionbook[0]}>" if (lc <= 0)
end
x.join("\n")
end
diff --git a/lib/sisu/v5/xml_format.rb b/lib/sisu/v5/xml_format.rb
index ada32a39..7694f56b 100644
--- a/lib/sisu/v5/xml_format.rb
+++ b/lib/sisu/v5/xml_format.rb
@@ -298,30 +298,34 @@ WOK
%{<p class="norm">#{@p_num.name}#{@headname}#{@dob.obj} </p>} +
%{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
end
- def heading_body1
+ def heading_body0
%{<h1 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h1>} +
%{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
end
- def heading_body2
+ def heading_body1
%{<h2 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h2>} +
%{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
end
- def heading_body3
+ def heading_body2
%{<h3 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h3>} +
%{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
end
- def heading_body4
+ def heading_body3
%{<h4 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h4>} +
%{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
end
- def heading_body5
+ def heading_body4
%{<h5 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h5>} +
%{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
end
- def heading_body6
+ def heading_body5
%{<h6 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h6>} +
%{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
end
+ def heading_body6
+ %{<h7 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h7>} +
+ %{<p class="paranum"><font size="1" color="#777777">&nbsp;&nbsp;#{@dob.ocn}</font></p>\n}
+ end
end
class ParagraphNumber
def initialize(md,ocn)
@@ -1090,6 +1094,9 @@ WOK
def heading_body
heading_normal('p','norm')
end
+ def heading_body0
+ heading_normal('h1','norm')
+ end
def heading_body1
heading_normal('h1','norm')
end