From 220c63e5ac25d2539ffb11b5348bad339a268cb5 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sat, 21 Sep 2013 00:02:15 -0400 Subject: v4 v5: minor cleaning --- lib/sisu/v4/hub.rb | 6 +++--- lib/sisu/v4/sysenv.rb | 24 +++++++----------------- lib/sisu/v4/utils.rb | 1 + lib/sisu/v5/hub.rb | 6 +++--- lib/sisu/v5/sysenv.rb | 24 +++++++----------------- lib/sisu/v5/utils.rb | 1 + 6 files changed, 22 insertions(+), 40 deletions(-) (limited to 'lib') diff --git a/lib/sisu/v4/hub.rb b/lib/sisu/v4/hub.rb index 5f80e795..ebe9ccf4 100644 --- a/lib/sisu/v4/hub.rb +++ b/lib/sisu/v4/hub.rb @@ -75,9 +75,9 @@ module SiSU class HubMaster def initialize(argv) pwd_the=Dir.pwd - begin #% select what to do - opt=SiSU_Commandline::Options.new(argv) - SiSU::Processing.new(opt).actions + begin #% select what to do (set options & start processing (files selected if any)) + opt=SiSU_Commandline::Options.new(argv) # command line selection of what to do, files & operations set + SiSU::Processing.new(opt).actions # do it rescue cmd=(opt ? opt.cmd : '') SiSU_Screen::Ansi.new(cmd,$!,$@).rescue do diff --git a/lib/sisu/v4/sysenv.rb b/lib/sisu/v4/sysenv.rb index cfbbc0c1..4db204d8 100644 --- a/lib/sisu/v4/sysenv.rb +++ b/lib/sisu/v4/sysenv.rb @@ -281,7 +281,7 @@ module SiSU_Env @@tx ||=SiSU_Viz::TeX.new end def rc_path_options - @rc_path=[ + [ "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/#{SiSU_version_dir}", "#{$sisu_document_markup_directory_base_fixed_path}/.sisu", "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/#{SiSU_version_dir}", @@ -297,14 +297,12 @@ module SiSU_Env S_CONF[:header_make] end def makefile - #if @markup_dir_changed_ - rc_path_options.each do |v| - if FileTest.exist?("#{v}/#{makefile_name}") - @sisu_make_path=v - break - end + rc_path_options.each do |v| + if FileTest.exist?("#{v}/#{makefile_name}") + @sisu_make_path=v + break end - #end + end @sisu_make_file_path=@sisu_make_path \ ? "#{@sisu_make_path}/#{makefile_name}" : nil @@ -552,7 +550,6 @@ module SiSU_Env n =n + '.' + @fn[:t] x << { f: "#{@fn[:m]}.#{@fn[:t]}", l: lng_base, n: n } end - #x << { f: "#{@fns}", l: lng_base } langs.each do |l| lng=SiSU_Env::StandardiseLanguage.new(l) if FileTest.file?("#{@fn[:m]}~#{lng.code}.#{@fn[:t]}") @@ -617,16 +614,10 @@ module SiSU_Env @m=@m.uniq end def filename(code,name,suffix) - #d=SiSU_Env::InfoEnv.new(@fns) - #fnl=d.i18n.lang_filename(code) "#{name}#{suffix}" - #if code - # "#{fnl[:pre]}#{name}#{fnl[:mid]}#{suffix}#{fnl[:post]}" - #else "#{name}#{suffix}" - #end end def lang(code) - @fn={ + { html: filename(code,'','.html'), book_index: filename(code,'book_index','.html'), concordance: filename(code,'concordance','.html'), @@ -671,7 +662,6 @@ module SiSU_Env book_idx_epub: filename(code,'book_index','.xhtml'), epub_concord: filename(code,'concordance','.xhtml'), } - @fn end end class SystemCall diff --git a/lib/sisu/v4/utils.rb b/lib/sisu/v4/utils.rb index b120cc01..d18e2180 100644 --- a/lib/sisu/v4/utils.rb +++ b/lib/sisu/v4/utils.rb @@ -151,6 +151,7 @@ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark({ m: %{ }}) if t_o=~/^```/m SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark(%{ code: #{@@flag['code']}, open --> "#{t_o}" }) \ if t_o=~/^```/m +SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark("open -->") SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark("open -->",:green) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:green,"open -->") SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark("open -->") diff --git a/lib/sisu/v5/hub.rb b/lib/sisu/v5/hub.rb index 08ad7b58..fcbaa67a 100644 --- a/lib/sisu/v5/hub.rb +++ b/lib/sisu/v5/hub.rb @@ -75,9 +75,9 @@ module SiSU class HubMaster def initialize(argv) pwd_the=Dir.pwd - begin #% select what to do - opt=SiSU_Commandline::Options.new(argv) - SiSU::Processing.new(opt).actions + begin #% select what to do (set options & start processing (files selected if any)) + opt=SiSU_Commandline::Options.new(argv) # command line selection of what to do, files & operations set + SiSU::Processing.new(opt).actions # do it rescue cmd=(opt ? opt.cmd : '') SiSU_Screen::Ansi.new(cmd,$!,$@).rescue do diff --git a/lib/sisu/v5/sysenv.rb b/lib/sisu/v5/sysenv.rb index 3092532b..62ef451f 100644 --- a/lib/sisu/v5/sysenv.rb +++ b/lib/sisu/v5/sysenv.rb @@ -281,7 +281,7 @@ module SiSU_Env @@tx ||=SiSU_Viz::TeX.new end def rc_path_options - @rc_path=[ + [ "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/#{SiSU_version_dir}", "#{$sisu_document_markup_directory_base_fixed_path}/.sisu", "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/#{SiSU_version_dir}", @@ -297,14 +297,12 @@ module SiSU_Env S_CONF[:header_make] end def makefile - #if @markup_dir_changed_ - rc_path_options.each do |v| - if FileTest.exist?("#{v}/#{makefile_name}") - @sisu_make_path=v - break - end + rc_path_options.each do |v| + if FileTest.exist?("#{v}/#{makefile_name}") + @sisu_make_path=v + break end - #end + end @sisu_make_file_path=@sisu_make_path \ ? "#{@sisu_make_path}/#{makefile_name}" : nil @@ -552,7 +550,6 @@ module SiSU_Env n =n + '.' + @fn[:t] x << { f: "#{@fn[:m]}.#{@fn[:t]}", l: lng_base, n: n } end - #x << { f: "#{@fns}", l: lng_base } langs.each do |l| lng=SiSU_Env::StandardiseLanguage.new(l) if FileTest.file?("#{@fn[:m]}~#{lng.code}.#{@fn[:t]}") @@ -617,16 +614,10 @@ module SiSU_Env @m=@m.uniq end def filename(code,name,suffix) - #d=SiSU_Env::InfoEnv.new(@fns) - #fnl=d.i18n.lang_filename(code) "#{name}#{suffix}" - #if code - # "#{fnl[:pre]}#{name}#{fnl[:mid]}#{suffix}#{fnl[:post]}" - #else "#{name}#{suffix}" - #end end def lang(code) - @fn={ + { html: filename(code,'','.html'), book_index: filename(code,'book_index','.html'), concordance: filename(code,'concordance','.html'), @@ -671,7 +662,6 @@ module SiSU_Env book_idx_epub: filename(code,'book_index','.xhtml'), epub_concord: filename(code,'concordance','.xhtml'), } - @fn end end class SystemCall diff --git a/lib/sisu/v5/utils.rb b/lib/sisu/v5/utils.rb index 8ebc3647..52ca22d0 100644 --- a/lib/sisu/v5/utils.rb +++ b/lib/sisu/v5/utils.rb @@ -151,6 +151,7 @@ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark({ m: %{ }}) if t_o=~/^```/m SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark(%{ code: #{@@flag['code']}, open --> "#{t_o}" }) \ if t_o=~/^```/m +SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark("open -->") SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark("open -->",:green) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:green,"open -->") SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark("open -->") -- cgit v1.2.3 From 6a8a7c3cf32fa1920bfcd62c0702b14dd84e6d65 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sat, 21 Sep 2013 00:05:24 -0400 Subject: v4: dal, objects, store book index as hash (simplify downstream processing) * merge v5 * db, book index, convert hash back to string (associated downstream processing change) --- lib/sisu/v4/dal_doc_str.rb | 54 +++++++++++++++++++++++- lib/sisu/v4/dal_idx.rb | 101 ++++++++++++++------------------------------- lib/sisu/v4/db_import.rb | 30 +++++++++++--- 3 files changed, 108 insertions(+), 77 deletions(-) (limited to 'lib') diff --git a/lib/sisu/v4/dal_doc_str.rb b/lib/sisu/v4/dal_doc_str.rb index 2a3e6b83..e4a0be2b 100644 --- a/lib/sisu/v4/dal_doc_str.rb +++ b/lib/sisu/v4/dal_doc_str.rb @@ -168,6 +168,55 @@ module SiSU_DAL_DocumentStructureExtract end [str,tags] end + def rgx_idx_ocn_seg + @rgx_idx_ocn_seg=/(.+?)\s*[+](\d+)/ + end + def construct_idx_array_and_hash(idxraw) + idx_array_raw=idxraw.scan(/[^;]+/) + idx_hash,idx_array,idx_lst={},[],[] + idx_array_raw.each do |idx| + idx_lst=case idx + when /\S+?\s*:/ + idx_couplet_tmp=[] + idx_couplet=idx.scan(/\s*[^:]+\s*/) + if idx_couplet[1] =~/[|]/ + idx_couplet_tmp << idx_couplet[0] << idx_couplet[1].scan(/\s*[^|]+\s*/) + else + idx_couplet_tmp << idx_couplet[0] << [idx_couplet[1]] + end + idx_couplet=idx_couplet_tmp + else [idx] + end + term_nodes=[] + idx_lst.each do |term_node| + case term_node + when String + term_node=term_node[0].chr.capitalize + term_node[1,term_node.length] + term_node=(term_node =~/.+?[+]\d+/) \ + ? term_node + : (term_node + '+0') + term_nodes << term_node + use,plus=rgx_idx_ocn_seg.match(term_node)[1,2] + @use=use.strip + idx_hash[@use]={ sub: [], plus: plus } unless idx_hash[@use] and defined? idx_hash[@use] + when Array + subterm_nodes=[] + term_node.each do |subterm_node| + subterm_node=(subterm_node =~/.+?[+]\d+/) \ + ? subterm_node + : (subterm_node + '+0') + subterm_nodes << subterm_node + sub,sub_plus=rgx_idx_ocn_seg.match(subterm_node)[1,2] + idx_hash[@use]={ sub: [], plus: 0 } unless idx_hash[@use] and defined? idx_hash[@use] + idx_hash[@use][:sub] << {sub.strip => { plus: sub_plus }} + end + term_nodes << subterm_nodes + end + end + idx_array << term_nodes + end + { hash: idx_hash, array: idx_array } + end def identify_parts tuned_file=[] @tuned_block,@tuned_code=[],[] @@ -205,9 +254,10 @@ module SiSU_DAL_DocumentStructureExtract idx=if t_o=~/^=\{(.+)\}\s*$\Z/m; m=$1 m=m.split(/\n/).join(' '). gsub(/\s+([|:;])\s+/,'\1'). - gsub(/\s+([+])\s+/,'\1') + gsub(/\s+([+]\d+)\s+/,'\1') t_o=t_o.gsub(/\n=\{.+\}\s*$\Z/m,'') - m + idx_array_and_hash=construct_idx_array_and_hash(m) + idx_array_and_hash[:hash] else nil end end diff --git a/lib/sisu/v4/dal_idx.rb b/lib/sisu/v4/dal_idx.rb index 96486858..5fbfe5df 100644 --- a/lib/sisu/v4/dal_idx.rb +++ b/lib/sisu/v4/dal_idx.rb @@ -84,13 +84,11 @@ module SiSU_DAL_BookIndex @seg=dob.name end if defined? dob.idx \ - and dob.idx.is_a?(String) \ - and not dob.idx.empty? - idx_array << "#{dob.idx}~#{dob.ocn}~#{@seg}" + and dob.idx.is_a?(Hash) + idx_array << {idx: dob.idx, ocn: dob.ocn, seg: @seg } end tuned_file << dob if dob end - idx_array=construct_idx_array(idx_array) if idx_array.length > 0 if idx_array.length > 0 the_idx=construct_book_index(idx_array) sisu_markup_idx_rel,sisu_markup_idx_rel_html_seg,html_idx,xhtml_idx=nil,nil,nil,nil @@ -101,61 +99,28 @@ module SiSU_DAL_BookIndex end [tuned_file,sisu_markup_idx_rel,sisu_markup_idx_rel_html_seg,html_idx,xhtml_idx] end - def construct_idx_array(idx_array) - idx_lst=[] - idx_array.each do |idx| - idx_list,ocn,seg=@rgx_idx_ocn_seg.match(idx)[1..3] - idx_lst <<=if idx_list =~/;/ - g=idx_list.scan(/[^;]+/) - idxl=[] - g.each do |i| - i=i.strip - idxl << { rough_idx: i, ocn: ocn, seg: seg } - end - idxl - else { rough_idx: idx_list, ocn: ocn, seg: seg } - end - end - idx_lst=idx_lst.flatten - end def construct_book_index(idx_array) the_idx={} idx_array.each do |idx| - if idx[:rough_idx] =~/[|]/ \ - && idx[:rough_idx] !~/[:]/ - if @md.opt.cmd =~/[MVv]/ - p 'book index error? --> ' + idx[:rough_idx] - end - else - idx_lst=idx[:rough_idx].scan(/[^|:]+/) - idx_lst[0]=idx_lst[0].strip - if idx_lst[0] =~/.+?\+\d+/ - use=/(.+?)\+(?:\d+)/.match(idx_lst[0])[1] - else use=idx_lst[0] - end - use=use[0].chr.capitalize + use[1,use.length] - the_idx[use]={} unless the_idx[use] and defined? the_idx[use] - idx_lst.each do |i| - i=i.strip - i,r=/(.+?)\+(\d+)/.match(i)[1,2] if i =~/.+?\+\d+/ - x=if idx_lst.length==1 or idx_lst[0].gsub(/\+\d+/,'')==i - the_idx[use]['term_node_lev1']=[] unless the_idx[use]['term_node_lev1'] and defined? the_idx[use]['term_node_lev1'] - x=if r - the_idx[use]['term_node_lev1'] << { ocn: idx[:ocn], range: "#{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}", seg: idx[:seg] } - "#{i} #{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}" - else - the_idx[use]['term_node_lev1'] << { ocn: idx[:ocn], seg: idx[:seg] } - "#{i} #{idx[:ocn]}" - end - else - the_idx[use]['term_node_lev2']={} unless the_idx[use]['term_node_lev2'] and defined? the_idx[use]['term_node_lev2'] - the_idx[use]['term_node_lev2'][i]=[] unless the_idx[use]['term_node_lev2'][i] and defined? the_idx[use]['term_node_lev2'][i] - x=if r - the_idx[use]['term_node_lev2'][i] << { ocn: idx[:ocn], range: "#{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}", seg: idx[:seg] } - "#{idx_lst[0]}:#{i} #{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}" - else - the_idx[use]['term_node_lev2'][i] << { ocn: idx[:ocn], seg: idx[:seg] } - "#{idx_lst[0]}:#{i} #{idx[:ocn]}" + idx[:idx].each_pair do |term,term_info| + location=(term_info[:plus].to_i > 0) \ + ? (%{#{idx[:ocn]}-#{idx[:ocn].to_i + term_info[:plus].to_i}}) + : idx[:ocn].to_s + the_idx[term]={} unless the_idx[term] and defined? the_idx[term] + the_idx[term]['node_0_terms']=[] unless the_idx[term]['node_0_terms'] and defined? the_idx[term]['node_0_terms'] + the_idx[term]['node_0_terms'] << { ocn: idx[:ocn], range: location, seg: idx[:seg] } + if term_info[:sub].is_a?(Array) \ + and term_info[:sub].length > 0 + term_info[:sub].each do |y| + y.each_pair do |subterm,subterm_info| + location=(subterm_info[:plus].to_i > 0) \ + ? (%{#{idx[:ocn]}-#{idx[:ocn].to_i + subterm_info[:plus].to_i}}) + : idx[:ocn].to_s + the_idx[term]={} unless the_idx[term] and defined? the_idx[term] + the_idx[term]['node_0_terms']=[] unless the_idx[term]['node_0_terms'] and defined? the_idx[term]['node_0_terms'] + the_idx[term]['node_1_subterms']={} unless the_idx[term]['node_1_subterms'] and defined? the_idx[term]['node_1_subterms'] + the_idx[term]['node_1_subterms'][subterm]=[] unless the_idx[term]['node_1_subterms'][subterm] and defined? the_idx[term]['node_1_subterms'][subterm] + the_idx[term]['node_1_subterms'][subterm] << { ocn: idx[:ocn], range: location, seg: idx[:seg] } end end end @@ -230,8 +195,8 @@ module SiSU_DAL_BookIndex p 'array error? -->' print x elsif x.is_a?(Hash) - if x['term_node_lev1'].is_a?(Array) - x['term_node_lev1'].each do |a| + if x['node_0_terms'].is_a?(Array) + x['node_0_terms'].each do |a| if a[:range] idx[:sst_rel_html_seg][@o]=idx[:sst_rel_html_seg][@o] + %{#{Mx[:lnk_o]}#{a[:range]}#{Mx[:lnk_c]}#{Mx[:rel_o]}/#{a[:seg]}.html##{a[:ocn]}#{Mx[:rel_c]}, } idx[:sst_rel][@t]=idx[:sst_rel][@t] + %{#{Mx[:lnk_o]}#{a[:range]}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{a[:ocn]}#{Mx[:rel_c]}, } @@ -250,11 +215,9 @@ module SiSU_DAL_BookIndex idx[:html][@q]=idx[:html][@q] + '

' idx[:xhtml][@r]=idx[:xhtml][@r] + '

' end - if x['term_node_lev2'] - m=x['term_node_lev2'] - m=m.sort - m.each do |k,y| - if k !~/term_node_lev1/ + if x['node_1_subterms'] + x['node_1_subterms'].sort.each do |k,y| + if k !~/node_0_terms/ idx[:sst_rel_html_seg][@o]=idx[:sst_rel_html_seg][@o] + %{#{k}, } idx[:sst_rel][@t]=idx[:sst_rel][@t] + %{#{k}, } idx[:html][@q]=idx[:html][@q] + %{\n

#{k}, } @@ -298,8 +261,8 @@ module SiSU_DAL_BookIndex p 'array error? -->' print x elsif x.is_a?(Hash) - if x['term_node_lev1'].is_a?(Array) - x['term_node_lev1'].each do |a| + if x['node_0_terms'].is_a?(Array) + x['node_0_terms'].each do |a| if a[:range] print a[:range] + ', ' elsif a[:ocn] @@ -308,11 +271,9 @@ module SiSU_DAL_BookIndex end end end - if x['term_node_lev2'] - m=x['term_node_lev2'] - m=m.sort - m.each do |k,y| - if k !~/term_node_lev1/ + if x['node_1_subterms'] + x['node_1_subterms'].sort.each do |k,y| + if k !~/node_0_terms/ print "\n\t" + k + ', ' y.each do |z| if z[:range] diff --git a/lib/sisu/v4/db_import.rb b/lib/sisu/v4/db_import.rb index 240efd67..0384795a 100644 --- a/lib/sisu/v4/db_import.rb +++ b/lib/sisu/v4/db_import.rb @@ -209,6 +209,26 @@ module SiSU_DbImport end def pf_db_import_transaction_close end + def book_idx_hash_to_str(book_idx) + book_idx=book_idx ? book_idx : '' + book_idx_str,book_subidx_part='','' + if not book_idx.empty? + book_idx_str='' + book_idx.each_pair do |k0,v0| + book_idx_str << %{#{k0}+#{v0[:plus]}} + book_subidx_part='' + if v0[:sub].length > 0 + v0[:sub].each do |subterms| + subterms.each_pair do |k1,v1| + book_subidx_part << %{\n #{k1}+#{v1[:plus]} | } + end + end + book_idx_str=book_idx_str + ':' + book_subidx_part + end + end + end + book_idx_str + end def db_import_metadata #% import documents - populate database print %{ #{@cX.grey}import documents dbi_unit #{@cX.off} } if @opt.cmd =~/vVM/ @tp={} @@ -285,7 +305,7 @@ module SiSU_DbImport plaintext=@col[:body].dup plaintext=strip_markup(plaintext) @col[:plaintext]=clean_searchable_text(plaintext) - book_idx=data.idx ? data.idx : '' + book_idx=book_idx_hash_to_str(data.idx) @col[:book_idx]=clean_searchable_text(book_idx) if @en[0] then @en_a,@en_z=@en[0].first,@en[0].last end @@ -321,7 +341,7 @@ module SiSU_DbImport plaintext=@col[:body].dup plaintext=strip_markup(plaintext) @col[:plaintext]=clean_searchable_text(plaintext) - book_idx=data.idx ? data.idx : '' + book_idx=book_idx_hash_to_str(data.idx) @col[:book_idx]=clean_searchable_text(book_idx) @en_a,@en_z=@en[0].first,@en[0].last if @en[0] @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0] @@ -353,7 +373,7 @@ module SiSU_DbImport plaintext=@col[:body].dup plaintext=strip_markup(plaintext) @col[:plaintext]=clean_searchable_text(plaintext) - book_idx=data.idx ? data.idx : '' + book_idx=book_idx_hash_to_str(data.idx) @col[:book_idx]=clean_searchable_text(book_idx) @en_a,@en_z=@en[0].first,@en[0].last if @en[0] @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0] @@ -383,7 +403,7 @@ module SiSU_DbImport plaintext=@col[:body].dup plaintext=strip_markup(plaintext) @col[:plaintext]=clean_searchable_text(plaintext) - book_idx=data.idx ? data.idx : '' + book_idx=book_idx_hash_to_str(data.idx) @col[:book_idx]=clean_searchable_text(book_idx) @en_a,@en_z=@en[0].first,@en[0].last if @en[0] @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0] @@ -441,7 +461,7 @@ module SiSU_DbImport plaintext=@col[:body].dup plaintext=strip_markup(plaintext) @col[:plaintext]=clean_searchable_text(plaintext) - book_idx=data.idx ? data.idx : '' + book_idx=book_idx_hash_to_str(data.idx) @col[:book_idx]=clean_searchable_text(book_idx) t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint) @tuple_array << t.tuple -- cgit v1.2.3 From 235f83d470866decff55a50c0ea380ab174457d8 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sat, 21 Sep 2013 00:12:01 -0400 Subject: v4 v5: i18n CJK: zh ja ko, add languages Chinese, Japanese, Korean * texpdf, has large texlive xetex dependencies (Korean untested) --- lib/sisu/v4/constants.rb | 2 +- lib/sisu/v4/dal_syntax.rb | 2 +- lib/sisu/v4/i18n.rb | 6 ++++++ lib/sisu/v4/options.rb | 11 ++++------ lib/sisu/v4/param_make.rb | 24 ++++++++++++++++++++++ lib/sisu/v4/sysenv.rb | 27 +++++++++++++++++++++++++ lib/sisu/v4/texpdf_format.rb | 48 +++++++++++++++++++++++++++++++++++++++++--- lib/sisu/v5/constants.rb | 2 +- lib/sisu/v5/dal_syntax.rb | 2 +- lib/sisu/v5/i18n.rb | 6 ++++++ lib/sisu/v5/options.rb | 11 ++++------ lib/sisu/v5/param_make.rb | 24 ++++++++++++++++++++++ lib/sisu/v5/sysenv.rb | 27 +++++++++++++++++++++++++ lib/sisu/v5/texpdf_format.rb | 48 +++++++++++++++++++++++++++++++++++++++++--- 14 files changed, 216 insertions(+), 24 deletions(-) (limited to 'lib') diff --git a/lib/sisu/v4/constants.rb b/lib/sisu/v4/constants.rb index 28bb2f49..962b1ca4 100644 --- a/lib/sisu/v4/constants.rb +++ b/lib/sisu/v4/constants.rb @@ -209,7 +209,7 @@ Px={ po_subscript_o: ',{', po_subscript_c: '},', po_hilite_o: '*{', po_hilite_c: '}*', po_monospace_o: '#{', po_monospace_c: '}#', - lng_lst: %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi], + lng_lst: %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it ja ko la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi zh], lv1: '*', lv2: '=', lv3: '=', diff --git a/lib/sisu/v4/dal_syntax.rb b/lib/sisu/v4/dal_syntax.rb index c49f41f7..0f57307e 100644 --- a/lib/sisu/v4/dal_syntax.rb +++ b/lib/sisu/v4/dal_syntax.rb @@ -332,7 +332,7 @@ module SiSU_DAL_Syntax dob end def fontface(dob) - leader=/^|#{Mx[:gl_c]}|\s+|['"]|[#{Mx[:nbsp]}#{Mx[:fa_o_c]}#{Mx[:fa_c]}#{Mx[:lnk_o]}#{Mx[:br_nl]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:tc_c]}#{Mx[:tc_p]}]|[\(\[\{]|\>/ + leader=/^|#{Mx[:gl_c]}|\s+|['"]|[#{Mx[:nbsp]}#{Mx[:fa_o_c]}#{Mx[:fa_c]}#{Mx[:lnk_o]}#{Mx[:br_nl]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:tc_c]}#{Mx[:tc_p]}]|[\(\[\{]|[、。]|\>/ dob=fontface_lines(dob,leader) dob.obj=dob.obj.gsub(/(#{leader})\*\{(.+?)\}\*/m, "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis diff --git a/lib/sisu/v4/i18n.rb b/lib/sisu/v4/i18n.rb index 3bccc1fc..7480e15f 100644 --- a/lib/sisu/v4/i18n.rb +++ b/lib/sisu/v4/i18n.rb @@ -91,6 +91,8 @@ module SiSU_i18n ia: { c: 'ia', n: 'Interlingua', t: 'Interlingua', xlp: 'interlingua' }, is: { c: 'is', n: 'Icelandic', t: 'Icelandic', xlp: 'icelandic' }, it: { c: 'it', n: 'Italian', t: 'Italiano', xlp: 'italian' }, + ja: { c: 'ja', n: 'Japanese', t: '日本語 (Nihongo)', xlp: 'japanese' }, + ko: { c: 'ko', n: 'Korean', t: 'Korean', xlp: 'korean' }, la: { c: 'la', n: 'Latin', t: 'Latin', xlp: 'latin' }, lo: { c: 'lo', n: 'Lao', t: 'Lao', xlp: 'lao' }, lt: { c: 'lt', n: 'Lithuanian', t: 'Lithuanian', xlp: 'lithuanian' }, @@ -122,6 +124,7 @@ module SiSU_i18n ur: { c: 'ur', n: 'Urdu', t: 'Urdu', xlp: 'urdu' }, us: { c: 'en', n: 'English (American)',t: 'English', xlp: 'english' }, vi: { c: 'vi', n: 'Vietnamese', t: 'Vietnamese', xlp: 'vietnamese' }, + zh: { c: 'zh', n: 'Chinese', t: '中文', xlp: 'chinese' }, en: { c: 'en', n: 'English', t: 'English', xlp: 'english' }, xx: { c: 'xx', n: 'Default', t: 'English', xlp: 'english' }, } @@ -154,6 +157,8 @@ module SiSU_i18n 'ia' => table[:ia], 'is' => table[:is], 'it' => table[:it], + 'ja' => table[:ja], + 'ko' => table[:ko], 'la' => table[:la], 'lo' => table[:lo], 'lt' => table[:lt], @@ -185,6 +190,7 @@ module SiSU_i18n 'ur' => table[:ur], 'us' => table[:en], 'vi' => table[:vi], + 'zh' => table[:zh], 'en' => table[:en], 'xx' => table[:en] } diff --git a/lib/sisu/v4/options.rb b/lib/sisu/v4/options.rb index 9d6821ac..54ef7ccc 100644 --- a/lib/sisu/v4/options.rb +++ b/lib/sisu/v4/options.rb @@ -66,14 +66,12 @@ module SiSU_Commandline require_relative 'param_make' # param_make.rb @@sisu_call_origin_path=nil class HeaderCommon - def initialize(make_instruct_array) - @make_instruct_array=make_instruct_array - end def sisu_document_make_instructions @pagenew=@pagebreak=@pageline=@toc=@lv1=@lv2=@lv3=@lv4=@lv5=@lv6=@num_top=@i18n=@man_section=@emphasis_set_to=@bold_match_list=@italics_match_list=@substitution_match_list=@footer_links=@home_button_links=@links=nil + make_instruct_array=SiSU_Env::GetInit.new.sisu_document_make.makefile_read @makeset=false - if @make_instruct_array - @make_instruct_array.each do |para| #% scan document + if make_instruct_array + make_instruct_array.each do |para| #% scan document if para =~/^(?:@make:|@links:)[+-]?\s/ case para when /^@make:(.+)/m #% header processing - make @@ -153,8 +151,7 @@ module SiSU_Commandline @base_stub=@base_path.gsub(u,'\1') @a=sisu_glob_rules(a) @a.freeze - make_instruct_array=SiSU_Env::GetInit.new.sisu_document_make.makefile_read - @make_instructions=HeaderCommon.new(make_instruct_array).sisu_document_make_instructions + @make_instructions=HeaderCommon.new.sisu_document_make_instructions @make_instructions_pod=nil init end diff --git a/lib/sisu/v4/param_make.rb b/lib/sisu/v4/param_make.rb index 616ef77d..32576fb8 100644 --- a/lib/sisu/v4/param_make.rb +++ b/lib/sisu/v4/param_make.rb @@ -360,6 +360,30 @@ module SiSU_Param_Make ? @h['texpdf_font_mono'] : @env.font.texpdf.mono end + def cjk + @h['texpdf_font_cjk'] \ + && (@h['texpdf_font_cjk']=~/\S{3,}/) \ + ? @h['texpdf_font_cjk'] + : @env.font.texpdf.cjk + end + def cjk_zh + @h['texpdf_font_cjk_zh'] \ + && (@h['texpdf_font_cjk_zh']=~/\S{3,}/) \ + ? @h['texpdf_font_cjk_zh'] + : @env.font.texpdf.cjk_zh + end + def cjk_ja + @h['texpdf_font_cjk_ja'] \ + && (@h['texpdf_font_cjk_ja']=~/\S{3,}/) \ + ? @h['texpdf_font_cjk_ja'] + : @env.font.texpdf.cjk_ja + end + def cjk_ko + @h['texpdf_font_cjk_ko'] \ + && (@h['texpdf_font_cjk_ko']=~/\S{3,}/) \ + ? @h['texpdf_font_cjk_ko'] + : @env.font.texpdf.cjk_ko + end self end def promo diff --git a/lib/sisu/v4/sysenv.rb b/lib/sisu/v4/sysenv.rb index 4db204d8..b13d5a88 100644 --- a/lib/sisu/v4/sysenv.rb +++ b/lib/sisu/v4/sysenv.rb @@ -1780,6 +1780,9 @@ WOK end def font def texpdf + # you may wish to check selected font against available fonts: + # fc-list :outline -f "%{family}\n" + # fc-list :lang=ja def main (defined? @rc['default']['texpdf_font']) \ && (@rc['default']['texpdf_font']=~/\S{3,}/) \ @@ -1804,6 +1807,30 @@ WOK ? @rc['default']['texpdf_font_mono'] : 'Liberation Mono' end + def cjk + (defined? @rc['default']['texpdf_font_cjk']) \ + && (@rc['default']['texpdf_font_cjk']=~/\S{3,}/) \ + ? @rc['default']['texpdf_font_cjk'] + : 'IPAGothic' # 'IPAGothic' # 'IPAMincho' # 'TakaoMincho' # 'VL Gothic' + end + def cjk_zh + (defined? @rc['default']['texpdf_font_cjk_zh']) \ + && (@rc['default']['texpdf_font_cjk_zh']=~/\S{3,}/) \ + ? @rc['default']['texpdf_font_cjk_zh'] + : 'IPAGothic' + end + def cjk_ja + (defined? @rc['default']['texpdf_font_cjk_ja']) \ + && (@rc['default']['texpdf_font_cjk_ja']=~/\S{3,}/) \ + ? @rc['default']['texpdf_font_cjk_ja'] + : 'IPAGothic' + end + def cjk_ko + (defined? @rc['default']['texpdf_font_cjk_ko']) \ + && (@rc['default']['texpdf_font_cjk_ko']=~/\S{3,}/) \ + ? @rc['default']['texpdf_font_cjk_ko'] + : 'IPAGothic' + end self end self diff --git a/lib/sisu/v4/texpdf_format.rb b/lib/sisu/v4/texpdf_format.rb index b010bb08..d87a457e 100644 --- a/lib/sisu/v4/texpdf_format.rb +++ b/lib/sisu/v4/texpdf_format.rb @@ -794,11 +794,52 @@ module SiSU_TeX_Pdf @md.make.texpdf_font.mono else @env.font.texpdf.mono end - # you may wish to check selected font against avaiable fonts: + texpdf_font_cjk=if @md.opt.lng =~/zh/ \ + and defined? @md.make.texpdf_font.cjk_zh \ + and not @md.make.texpdf_font.cjk_zh.nil? \ + and @md.make.texpdf_font.cjk_zh=~/\S{3,}/ + @md.make.texpdf_font.cjk_zh + elsif @md.opt.lng =~/ja/ \ + and defined? @md.make.texpdf_font.cjk_ja \ + and not @md.make.texpdf_font.cjk_ja.nil? \ + and @md.make.texpdf_font.cjk_ja=~/\S{3,}/ + @md.make.texpdf_font.cjk_ja + elsif @md.opt.lng =~/ko/ \ + and defined? @md.make.texpdf_font.cjk_ko \ + and not @md.make.texpdf_font.cjk_ko.nil? \ + and @md.make.texpdf_font.cjk_ko=~/\S{3,}/ + @md.make.texpdf_font.cjk_ko + elsif @md.opt.lng =~/(?:zh|ja|ko)/ \ + and defined? @md.make.texpdf_font.cjk \ + and not @md.make.texpdf_font.cjk.nil? \ + and @md.make.texpdf_font.cjk=~/\S{3,}/ + @md.make.texpdf_font.cjk + else + case @md.opt.lng + when /zh/; @env.font.texpdf.cjk_zh + when /ja/; @env.font.texpdf.cjk_ja + when /ko/; @env.font.texpdf.cjk_ko + else @env.font.texpdf.cjk + end + end + # you may wish to check selected font against available fonts: # fc-list :outline -f "%{family}\n" + # fc-list :lang=ja case @tex2pdf when /xe/ - <<-WOK + if @md.opt.lng =~/(?:zh|ja|ko)/ + <<-WOK +\\usepackage{ucs, fontspec, xltxtra, xunicode, xeCJK} +\\setmainCJKlanguage{#{tex_head_lang[:mainlang]}} +\\setCJKmainfont{#{texpdf_font_cjk}} +\\XeTeXlinebreaklocale "#{tex_head_lang[:mainlang]}" +\\XeTeXlinebreakskip = 0pt plus 1pt +\\setotherlanguage{#{tex_head_lang[:otherlang]}} +\\setmainfont{#{texpdf_font}} +\\setmonofont[Scale=0.85]{#{texpdf_font_mono}} + WOK + else + <<-WOK \\usepackage{polyglossia, ucs, fontspec, xltxtra, xunicode} \\setmainlanguage{#{tex_head_lang[:mainlang]}} \\setotherlanguage{#{tex_head_lang[:otherlang]}} @@ -806,7 +847,8 @@ module SiSU_TeX_Pdf \\setmonofont[Scale=0.85]{#{texpdf_font_mono}} % \\setsansfont{#{texpdf_font_sans}} % \\setromanfont{#{texpdf_font_serif}} - WOK + WOK + end when /pdf/ if @md.file_encoding =~ /iso-?8859/i #% iso8859 <<-WOK diff --git a/lib/sisu/v5/constants.rb b/lib/sisu/v5/constants.rb index bc98ca99..78655871 100644 --- a/lib/sisu/v5/constants.rb +++ b/lib/sisu/v5/constants.rb @@ -209,7 +209,7 @@ Px={ po_subscript_o: ',{', po_subscript_c: '},', po_hilite_o: '*{', po_hilite_c: '}*', po_monospace_o: '#{', po_monospace_c: '}#', - lng_lst: %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi], + lng_lst: %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it ja ko la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi zh], lv1: '*', lv2: '=', lv3: '=', diff --git a/lib/sisu/v5/dal_syntax.rb b/lib/sisu/v5/dal_syntax.rb index f6d01d22..1e1d8542 100644 --- a/lib/sisu/v5/dal_syntax.rb +++ b/lib/sisu/v5/dal_syntax.rb @@ -332,7 +332,7 @@ module SiSU_DAL_Syntax dob end def fontface(dob) - leader=/^|#{Mx[:gl_c]}|\s+|['"]|[#{Mx[:nbsp]}#{Mx[:fa_o_c]}#{Mx[:fa_c]}#{Mx[:lnk_o]}#{Mx[:br_nl]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:tc_c]}#{Mx[:tc_p]}]|[\(\[\{]|\>/ + leader=/^|#{Mx[:gl_c]}|\s+|['"]|[#{Mx[:nbsp]}#{Mx[:fa_o_c]}#{Mx[:fa_c]}#{Mx[:lnk_o]}#{Mx[:br_nl]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:tc_c]}#{Mx[:tc_p]}]|[\(\[\{]|[、。]|\>/ dob=fontface_lines(dob,leader) dob.obj=dob.obj.gsub(/(#{leader})\*\{(.+?)\}\*/m, "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis diff --git a/lib/sisu/v5/i18n.rb b/lib/sisu/v5/i18n.rb index b635af15..cfd02244 100644 --- a/lib/sisu/v5/i18n.rb +++ b/lib/sisu/v5/i18n.rb @@ -91,6 +91,8 @@ module SiSU_i18n ia: { c: 'ia', n: 'Interlingua', t: 'Interlingua', xlp: 'interlingua' }, is: { c: 'is', n: 'Icelandic', t: 'Icelandic', xlp: 'icelandic' }, it: { c: 'it', n: 'Italian', t: 'Italiano', xlp: 'italian' }, + ja: { c: 'ja', n: 'Japanese', t: '日本語 (Nihongo)', xlp: 'japanese' }, + ko: { c: 'ko', n: 'Korean', t: 'Korean', xlp: 'korean' }, la: { c: 'la', n: 'Latin', t: 'Latin', xlp: 'latin' }, lo: { c: 'lo', n: 'Lao', t: 'Lao', xlp: 'lao' }, lt: { c: 'lt', n: 'Lithuanian', t: 'Lithuanian', xlp: 'lithuanian' }, @@ -122,6 +124,7 @@ module SiSU_i18n ur: { c: 'ur', n: 'Urdu', t: 'Urdu', xlp: 'urdu' }, us: { c: 'en', n: 'English (American)',t: 'English', xlp: 'english' }, vi: { c: 'vi', n: 'Vietnamese', t: 'Vietnamese', xlp: 'vietnamese' }, + zh: { c: 'zh', n: 'Chinese', t: '中文', xlp: 'chinese' }, en: { c: 'en', n: 'English', t: 'English', xlp: 'english' }, xx: { c: 'xx', n: 'Default', t: 'English', xlp: 'english' }, } @@ -154,6 +157,8 @@ module SiSU_i18n 'ia' => table[:ia], 'is' => table[:is], 'it' => table[:it], + 'ja' => table[:ja], + 'ko' => table[:ko], 'la' => table[:la], 'lo' => table[:lo], 'lt' => table[:lt], @@ -185,6 +190,7 @@ module SiSU_i18n 'ur' => table[:ur], 'us' => table[:en], 'vi' => table[:vi], + 'zh' => table[:zh], 'en' => table[:en], 'xx' => table[:en] } diff --git a/lib/sisu/v5/options.rb b/lib/sisu/v5/options.rb index 031258af..422762d1 100644 --- a/lib/sisu/v5/options.rb +++ b/lib/sisu/v5/options.rb @@ -66,14 +66,12 @@ module SiSU_Commandline require_relative 'param_make' # param_make.rb @@sisu_call_origin_path=nil class HeaderCommon - def initialize(make_instruct_array) - @make_instruct_array=make_instruct_array - end def sisu_document_make_instructions @pagenew=@pagebreak=@pageline=@toc=@lv1=@lv2=@lv3=@lv4=@lv5=@lv6=@num_top=@i18n=@man_section=@emphasis_set_to=@bold_match_list=@italics_match_list=@substitution_match_list=@footer_links=@home_button_links=@links=nil + make_instruct_array=SiSU_Env::GetInit.new.sisu_document_make.makefile_read @makeset=false - if @make_instruct_array - @make_instruct_array.each do |para| #% scan document + if make_instruct_array + make_instruct_array.each do |para| #% scan document if para =~/^(?:@make:|@links:)[+-]?\s/ case para when /^@make:(.+)/m #% header processing - make @@ -153,8 +151,7 @@ module SiSU_Commandline @base_stub=@base_path.gsub(u,'\1') @a=sisu_glob_rules(a) @a.freeze - make_instruct_array=SiSU_Env::GetInit.new.sisu_document_make.makefile_read - @make_instructions=HeaderCommon.new(make_instruct_array).sisu_document_make_instructions + @make_instructions=HeaderCommon.new.sisu_document_make_instructions @make_instructions_pod=nil init end diff --git a/lib/sisu/v5/param_make.rb b/lib/sisu/v5/param_make.rb index ba89c7b3..ec538ccb 100644 --- a/lib/sisu/v5/param_make.rb +++ b/lib/sisu/v5/param_make.rb @@ -360,6 +360,30 @@ module SiSU_Param_Make ? @h['texpdf_font_mono'] : @env.font.texpdf.mono end + def cjk + @h['texpdf_font_cjk'] \ + && (@h['texpdf_font_cjk']=~/\S{3,}/) \ + ? @h['texpdf_font_cjk'] + : @env.font.texpdf.cjk + end + def cjk_zh + @h['texpdf_font_cjk_zh'] \ + && (@h['texpdf_font_cjk_zh']=~/\S{3,}/) \ + ? @h['texpdf_font_cjk_zh'] + : @env.font.texpdf.cjk_zh + end + def cjk_ja + @h['texpdf_font_cjk_ja'] \ + && (@h['texpdf_font_cjk_ja']=~/\S{3,}/) \ + ? @h['texpdf_font_cjk_ja'] + : @env.font.texpdf.cjk_ja + end + def cjk_ko + @h['texpdf_font_cjk_ko'] \ + && (@h['texpdf_font_cjk_ko']=~/\S{3,}/) \ + ? @h['texpdf_font_cjk_ko'] + : @env.font.texpdf.cjk_ko + end self end def promo diff --git a/lib/sisu/v5/sysenv.rb b/lib/sisu/v5/sysenv.rb index 62ef451f..0616abb7 100644 --- a/lib/sisu/v5/sysenv.rb +++ b/lib/sisu/v5/sysenv.rb @@ -1780,6 +1780,9 @@ WOK end def font def texpdf + # you may wish to check selected font against available fonts: + # fc-list :outline -f "%{family}\n" + # fc-list :lang=ja def main (defined? @rc['default']['texpdf_font']) \ && (@rc['default']['texpdf_font']=~/\S{3,}/) \ @@ -1804,6 +1807,30 @@ WOK ? @rc['default']['texpdf_font_mono'] : 'Liberation Mono' end + def cjk + (defined? @rc['default']['texpdf_font_cjk']) \ + && (@rc['default']['texpdf_font_cjk']=~/\S{3,}/) \ + ? @rc['default']['texpdf_font_cjk'] + : 'IPAGothic' # 'IPAGothic' # 'IPAMincho' # 'TakaoMincho' # 'VL Gothic' + end + def cjk_zh + (defined? @rc['default']['texpdf_font_cjk_zh']) \ + && (@rc['default']['texpdf_font_cjk_zh']=~/\S{3,}/) \ + ? @rc['default']['texpdf_font_cjk_zh'] + : 'IPAGothic' + end + def cjk_ja + (defined? @rc['default']['texpdf_font_cjk_ja']) \ + && (@rc['default']['texpdf_font_cjk_ja']=~/\S{3,}/) \ + ? @rc['default']['texpdf_font_cjk_ja'] + : 'IPAGothic' + end + def cjk_ko + (defined? @rc['default']['texpdf_font_cjk_ko']) \ + && (@rc['default']['texpdf_font_cjk_ko']=~/\S{3,}/) \ + ? @rc['default']['texpdf_font_cjk_ko'] + : 'IPAGothic' + end self end self diff --git a/lib/sisu/v5/texpdf_format.rb b/lib/sisu/v5/texpdf_format.rb index 172dfa56..5ed6ca75 100644 --- a/lib/sisu/v5/texpdf_format.rb +++ b/lib/sisu/v5/texpdf_format.rb @@ -794,11 +794,52 @@ module SiSU_TeX_Pdf @md.make.texpdf_font.mono else @env.font.texpdf.mono end - # you may wish to check selected font against avaiable fonts: + texpdf_font_cjk=if @md.opt.lng =~/zh/ \ + and defined? @md.make.texpdf_font.cjk_zh \ + and not @md.make.texpdf_font.cjk_zh.nil? \ + and @md.make.texpdf_font.cjk_zh=~/\S{3,}/ + @md.make.texpdf_font.cjk_zh + elsif @md.opt.lng =~/ja/ \ + and defined? @md.make.texpdf_font.cjk_ja \ + and not @md.make.texpdf_font.cjk_ja.nil? \ + and @md.make.texpdf_font.cjk_ja=~/\S{3,}/ + @md.make.texpdf_font.cjk_ja + elsif @md.opt.lng =~/ko/ \ + and defined? @md.make.texpdf_font.cjk_ko \ + and not @md.make.texpdf_font.cjk_ko.nil? \ + and @md.make.texpdf_font.cjk_ko=~/\S{3,}/ + @md.make.texpdf_font.cjk_ko + elsif @md.opt.lng =~/(?:zh|ja|ko)/ \ + and defined? @md.make.texpdf_font.cjk \ + and not @md.make.texpdf_font.cjk.nil? \ + and @md.make.texpdf_font.cjk=~/\S{3,}/ + @md.make.texpdf_font.cjk + else + case @md.opt.lng + when /zh/; @env.font.texpdf.cjk_zh + when /ja/; @env.font.texpdf.cjk_ja + when /ko/; @env.font.texpdf.cjk_ko + else @env.font.texpdf.cjk + end + end + # you may wish to check selected font against available fonts: # fc-list :outline -f "%{family}\n" + # fc-list :lang=ja case @tex2pdf when /xe/ - <<-WOK + if @md.opt.lng =~/(?:zh|ja|ko)/ + <<-WOK +\\usepackage{ucs, fontspec, xltxtra, xunicode, xeCJK} +\\setmainCJKlanguage{#{tex_head_lang[:mainlang]}} +\\setCJKmainfont{#{texpdf_font_cjk}} +\\XeTeXlinebreaklocale "#{tex_head_lang[:mainlang]}" +\\XeTeXlinebreakskip = 0pt plus 1pt +\\setotherlanguage{#{tex_head_lang[:otherlang]}} +\\setmainfont{#{texpdf_font}} +\\setmonofont[Scale=0.85]{#{texpdf_font_mono}} + WOK + else + <<-WOK \\usepackage{polyglossia, ucs, fontspec, xltxtra, xunicode} \\setmainlanguage{#{tex_head_lang[:mainlang]}} \\setotherlanguage{#{tex_head_lang[:otherlang]}} @@ -806,7 +847,8 @@ module SiSU_TeX_Pdf \\setmonofont[Scale=0.85]{#{texpdf_font_mono}} % \\setsansfont{#{texpdf_font_sans}} % \\setromanfont{#{texpdf_font_serif}} - WOK + WOK + end when /pdf/ if @md.file_encoding =~ /iso-?8859/i #% iso8859 <<-WOK -- cgit v1.2.3