diff options
40 files changed, 4060 insertions, 826 deletions
diff --git a/data/doc/sisu/CHANGELOG_v3 b/data/doc/sisu/CHANGELOG_v3 index 7f2093b0..7978dc09 100644 --- a/data/doc/sisu/CHANGELOG_v3 +++ b/data/doc/sisu/CHANGELOG_v3 @@ -13,12 +13,73 @@ Reverse Chronological: %% Development branch UNSTABLE v3 branch once stable will supersede & replace current stable v2 branch +%% 3.0.14.orig.tar.gz (2011-07-26:30/2) +http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/debian/3.0.14-1 +http://www.jus.uio.no/sisu/pkg/src/sisu_3.0.14.orig.tar.gz + sisu_3.0.14.orig.tar.gz + sisu_3.0.14-1.dsc + sisu_3.0.14-1.debian.tar.gz + + * hanging indent partially implemented, added markup possibilities + + __[1-9] hanging indent (initial indent 0); paragraph text indent [1-9] + + _[0-9]?_[1-9] initial indent; paragraph text indent + + * done: dal, plaintext, css, html, epub, xhtml, xml sax, xml dom, pdf, sql; + not done: odf, man, info + check: po4a, html_lite (used in sql search results) + * syntax highlighting done: vim (sisu.vim), emacs (sisu-mode.el) + + * indent added bold words markup syntax (_[1-9]!) (_[0-9]?_[1-9]!) + for indents + + __[1-9]! bold words + part of hanging indent paragraph text + + __[1-9]! bold words \\ part of hanging indent paragraph text + + * param, manifest, qrcode, epub, added creator.editor field + + * sql db, constants, cgi-sql, structure changed, creator editor field added + + * sisu_manual, manpage, manpage html (man2html) + * sisu_commands: --qrcode -Q; update shortcut options; line-breaks use \\ + * sisu_markup.sst: indent update; publisher + + * vim sisu syntax highlighting + * markers for hanging indent added + * added header for @creator: :editor: + * minor comments added + * deletion of an unused tag + + * emacs sisu-mode.el + * markers for hanging indent added + * line-break + + * qrcode, sysenv, manifest, generate & add QR code images of metadata to + manifest (using qrencode) (consider where and how else to use images) + + * epub, opf fixes + + * sysenv, avoid creation of spurious directories in output tree + (an image copy section removed, re-implement correctly later) + + * param, cleanup setting of auto endnotes + + * texpdf, XeTeX language settings ((setmainlanguage setotherlanguage) from + directory or filename) if @make: :language: header not set + + * xmls (sax, dom, xhtml) use of xml tidy, correct output file location + + * urls, --concordance + %% 3.0.13.orig.tar.gz (2011-06-26:25/7) http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/debian/3.0.13-1 http://www.jus.uio.no/sisu/pkg/src/sisu_3.0.13.orig.tar.gz - sisu_3.0.13.orig.tar.gz - sisu_3.0.13-1.dsc - sisu_3.0.13-1.debian.tar.gz + 33d2358a39a69c1be4403b06b52eaeca604e851ee4e32c6f1625399944362fea 1943441 sisu_3.0.13.orig.tar.gz + c741399aa3da6189854f7a532eae6db27370646a2b86b7427bf330401369bc13 1223 sisu_3.0.13-1.dsc + 0fe5173e4973a4af7fba79dcf5ae3c702f34b5ac89e02f4be9e014641e7514d0 289790 sisu_3.0.13-1.debian.tar.gz * dal_syntax, linebreak within regular objects is \\ (<br> depreciated) [test, affects downstream outputs, there is the potential for breakage] diff --git a/data/doc/sisu/html/sisu.1.html b/data/doc/sisu/html/sisu.1.html index fb74b10d..33529bfc 100644 --- a/data/doc/sisu/html/sisu.1.html +++ b/data/doc/sisu/html/sisu.1.html @@ -179,39 +179,39 @@ and the same document structure information. For more see: <<a href='http://w <dt><b>-a [filename/wildcard]</b> </dt> <dd>produces plaintext with Unix linefeeds and without markup, (object numbers are omitted), has -footnotes at end of each paragraph that contains them [ -A for equivalent - dos (linefeed) output file] [see -e for (Options include: --endnotes for endnotes ---footnotes for footnotes at the end of each paragraph --unix for unix linefeed -(default) --msdos for msdos linefeed) +footnotes at end of each paragraph that contains them [ -A for equivalent + dos (linefeed) output file] [see -e for endnotes]. (Options include: --endnotes +for endnotes --footnotes for footnotes at the end of each paragraph --unix +for unix linefeed (default) --msdos for msdos linefeed) <p> </dd> <dt><b>-b [filename/wildcard]</b> </dt> <dd>see --xhtml <p> </dd> -<dt><b>--color-toggle -[filename/wildcard]</b> </dt> -<dd>screen toggle ansi screen colour on or off depending -on default set (unless -c flag is used: if sisurc colour default is set -to ’true’, output to screen will be with colour, if sisurc colour default -is set to ’false’ or is undefined screen output will be without colour). Alias -c +<dt><b>--color-toggle [filename/wildcard]</b> </dt> +<dd>screen toggle ansi screen colour +on or off depending on default set (unless -c flag is used: if sisurc colour +default is set to ’true’, output to screen will be with colour, if sisurc +colour default is set to ’false’ or is undefined screen output will be without +colour). Alias -c <p> </dd> <dt><b>--concordance [filename/wildcard]</b> </dt> -<dd>produces concordance (wordmap) a rudimentary -index of all the words in a document. (Concordance files are not generated -for documents of over 260,000 words unless this limit is increased in the -file sisurc.yml). Alias -w +<dd>produces concordance (wordmap) +a rudimentary index of all the words in a document. (Concordance files are +not generated for documents of over 260,000 words unless this limit is +increased in the file sisurc.yml). Alias -w <p> </dd> <dt><b>-C [--init-site]</b> </dt> -<dd>configure/initialise shared output -directory files initialize shared output directory (config files such as -css and dtd files are not updated if they already exist unless modifier -is used). -C --init-site configure/initialise site more extensive than -C on -its own, shared output directory files/force update, existing shared output -config files such as css and dtd files are updated if this modifier is -used. +<dd>configure/initialise +shared output directory files initialize shared output directory (config +files such as css and dtd files are not updated if they already exist unless +modifier is used). -C --init-site configure/initialise site more extensive than +-C on its own, shared output directory files/force update, existing shared +output config files such as css and dtd files are updated if this modifier +is used. <p> </dd> <dt><b>-CC</b> </dt> @@ -271,6 +271,7 @@ language subdirectories). Alias -f, --glob, -G <dt><b>-F [--webserv=webrick]</b> </dt> <dd>see --sample-search-form + <p> </dd> <dt><b>-f [optional string part of filename]</b> </dt> @@ -339,8 +340,7 @@ file (scroll.html). Alias -h <dt><b>--keep-processing-files [filename/wildcard/url]</b> </dt> -<dd> -<p>see --maintenance +<dd>see --maintenance <p> </dd> <dt><b>-L</b> </dt> @@ -362,8 +362,7 @@ indicated. (also see -V). Aliases -M and --keep-processing-files <p> </dd> <dt><b>-M [filename/wildcard/url]</b> </dt> -<dd> -<p>see --maintenance +<dd>see --maintenance <p> </dd> <dt><b>-m [filename/wildcard/url]</b> </dt> @@ -440,26 +439,33 @@ directory structure to multilingual. v3, experimental <dd>see --pdf <p> </dd> +<dt><b>--qrcode [filename/wildcard]</b> +</dt> +<dd>generate QR code image of metadata (used in manifest). v3 only. +<p> </dd> + <dt><b>--quiet [filename/wildcard]</b> </dt> <dd>quiet less output to screen. <p> </dd> -<dt><b>-q [filename/wildcard]</b> </dt> -<dd>see --quiet +<dt><b>-Q [filename/wildcard]</b> </dt> +<dd>see --qrcode <p> </dd> -<dt><b>--rsync [filename/wildcard]</b> +<dt><b>-q [filename/wildcard]</b> </dt> -<dd>copies sisu output files to remote host using rsync. This requires that -sisurc.yml has been provided with information on hostname and username, -and that you have your "keys" and ssh agent in place. Note the behavior -of rsync different if -R is used with other flags from if used alone. Alone -the rsync --delete parameter is sent, useful for cleaning the remote directory -(when -R is used together with other flags, it is not). Also see --scp. Alias +<dd>see --quiet +<p> </dd> -<p>- -<p>R +<dt><b>--rsync [filename/wildcard]</b> </dt> +<dd>copies sisu output files to remote +host using rsync. This requires that sisurc.yml has been provided with information +on hostname and username, and that you have your "keys" and ssh agent in +place. Note the behavior of rsync different if -R is used with other flags +from if used alone. Alone the rsync --delete parameter is sent, useful for +cleaning the remote directory (when -R is used together with other flags, +it is not). Also see --scp. Alias -R <p> </dd> <dt><b>-R [filename/wildcard]</b> </dt> @@ -470,25 +476,22 @@ the rsync --delete parameter is sent, useful for cleaning the remote directory <dd>see --scp <p> </dd> -<dt><b>--sample-search-form -[--webserv=webrick]</b> </dt> -<dd>generate examples of (naive) cgi search form for sqlite -and pgsql depends on your already having used sisu to populate an sqlite -and/or pgsql database, (the sqlite version scans the output directories -for existing sisu_sqlite databases, so it is first necessary to create -them, before generating the search form) see -d -D and the database section -below. If the optional parameter --webserv=webrick is passed, the cgi examples -created will be set up to use the default port set for use by the webrick -server, (otherwise the port is left blank and the system setting used, -usually 80). The samples are dumped in the present work directory which -must be writable, (with screen instructions given that they be copied to -the cgi-bin directory). -Fv (in addition to the above) provides some information -on setting up hyperestraier for sisu. Alias -F +<dt><b>--sample-search-form [--webserv=webrick]</b> </dt> +<dd>generate examples of (naive) +cgi search form for sqlite and pgsql depends on your already having used +sisu to populate an sqlite and/or pgsql database, (the sqlite version scans +the output directories for existing sisu_sqlite databases, so it is first +necessary to create them, before generating the search form) see -d -D and +the database section below. If the optional parameter --webserv=webrick is +passed, the cgi examples created will be set up to use the default port +set for use by the webrick server, (otherwise the port is left blank and +the system setting used, usually 80). The samples are dumped in the present +work directory which must be writable, (with screen instructions given +that they be copied to the cgi-bin directory). Alias -F <p> </dd> <dt><b>--scp [filename/wildcard]</b> </dt> -<dd>copies -sisu output files to remote host using scp. This requires that sisurc.yml +<dd>copies sisu output files to remote host using scp. This requires that sisurc.yml has been provided with information on hostname and username, and that you have your "keys" and ssh agent in place. Also see --rsync. Alias -r <p> </dd> @@ -511,8 +514,7 @@ option. Note: (this option is tested only with zsh). Alias -S <p> </dd> <dt><b>--sisupod [filename/wildcard]</b> </dt> -<dd>produces -a zipped file of the prepared document specified along with associated +<dd>produces a zipped file of the prepared document specified along with associated images, by default named sisupod.zip they may alternatively be named with the filename extension .ssp This provides a quick way of gathering the relevant parts of a sisu document which can then for example be emailed. A sisupod @@ -541,8 +543,7 @@ file to output directory. Alias -s <dt><b>-S [filename/wildcard]</b> </dt> -<dd> -<p>see --sisupod +<dd>see --sisupod <p> </dd> <dt><b>-s [filename/wildcard]</b> </dt> @@ -563,56 +564,56 @@ are omitted), has footnotes at end of each paragraph that contains them --unix for unix linefeed (default) --msdos for msdos linefeed). Alias -t <p> </dd> -<dt><b>-T [filename/wildcard - (*.termsheet.rb)]</b> </dt> +<dt><b>-T [filename/wildcard (*.termsheet.rb)]</b> </dt> <dd>standard form document builder, preprocessing feature -<p> -</dd> +<p> </dd> <dt><b>-t [filename/wildcard]</b> </dt> <dd>see --txt <p> </dd> <dt><b>--urls [filename/wildcard]</b> </dt> -<dd>prints url output -list/map for the available processing flags options and resulting files -that could be requested, (can be used to get a list of processing options -in relation to a file, together with information on the output that would -be produced), -u provides url output mapping for those flags requested for -processing. The default assumes sisu_webrick is running and provides webrick -url mappings where appropriate, but these can be switched to file system -paths in sisurc.yml. Alias -U +<dd>prints url output list/map for the available processing flags options and +resulting files that could be requested, (can be used to get a list of +processing options in relation to a file, together with information on +the output that would be produced), -u provides url output mapping for those +flags requested for processing. The default assumes sisu_webrick is running +and provides webrick url mappings where appropriate, but these can be switched +to file system paths in sisurc.yml. Alias -U <p> </dd> <dt><b>-U [filename/wildcard]</b> </dt> <dd>see --urls + <p> </dd> <dt><b>-u [filename/wildcard]</b> </dt> -<dd>provides url mapping of output files for the flags requested for processing, -also see -U +<dd>provides url mapping of output files for the flags +requested for processing, also see -U <p> </dd> <dt><b>--v2 [filename/wildcard]</b> </dt> -<dd>invokes the sisu v2 document parser/generator. -This is the default and is normally omitted. +<dd>invokes the +sisu v2 document parser/generator. This is the default and is normally omitted. + <p> </dd> <dt><b>--v3 [filename/wildcard]</b> </dt> -<dd>invokes -the sisu v3 document parser/generator. Currently under development and incomplete, -v3 requires >= ruby1.9.2p180. You may run sisu3 instead. +<dd>invokes the sisu v3 document parser/generator. Currently +under development and incomplete, v3 requires >= ruby1.9.2p180. You may run +sisu3 instead. <p> </dd> <dt><b>--verbose [filename/wildcard]</b> </dt> -<dd>provides verbose output of what is being generated, where output is placed -(and error messages if any), as with -u flag provides a url mapping of files -created for each of the processing flag requests. Alias -v +<dd>provides verbose output of what +is being generated, where output is placed (and error messages if any), +as with -u flag provides a url mapping of files created for each of the +processing flag requests. Alias -v <p> </dd> <dt><b>-V</b> </dt> -<dd>on its own, -provides <b>SiSU</b> version and environment information (sisu --help env) +<dd>on its own, provides <b>SiSU</b> version and +environment information (sisu --help env) <p> </dd> <dt><b>-V [filename/wildcard]</b> </dt> @@ -621,6 +622,7 @@ provides <b>SiSU</b> version and environment information (sisu --help env) <dt><b>-v</b> </dt> <dd>on its own, provides <b>SiSU</b> version information + <p> </dd> <dt><b>-v [filename/wildcard]</b> </dt> @@ -628,11 +630,11 @@ provides <b>SiSU</b> version and environment information (sisu --help env) <p> </dd> <dt><b>--webrick</b> </dt> -<dd>starts ruby’s webrick -webserver points at sisu output directories, the default port is set to -8081 and can be changed in the resource configuration files. [tip: the webrick - server requires link suffixes, so html output should be created using the - -h option rather than and search -H ; also, note -F webrick ]. Alias -W +<dd>starts ruby’s webrick webserver +points at sisu output directories, the default port is set to 8081 and +can be changed in the resource configuration files. [tip: the webrick server + requires link suffixes, so html output should be created using the -h option + rather than -H ; also, note -F webrick ]. Alias -W <p> </dd> <dt><b>-W</b> </dt> @@ -645,16 +647,17 @@ webserver points at sisu output directories, the default port is set to <dt><b>-w [filename/wildcard]</b> </dt> <dd>see --concordance + <p> </dd> <dt><b>--xhtml [filename/wildcard]</b> </dt> -<dd>produces xhtml/XML output for -browser viewing (sax parsing). Alias -b +<dd>produces xhtml/XML output for browser viewing +(sax parsing). Alias -b <p> </dd> <dt><b>--xml-dom [filename/wildcard]</b> </dt> -<dd>produces -XML output with deep document structure, in the nature of dom. Alias -X +<dd>produces XML output with +deep document structure, in the nature of dom. Alias -X <p> </dd> <dt><b>--xml-sax [filename/wildcard]</b> </dt> @@ -670,23 +673,24 @@ XML output with deep document structure, in the nature of dom. Alias -X <p> </dd> <dt><b>-Y [filename/wildcard]</b> </dt> -<dd>produces a short sitemap entry for the document, -based on html output and the sisu_manifest. --sitemaps generates/updates the -sitemap index of existing sitemaps. (Experimental, [g,y,m announcement this - week]) +<dd>produces a short sitemap entry for the document, based on html output and the sisu_manifest. +--sitemaps generates/updates the sitemap index of existing sitemaps. (Experimental, +[g,y,m announcement this week]) <p> </dd> <dt><b>-y [filename/wildcard]</b> </dt> -<dd>produces an html summary of output generated -(hyperlinked to content) and document specific metadata (sisu_manifest.html). -This step is assumed for most processing flags. +<dd>produces an html +summary of output generated (hyperlinked to content) and document specific +metadata (sisu_manifest.html). This step is assumed for most processing flags. + <p> </dd> <dt><b>--zap [filename/wildcard]</b> </dt> -<dd>Zap, if used with other processing flags deletes output files of the type -about to be processed, prior to processing. If -Z is used as the lone processing -related flag (or in conjunction with a combination of -[mMvVq]), will remove -the related document output directory. Alias -Z +<dd>Zap, if used with other processing flags deletes +output files of the type about to be processed, prior to processing. If +-Z is used as the lone processing related flag (or in conjunction with a +combination of -[mMvVq]), will remove the related document output directory. +Alias -Z <p> </dd> <dt><b>-Z [filename/wildcard]</b> </dt> @@ -750,24 +754,23 @@ and underscores. <dt><b>--pg -v --import</b> </dt> <dd>[filename/wildcard] imports data specified -to postgresql db (rb.dbi) [ -dv --import sqlite equivalent] +to postgresql db (rb.dbi) [ -dv and search --import sqlite equivalent] <p> </dd> <dt><b>--pg -v --update</b> </dt> -<dd>[filename/wildcard] -updates/imports specified data to postgresql db (rb.dbi) [ -dv --update sqlite - equivalent] +<dd>[filename/wildcard] updates/imports specified data to postgresql +db (rb.dbi) [ -dv --update sqlite equivalent] <p> </dd> <dt><b>--pg --remove</b> </dt> <dd>[filename/wildcard] removes specified data to postgresql -db (rb.dbi) [ -d --remove sqlite equivalent] +db (rb.dbi) [ -d --remove sqlite equivalent] + <p> </dd> <dt><b>--pg --dropall</b> </dt> -<dd>kills data" and drops -(postgresql or sqlite) db, tables & indexes [ -d --dropall sqlite equivalent] - +<dd>kills data" and drops (postgresql or sqlite) db, tables & indexes +[ -d --dropall sqlite equivalent] <p> <br> The -v is for verbose output. <p> </dd> @@ -790,39 +793,37 @@ and just want to do the same again. <dt><b>-0 to -5 [filename or wildcard]</b> </dt> <dd>Default -shorthand mappings (note that the defaults can be changed/configured in -the sisurc.yml file): +shorthand mappings (for v3, note that the defaults can be changed/configured +in the sisurc.yml file): <p> </dd> <dt><b>-0</b> </dt> -<dd>-mNhwpAobxXyYv [this is the default action run when - no i.e. on ’sisu [filename]’] +<dd>-NQhewpotbxXyYv [this is the default action run + when no options are give, i.e. on ’sisu [filename]’] <p> </dd> <dt><b>-1</b> </dt> -<dd>-mhewpy +<dd>-Qhewpoty <p> </dd> <dt><b>-2</b> </dt> -<dd>-mhewpaoy +<dd>-NQhewpotbxXy + <p> </dd> <dt><b>-3</b> </dt> -<dd>-mhewpAobxXyY +<dd>-NQhewpotbxXyY <p> </dd> <dt><b>-4</b> </dt> -<dd>-mhewpAobxXDyY - -<p>- -<p>- -<p>import +<dd>-NQhewpotbxXDyY --update <p> </dd> <dt><b>-5</b> </dt> -<dd>-mhewpAobxXDyY --update +<dd>-NQhewpotbxXDyYv --update <p> <br> -add -v for verbose mode and -c for color, e.g. sisu -2vc [filename or +add -v for verbose mode and -c to toggle color state, e.g. sisu -2vc [filename + or wildcard] <p> <br> <p>consider -u for appended url info or -v for verbose output @@ -1058,7 +1059,9 @@ similar to this one: <pre> % SiSU master 2.0 @title: SiSU :subtitle: Manual - @creator: :author: Amissah, Ralph + @creator: + :author: Amissah, Ralph + @publisher: [publisher name] @rights: Copyright (C) Ralph Amissah 2007, License GPL 3 @classify: :type: information @@ -1209,7 +1212,8 @@ level 1 heading (used where a stand-alone document may be imported into another) <p> <br> <b>:A~ [heading text]</b> Top level heading [this usually has similar content - to the ] NOTE: the heading levels described here are in 0.38 notation, see heading + to the title @title: ] NOTE: the heading levels described here are in 0.38 +notation, see heading <p> <br> <b>:B~ [heading text]</b> Second level heading [this is a heading level divider] @@ -1225,7 +1229,7 @@ are given (a number), otherwise takes the form 1~my_filename_for_this_segment <p> <br> <b>2~ [heading text]</b> Second level heading preceding substantive text of document -or sub-heading 3 , the heading level that would normally be marked 1.1 or +or sub-heading 3, the heading level that would normally be marked 1.1 or 1.2 or 1.3 or 2.1 etc. in a document. <p> <br> <b>3~ [heading text]</b> Third level heading preceding substantive text of document, @@ -1267,21 +1271,21 @@ html +{inserted text}+ - \-{strikethrough}\- + -{strikethrough}- #{monospace}# </pre> <p> <br> <b>resulting output:</b> <p> <br> -normal text, <b>emphasis,</b> <b>bold text,</b> <i>italics,</i> <i>underscore</i> , "citation", ^superscript^, +normal text, <b>emphasis,</b> <b>bold text,</b> <i>italics,</i> <i>underscore,</i> "citation", ^superscript^, [subscript], ++inserted text++, --strikethrough--, monospace <p> <br> <p>normal text <p> <br> -<b>emphasis</b> [note: can be configured to be represented by bold, italics or - underscore] +<b>emphasis</b> [note: can be configured to be represented by bold, italics italics + or underscore] or underscore] <p> <br> <p><b>bold text</b> @@ -1362,7 +1366,29 @@ Numbered List (not to be confused with headings/titles, (document structure)) _# numbered list numbered list indented a., b., c., d., etc. </pre> <p> -<h2><a name='sect28' href='#toc28'>9.4 Footnotes / Endnotes</a></h2> +<h2><a name='sect28' href='#toc28'>9.4 Hanging Indents</a></h2> + +<p> <br> +<b>markup example:</b> +<p> <br> +<pre> _0_1 first line no indent, + rest of paragraph indented one step + _1_0 first line indented, + rest of paragraph no indent + in each case level may be 0-9 +</pre> +<p> <br> +<b>resulting output:</b> +<p> <br> + first line no indent, rest of paragraph indented one step<br> + +<p> <br> +first line indented, rest of paragraph no indent +<p> <br> + +<p>in each case level may be 0-9 +<p> +<h2><a name='sect29' href='#toc29'>9.5 Footnotes / Endnotes</a></h2> <p> <br> Footnotes and endnotes are marked up at the location where they would be @@ -1428,11 +1454,11 @@ normal text [^+2] continues <p>the standard and pair notation cannot be mixed in the same document <p> -<h2><a name='sect29' href='#toc29'>9.5 +<h2><a name='sect30' href='#toc30'>9.6 Links</a></h2> <p> -<h2><a name='sect30' href='#toc30'>9.5.1 Naked Urls Within Text, Dealing with Urls</a></h2> +<h2><a name='sect31' href='#toc31'>9.6.1 Naked Urls Within Text, Dealing with Urls</a></h2> <p> <br> urls found within text are marked up automatically. A url within text is @@ -1479,7 +1505,7 @@ where a code block is used there is neither decoration nor hyperlinking, deb-src http://www.jus.uio.no/sisu/archive unstable main non-free </pre> <p> -<h2><a name='sect31' href='#toc31'>9.5.2 Linking Text</a></h2> +<h2><a name='sect32' href='#toc32'>9.6.2 Linking Text</a></h2> <p> <br> @@ -1509,9 +1535,6 @@ aboutSiSU <<a href='http://www.sisudoc.org/'>http://www.sisudoc.org/</a> <p> <br> about SiSU <<a href='http://www.sisudoc.org/'>http://www.sisudoc.org/</a> > [^14] markup -<p> -<h2><a name='sect32' href='#toc32'>9.5.3 Linking Images</a></h2> - <p> <br> <b>markup example:</b> <p> <br> @@ -1561,10 +1584,10 @@ note at a heading level the same is automatically achieved by providing names to headings 1, 2 and 3 i.e. 2~[name] and 3~[name] or in the case of auto-heading numbering, without further intervention. <p> -<h2><a name='sect33' href='#toc33'>9.6 Grouped Text</a></h2> +<h2><a name='sect33' href='#toc33'>9.7 Grouped Text</a></h2> <p> -<h2><a name='sect34' href='#toc34'>9.6.1 +<h2><a name='sect34' href='#toc34'>9.7.1 Tables</a></h2> <p> <br> @@ -1609,7 +1632,7 @@ Tables</a></h2> No. of articles, all languages | 25| 19,000| 138,000| 490,000| 862,000|1,600,000 \* Contributed at least ten times; \** at least 5 times in last month; -\* more than 100 times in last month. +\*\** more than 100 times in last month. </pre> <p> <br> <b>resulting output:</b> @@ -1622,7 +1645,7 @@ Tables</a></h2> * Contributed at least ten times; ** at least 5 times in last month; *** more than 100 times in last month. <p> -<h2><a name='sect35' href='#toc35'>9.6.2 Poem</a></h2> +<h2><a name='sect35' href='#toc35'>9.7.2 Poem</a></h2> <p> <br> <b>basic markup:</b> @@ -1774,7 +1797,7 @@ more than 100 times in last month. <br> <p> -<h2><a name='sect36' href='#toc36'>9.6.3 Group</a></h2> +<h2><a name='sect36' href='#toc36'>9.7.3 Group</a></h2> <p> <br> <b>basic markup:</b> @@ -1930,7 +1953,7 @@ more than 100 times in last month. <br> <p> -<h2><a name='sect37' href='#toc37'>9.6.4 Code</a></h2> +<h2><a name='sect37' href='#toc37'>9.7.4 Code</a></h2> <p> <br> Code tags code{ ... }code (used as with other group tags described above) @@ -2040,11 +2063,11 @@ opening code tag code{# as demonstrated here: 44 | death."’ </pre> <p> -<h2><a name='sect38' href='#toc38'>9.7 Additional Breaks - Linebreaks Within Objects, Column and Page-breaks</a></h2> +<h2><a name='sect38' href='#toc38'>9.8 Additional Breaks - Linebreaks Within Objects, Column and Page-breaks</a></h2> <p> -<h2><a name='sect39' href='#toc39'>9.7.1 Line-breaks</a></h2> +<h2><a name='sect39' href='#toc39'>9.8.1 Line-breaks</a></h2> <p> <br> To break a line within a "paragraph object", two backslashes \\ with a space @@ -2060,7 +2083,7 @@ The html break br enclosed in angle brackets (though undocumented) is available in versions prior to 3.0.13 and 2.9.7 (it remains available for the time being, but is depreciated). <p> -<h2><a name='sect40' href='#toc40'>9.7.2 Page Breaks</a></h2> +<h2><a name='sect40' href='#toc40'>9.8.2 Page Breaks</a></h2> <p> <br> Page breaks are only relevant and honored in some output formats. A page @@ -2081,7 +2104,7 @@ page new <:pn> breaks the page, starts a new page. page break <:pb> breaks a column, starts a new column, if using columns, else breaks the page, starts a new page. <p> -<h2><a name='sect41' href='#toc41'>9.8 Book Index</a></h2> +<h2><a name='sect41' href='#toc41'>9.9 Book Index</a></h2> <p> <br> To make an index append to paragraph the book index term relates to it, @@ -2337,9 +2360,9 @@ text follows levels 1,2,3 and it is ’nice’ to do most work in those <p> <br> this is captured by the following file ’rename’ instruction: <p> <br> -<pre> rename ’s/.s[123]$/.sst/’ *.s{1,2,3} - rename ’s/.r[123]$/.ssm/’ *.r{1,2,3} - rename ’s/.si$/.ssi/’ *.si +<pre> rename ’s/\.s[123]$/\.sst/’ *.s{1,2,3} + rename ’s/\.r[123]$/\.ssm/’ *.r{1,2,3} + rename ’s/\.si$/\.ssi/’ *.si </pre> <p> <br> The internal document markup remains unchanged, from <b>SiSU</b> 0.16 @@ -2398,7 +2421,7 @@ be located locally or on a remote server for which a url is provided. <h2><a name='sect47' href='#toc47'>12.1.1 Sisu Text - Regular Files (.sst)</a></h2> <p> <br> -The most common form of document in <b>SiSU</b> , see the section on <b>SiSU</b> markup. +The most common form of document in <b>SiSU,</b> see the section on <b>SiSU</b> markup. <p> <br> <<a href='http://www.sisudoc.org/sisu/sisu_markup'>http://www.sisudoc.org/sisu/sisu_markup</a> @@ -2716,7 +2739,7 @@ list) may be found in: <p> <br> CSS files to modify the appearance of <b>SiSU</b> html, XHTML or XML may be placed -in the configuration directory: ./_sisu/css ; ~/.sisu/css or; /etc/sisu/css +in the configuration directory: ./_sisu/css; ~/.sisu/css or; /etc/sisu/css and these will be copied to the output directories with the command sisu -CC. <p> <br> @@ -2889,8 +2912,9 @@ streamed to four tables: <p> <br> * another the substantive texts by individual "paragraph" (or object) -- along<br> - with structural information, each paragraph being identifiable by its<br> +-<br> + along with structural information, each paragraph being identifiable +by its<br> paragraph number (if it has one which almost all of them do), and the<br> substantive text of each paragraph quite naturally being searchable (both in<br> @@ -2918,14 +2942,15 @@ so as to facilitate ease of searching. <p> <br> Being able to search a relational database at an object level with the <b>SiSU</b> citation system is an effective way of locating content generated -by <b>SiSU</b> object numbers, and all versions of the document have the same -numbering, complex searches can be tailored to return just the locations -of the search results relevant for all available output formats, with live -links to the precise locations in the database or in html/xml documents; -or, the structural information provided makes it possible to search the -full contents of the database and have headings in which search content -appears, or to search only headings etc. (as the Dublin Core is incorporated -it is easy to make use of that as well). +by <b>SiSU.</b> As individual text objects of a document stored (and indexed) together +with object numbers, and all versions of the document have the same numbering, +complex searches can be tailored to return just the locations of the search +results relevant for all available output formats, with live links to the +precise locations in the database or in html/xml documents; or, the structural +information provided makes it possible to search the full contents of the +database and have headings in which search content appears, or to search +only headings etc. (as the Dublin Core is incorporated it is easy to make +use of that as well). <p> <h2><a name='sect75' href='#toc75'>22. Postgresql</a></h2> <br> @@ -3050,7 +3075,8 @@ for <b>SiSU</b> to populate an sqlite database, this being part of <b>SiSU</b> - sisu -d [instruction] [filename/wildcard if required]<br> <p> <br> - sisu -d --(sqlite|pg) --[instruction] [filename/wildcard if required]<br> + sisu -d --(sqlite|pg) --[instruction] [filename/wildcard if <br> + required]<br> <p> <h2><a name='sect86' href='#toc86'>23.4 Commands</a></h2> @@ -3890,8 +3916,9 @@ the<br> <p> <br> NOTE: <p> <br> -[ .B SiSU parses files with long lines or line breaks, display linewrap - (without line-breaks) is a convenient +[ .B SiSU parses files with long lines or line breaks, but, display linewrap + (without line-breaks) is a convenient editor feature to have for sisu markup] + <p> <h2><a name='sect122' href='#toc122'>31. How Does Sisu Work?</a></h2> <br> @@ -3937,8 +3964,8 @@ beyond the Dublin core and easily further extended as required); the headers may also contain processing instructions. <b>SiSU</b> markup is primarily an abstraction of document structure and document metadata to permit taking advantage of the basic strengths of existing alternative practical standard ways -of representing documents [be that paper publication, sql search etc.] (html, -epub, xml, odf, latex, pdf, sql) +of representing documents [be that browser viewing, paper publication, + sql search etc.] (html, epub, xml, odf, latex, pdf, sql) <p> <br> * for output produces reasonably elegant output of established industry and institutionally accepted open standard formats.[3] takes advantage of @@ -3969,8 +3996,7 @@ as<br> <p> <br> * sql - population of an sql database, (at the same object level that -is used<br> - to cite text within a document)<br> +is used to cite text within a document)<br> <p> <br> Also produces: concordance files; document content certificates (md5 or @@ -4029,7 +4055,7 @@ and images and sent as a zip file called a sisupod, if shared on the net * generated document outputs may automatically be posted to remote sites. <p> <br> -* for basic document generation, the only software dependency is <b>Ruby</b> , +* for basic document generation, the only software dependency is <b>Ruby,</b> and a few standard Unix tools (this covers plaintext, HTML, EPUB, XML, ODF, LaTeX). To use a database you of course need that, and to convert the LaTeX generated to pdf, a latex processor like tetex or texlive. @@ -4191,108 +4217,143 @@ may be also be accessed via the html pages[^29] <<a href='http://www.jus.uio.no/sisu/man/sisu_webrick.1.html'>http://www.jus.uio.no/sisu/man/sisu_webrick.1.html</a> ><br> -<p> 1. objects include: headings, paragraphs, verse, tables, images, but not +<p> +<ol> +<b>.</b><li>objects include: headings, paragraphs, verse, tables, images, but not footnotes/endnotes which are numbered separately and tied to the object from which they are referenced. <p> <br> -2. i.e. the html, pdf, epub, odf outputs are each built individually and optimised +</li><b>.</b><li>i.e. the html, pdf, epub, odf outputs are each built individually and optimised for that form of presentation, rather than for example the html being a saved version of the odf, or the pdf being a saved version of the html. <p> <br> -3. the different heading levels +</li><b>.</b><li> +<p>the different heading levels <p> <br> -4. units of text, primarily paragraphs and headings, also any tables, poems, +</li><b>.</b><li>units of text, primarily paragraphs and headings, also any tables, poems, <p>code-blocks <p> <br> -5. Specification submitted by Adobe to ISO to become a full open ISO specification +</li><b>.</b><li> +<p>Specification submitted by Adobe to ISO to become a full open ISO specification + +<p> <br> <<a href='http://www.linux-watch.com/news/NS7542722606.html'>http://www.linux-watch.com/news/NS7542722606.html</a> > <p> <br> -6. ISO standard ISO/IEC 26300:2006 +</li><b>.</b><li> +<p>ISO standard ISO/IEC 26300:2006 <p> <br> -7. An open standard format for e-books +</li><b>.</b><li> +<p>An open standard format for e-books <p> <br> -*1. square brackets +</dd> + +<dt><b>*1.</b> </dt> +<dd>square brackets <p> <br> -*2. square brackets +</dd> + +<dt><b>*2.</b> </dt> +<dd>square brackets <p> <br> -+1. square brackets +</dd> + +<dt><b>+1.</b> </dt> +<dd>square brackets <p> <br> -8. <<a href='http://www.jus.uio.no/sisu/man/'>http://www.jus.uio.no/sisu/man/</a> +</li><b>.</b><li><<a href='http://www.jus.uio.no/sisu/man/'>http://www.jus.uio.no/sisu/man/</a> > <p> <br> -9. <<a href='http://www.jus.uio.no/sisu/man/sisu.1.html'>http://www.jus.uio.no/sisu/man/sisu.1.html</a> +</li><b>.</b><li><<a href='http://www.jus.uio.no/sisu/man/sisu.1.html'>http://www.jus.uio.no/sisu/man/sisu.1.html</a> > <p> <br> -10. From sometime after SiSU 0.58 it should be possible to describe SiSU -markup using SiSU, which though not an original design goal is useful. -<p> -<br> -11. files should be prepared using UTF-8 character encoding +</li><b>.</b><li>From sometime after SiSU 0.58 it should be possible to describe SiSU markup +using SiSU, which though not an original design goal is useful. <p> <br> -12. a footnote or endnote +</li><b>.</b><li> +<p>files should be prepared using UTF-8 character encoding <p> <br> -13. self contained endnote marker & endnote in one +</li><b>.</b><li> +<p>a footnote or endnote <p> <br> -* unnumbered asterisk footnote/endnote, insert multiple asterisks if required +</li><b>.</b><li>self contained endnote marker & endnote in one +<p> <br> +</dd> + +<dt><b>*.</b> </dt> +<dd>unnumbered asterisk footnote/endnote, insert multiple asterisks if required <p> <br> -** another unnumbered asterisk footnote/endnote +</dd> + +<dt><b>**.</b> </dt> +<dd>another unnumbered asterisk footnote/endnote <p> <br> -*3. editors notes, numbered asterisk footnote/endnote series +</dd> + +<dt><b>*3.</b> </dt> +<dd>editors notes, numbered asterisk footnote/endnote series <p> <br> -+2. editors notes, numbered asterisk footnote/endnote series +</dd> + +<dt><b>+2.</b> </dt> +<dd>editors notes, numbered asterisk footnote/endnote series <p> <br> -14 <<a href='http://www.sisudoc.org/'>http://www.sisudoc.org/</a> +</li><b>.</b><li><<a href='http://www.sisudoc.org/'>http://www.sisudoc.org/</a> > <p> <br> -15. <<a href='http://www.ruby-lang.org/en/'>http://www.ruby-lang.org/en/</a> +</li><b>.</b><li><<a href='http://www.ruby-lang.org/en/'>http://www.ruby-lang.org/en/</a> > <p> <br> -16. Table from the Wealth of Networks by Yochai Benkler <<a href='http://www.jus.uio.no/sisu/the_wealth_of_networks.yochai_benkler'>http://www.jus.uio.no/sisu/the_wealth_of_networks.yochai_benkler</a> +</li><b>.</b><li> +<p>Table from the Wealth of Networks by Yochai Benkler +<p> <br> +<<a href='http://www.jus.uio.no/sisu/the_wealth_of_networks.yochai_benkler'>http://www.jus.uio.no/sisu/the_wealth_of_networks.yochai_benkler</a> > - <p> <br> -17. .ssc (for composite) is under consideration but ._sst makes clear that -this is not a regular file to be worked on, and thus less likely that people -will have subsequent processing. It may be however that when the resulting -file is shared +</li><b>.</b><li>.ssc (for composite) is under consideration but ._sst makes clear that this +is not a regular file to be worked on, and thus less likely that people +will have "accidents", working on a .ssc file that is overwritten by subsequent +processing. It may be however that when the resulting file is shared .ssc +is an appropriate suffix to use. +<p> <br> +</li><b>.</b><li><<a href='http://www.postgresql.org/'>http://www.postgresql.org/</a> +> <p> <br> -19. <<a href='http://www.postgresql.org/'>http://www.postgresql.org/</a> -> <br> <<a href='http://advocacy.postgresql.org/'>http://advocacy.postgresql.org/</a> > <br> <<a href='http://en.wikipedia.org/wiki/Postgresql'>http://en.wikipedia.org/wiki/Postgresql</a> > <br> -20. <<a href='http://www.hwaci.com/sw/sqlite/'>http://www.hwaci.com/sw/sqlite/</a> -> <br> +</li><b>.</b><li><<a href='http://www.hwaci.com/sw/sqlite/'>http://www.hwaci.com/sw/sqlite/</a> +> +<p> <br> <<a href='http://en.wikipedia.org/wiki/Sqlite'>http://en.wikipedia.org/wiki/Sqlite</a> > <br> -21. <<a href='http://search.sisudoc.org'>http://search.sisudoc.org</a> +</li><b>.</b><li><<a href='http://search.sisudoc.org'>http://search.sisudoc.org</a> > <p> <br> -22. (which could be extended further with current back-end). As regards scaling +</li><b>.</b><li>(which could be extended further with current back-end). As regards scaling of the database, it is as scalable as the database (here Postgresql) and hardware allow. <p> <br> -23. of this feature when demonstrated to an IBM software innovations evaluator +</li><b>.</b><li>of this feature when demonstrated to an IBM software innovations evaluator in 2004 he said to paraphrase: this could be of interest to us. We have large document management systems, you can search hundreds of thousands of documents and we can tell you which documents meet your search criteria, but there is no way we can tell you without opening each document where within each your matches are found. <p> <br> -24. There is nothing to stop MySQL support being added in future. +</li><b>.</b><li>There is nothing to stop MySQL support being added in future. <p> <br> -25. <<a href='http://www.jus.uio.no/sisu/man/sisu.1.html'>http://www.jus.uio.no/sisu/man/sisu.1.html</a> +</li><b>.</b><li><<a href='http://www.jus.uio.no/sisu/man/sisu.1.html'>http://www.jus.uio.no/sisu/man/sisu.1.html</a> > <p> <br> -26. <<a href='http://www.jus.uio.no/sisu/man/sisu.8.html'>http://www.jus.uio.no/sisu/man/sisu.8.html</a> +</li><b>.</b><li><<a href='http://www.jus.uio.no/sisu/man/sisu.8.html'>http://www.jus.uio.no/sisu/man/sisu.8.html</a> > <p> <br> -27. <<a href='http://www.jus.uio.no/sisu/man'>http://www.jus.uio.no/sisu/man</a> +</li><b>.</b><li><<a href='http://www.jus.uio.no/sisu/man'>http://www.jus.uio.no/sisu/man</a> > <p> <br> 28. the <b>Debian</b> Free Software guidelines require that everything distributed @@ -4301,7 +4362,9 @@ while freely distributable are not freely changeable. <p> <br> 29. named index.html or more extensively through sisu_manifest.html <br> -<p> +<p> </li> +</ol> + <h2><a name='sect131' href='#toc131'>See Also</a></h2> <br> <a href='http:~/bin/man2html?sisu:1'><i>sisu</i>(1)</a> @@ -4366,20 +4429,20 @@ More information about <b>SiSU</b> can be found at <<a href='http://www.sisud <li><a name='toc25' href='#sect25'>9.1 Heading Levels</a></li> <li><a name='toc26' href='#sect26'>9.2 Font Attributes</a></li> <li><a name='toc27' href='#sect27'>9.3 Indentation and Bullets</a></li> -<li><a name='toc28' href='#sect28'>9.4 Footnotes / Endnotes</a></li> -<li><a name='toc29' href='#sect29'>9.5 Links</a></li> -<li><a name='toc30' href='#sect30'>9.5.1 Naked Urls Within Text, Dealing with Urls</a></li> -<li><a name='toc31' href='#sect31'>9.5.2 Linking Text</a></li> -<li><a name='toc32' href='#sect32'>9.5.3 Linking Images</a></li> -<li><a name='toc33' href='#sect33'>9.6 Grouped Text</a></li> -<li><a name='toc34' href='#sect34'>9.6.1 Tables</a></li> -<li><a name='toc35' href='#sect35'>9.6.2 Poem</a></li> -<li><a name='toc36' href='#sect36'>9.6.3 Group</a></li> -<li><a name='toc37' href='#sect37'>9.6.4 Code</a></li> -<li><a name='toc38' href='#sect38'>9.7 Additional Breaks - Linebreaks Within Objects, Column and Page-breaks</a></li> -<li><a name='toc39' href='#sect39'>9.7.1 Line-breaks</a></li> -<li><a name='toc40' href='#sect40'>9.7.2 Page Breaks</a></li> -<li><a name='toc41' href='#sect41'>9.8 Book Index</a></li> +<li><a name='toc28' href='#sect28'>9.4 Hanging Indents</a></li> +<li><a name='toc29' href='#sect29'>9.5 Footnotes / Endnotes</a></li> +<li><a name='toc30' href='#sect30'>9.6 Links</a></li> +<li><a name='toc31' href='#sect31'>9.6.1 Naked Urls Within Text, Dealing with Urls</a></li> +<li><a name='toc32' href='#sect32'>9.6.2 Linking Text</a></li> +<li><a name='toc33' href='#sect33'>9.7 Grouped Text</a></li> +<li><a name='toc34' href='#sect34'>9.7.1 Tables</a></li> +<li><a name='toc35' href='#sect35'>9.7.2 Poem</a></li> +<li><a name='toc36' href='#sect36'>9.7.3 Group</a></li> +<li><a name='toc37' href='#sect37'>9.7.4 Code</a></li> +<li><a name='toc38' href='#sect38'>9.8 Additional Breaks - Linebreaks Within Objects, Column and Page-breaks</a></li> +<li><a name='toc39' href='#sect39'>9.8.1 Line-breaks</a></li> +<li><a name='toc40' href='#sect40'>9.8.2 Page Breaks</a></li> +<li><a name='toc41' href='#sect41'>9.9 Book Index</a></li> <li><a name='toc42' href='#sect42'>10. Composite Documents Markup</a></li> <li><a name='toc43' href='#sect43'>Markup Syntax History</a></li> <li><a name='toc44' href='#sect44'>11. Notes Related to Files-types and Markup Syntax</a></li> diff --git a/data/doc/sisu/markup-samples/sisu_manual/sisu_commands.sst b/data/doc/sisu/markup-samples/sisu_manual/sisu_commands.sst index a5f380a9..86ac41cf 100644 --- a/data/doc/sisu/markup-samples/sisu_manual/sisu_commands.sst +++ b/data/doc/sisu/markup-samples/sisu_manual/sisu_commands.sst @@ -1,4 +1,4 @@ -% SiSU 2.0 +% SiSU 3.0 @title: SiSU :subtitle: Commands @@ -57,276 +57,282 @@ SiSU is a document publishing system, that from a simple single marked-up docume 2~ Document Processing Command Flags -!_ -a [filename/wildcard] <br> +!_ -a [filename/wildcard] \\ produces plaintext with Unix linefeeds and without markup, (object numbers are omitted), has footnotes at end of each paragraph that contains them [ -A for equivalent dos (linefeed) output file] [see -e for endnotes]. (Options include: --endnotes for endnotes --footnotes for footnotes at the end of each paragraph --unix for unix linefeed (default) --msdos for msdos linefeed) -!_ -b [filename/wildcard] <br> +!_ -b [filename/wildcard] \\ see --xhtml -!_ --color-toggle [filename/wildcard] <br> +!_ --color-toggle [filename/wildcard] \\ screen toggle ansi screen colour on or off depending on default set (unless -c flag is used: if sisurc colour default is set to 'true', output to screen will be with colour, if sisurc colour default is set to 'false' or is undefined screen output will be without colour). Alias -c -!_ --concordance [filename/wildcard] <br> +!_ --concordance [filename/wildcard] \\ produces concordance (wordmap) a rudimentary index of all the words in a document. (Concordance files are not generated for documents of over 260,000 words unless this limit is increased in the file sisurc.yml). Alias -w -!_ -C [--init-site] <br> +!_ -C [--init-site] \\ configure/initialise shared output directory files initialize shared output directory (config files such as css and dtd files are not updated if they already exist unless modifier is used). -C --init-site configure/initialise site more extensive than -C on its own, shared output directory files/force update, existing shared output config files such as css and dtd files are updated if this modifier is used. -!_ -CC <br> +!_ -CC \\ configure/initialise shared output directory files initialize shared output directory (config files such as css and dtd files are not updated if they already exist unless modifier is used). The equivalent of: -C --init-site configure/initialise site, more extensive than -C on its own, shared output directory files/force update, existing shared output config files such as css and dtd files are updated if -CC is used. -!_ -c [filename/wildcard] <br> +!_ -c [filename/wildcard] \\ see --color-toggle -!_ --dal [filename/wildcard/url] <br> +!_ --dal [filename/wildcard/url] \\ assumed for most other flags, creates new intermediate files for processing (document abstraction) that is used in all subsequent processing of other output. This step is assumed for most processing flags. To skip it see -n. Alias -m -!_ --delete [filename/wildcard] <br> +!_ --delete [filename/wildcard] \\ see --zap -!_ -D [instruction] [filename] <br> +!_ -D [instruction] [filename] \\ see --pg -!_ -d [--db-[database type (sqlite|pg)]] --[instruction] [filename] <br> +!_ -d [--db-[database type (sqlite|pg)]] --[instruction] [filename] \\ see --sqlite -!_ --epub [filename/wildcard] <br> +!_ --epub [filename/wildcard] \\ produces an epub document, [sisu version >=2 ] (filename.epub). Alias -e -!_ -e [filename/wildcard] <br> +!_ -e [filename/wildcard] \\ see --epub -!_ --find [optional string part of filename] <br> +!_ --find [optional string part of filename] \\ without match string, glob all .sst .ssm files in directory (including language subdirectories). With match string, find files that match given string in directory (including language subdirectories). Alias -f, --glob, -G -!_ -F [--webserv=webrick] <br> +!_ -F [--webserv=webrick] \\ see --sample-search-form -!_ -f [optional string part of filename] <br> +!_ -f [optional string part of filename] \\ see --find -!_ --git [filename/wildcard] <br> +!_ --git [filename/wildcard] \\ produces or updates markup source file structure in a git repo (experimental and subject to change). Alias -g -!_ --glob [optional string part of filename] <br> +!_ --glob [optional string part of filename] \\ see --find -!_ -G [optional string part of filename] <br> +!_ -G [optional string part of filename] \\ see --find -!_ -g [filename/wildcard] <br> +!_ -g [filename/wildcard] \\ see --git -!_ --harvest *.ss[tm] <br> +!_ --harvest *.ss[tm] \\ makes two lists of sisu output based on the sisu markup documents in a directory: list of author and authors works (year and titles), and; list by topic with titles and author. Makes use of header metadata fields (author, title, date, topic_register). Can be used with maintenance (-M) and remote placement (-R) flags. -!_ --help [topic] <br> +!_ --help [topic] \\ provides help on the selected topic, where topics (keywords) include: list, (com)mands, short(cuts), (mod)ifiers, (env)ironment, markup, syntax, headers, headings, endnotes, tables, example, customise, skin, (dir)ectories, path, (lang)uage, db, install, setup, (conf)igure, convert, termsheet, search, sql, features, license -!_ --html [filename/wildcard] <br> +!_ --html [filename/wildcard] \\ produces html output, segmented text with table of contents (toc.html and index.html) and the document in a single file (scroll.html). Alias -h -!_ -h [filename/wildcard] <br> +!_ -h [filename/wildcard] \\ see --html -!_ -I [filename/wildcard] <br> +!_ -I [filename/wildcard] \\ see --texinfo -!_ -i [filename/wildcard] <br> +!_ -i [filename/wildcard] \\ see --manpage -!_ --keep-processing-files [filename/wildcard/url] <br> +!_ --keep-processing-files [filename/wildcard/url] \\ see --maintenance -!_ -L <br> +!_ -L \\ prints license information. -!_ --machine [filename/wildcard/url] <br> +!_ --machine [filename/wildcard/url] \\ see --dal (document abstraction level/layer) -!_ --maintenance [filename/wildcard/url] <br> +!_ --maintenance [filename/wildcard/url] \\ maintenance mode, interim processing files are preserved and their locations indicated. (also see -V). Aliases -M and --keep-processing-files -!_ --manpage [filename/wildcard] <br> +!_ --manpage [filename/wildcard] \\ produces man page of file, not suitable for all outputs. Alias -i -!_ -M [filename/wildcard/url] <br> +!_ -M [filename/wildcard/url] \\ see --maintenance -!_ -m [filename/wildcard/url] <br> +!_ -m [filename/wildcard/url] \\ see --dal (document abstraction level/layer) -!_ --no-ocn <br> +!_ --no-ocn \\ [with --html --pdf or --epub] switches off object citation numbering. Produce output without identifying numbers in margins of html or LaTeX/pdf output. -!_ -N [filename/wildcard/url] <br> +!_ -N [filename/wildcard/url] \\ document digest or document content certificate ( DCC ) as md5 digest tree of the document: the digest for the document, and digests for each object contained within the document (together with information on software versions that produced it) (digest.txt). -NV for verbose digest output to screen. -!_ -n [filename/wildcard/url] <br> +!_ -n [filename/wildcard/url] \\ skip the creation of intermediate processing files (document abstraction) if they already exist, this skips the equivalent of -m which is otherwise assumed by most processing flags. -!_ --odf [filename/wildcard/url] <br> +!_ --odf [filename/wildcard/url] \\ see --odt -!_ --odt [filename/wildcard/url] <br> +!_ --odt [filename/wildcard/url] \\ output basic document in opendocument file format (opendocument.odt). Alias -o -!_ -o [filename/wildcard/url] <br> +!_ -o [filename/wildcard/url] \\ see --odt -!_ --pdf [filename/wildcard] <br> +!_ --pdf [filename/wildcard] \\ produces LaTeX pdf (portrait.pdf & landscape.pdf). Default paper size is set in config file, or document header, or provided with additional command line parameter, e.g. --papersize-a4 preset sizes include: 'A4', U.S. 'letter' and 'legal' and book sizes 'A5' and 'B5' (system defaults to A4). Alias -p -!_ --pg [instruction] [filename] <br> +!_ --pg [instruction] [filename] \\ database postgresql ( --pgsql may be used instead) possible instructions, include: --createdb; --create; --dropall; --import [filename]; --update [filename]; --remove [filename]; see database section below. Alias -D -!_ --po [language_directory/filename language_directory] <br> +!_ --po [language_directory/filename language_directory] \\ see --po4a -!_ --po4a [language_directory/filename language_directory] <br> +!_ --po4a [language_directory/filename language_directory] \\ produces .pot and po files for the file in the languages specified by the language directory. SiSU markup is placed in subdirectories named with the language code, e.g. en/ fr/ es/. The sisu config file must set the output directory structure to multilingual. v3, experimental -!_ -P [language_directory/filename language_directory] <br> +!_ -P [language_directory/filename language_directory] \\ see --po4a -!_ -p [filename/wildcard] <br> +!_ -p [filename/wildcard] \\ see --pdf -!_ --quiet [filename/wildcard] <br> +!_ --qrcode [filename/wildcard] \\ +generate QR code image of metadata (used in manifest). v3 only. + +!_ --quiet [filename/wildcard] \\ quiet less output to screen. -!_ -q [filename/wildcard] <br> +!_ -Q [filename/wildcard] \\ +see --qrcode + +!_ -q [filename/wildcard] \\ see --quiet -!_ --rsync [filename/wildcard] <br> +!_ --rsync [filename/wildcard] \\ copies sisu output files to remote host using rsync. This requires that sisurc.yml has been provided with information on hostname and username, and that you have your "keys" and ssh agent in place. Note the behavior of rsync different if -R is used with other flags from if used alone. Alone the rsync --delete parameter is sent, useful for cleaning the remote directory (when -R is used together with other flags, it is not). Also see --scp. Alias -R -!_ -R [filename/wildcard] <br> +!_ -R [filename/wildcard] \\ see --rsync -!_ -r [filename/wildcard] <br> +!_ -r [filename/wildcard] \\ see --scp -!_ --sample-search-form [--webserv=webrick] <br> +!_ --sample-search-form [--webserv=webrick] \\ generate examples of (naive) cgi search form for sqlite and pgsql depends on your already having used sisu to populate an sqlite and/or pgsql database, (the sqlite version scans the output directories for existing sisu_sqlite databases, so it is first necessary to create them, before generating the search form) see -d -D and the database section below. If the optional parameter --webserv=webrick is passed, the cgi examples created will be set up to use the default port set for use by the webrick server, (otherwise the port is left blank and the system setting used, usually 80). The samples are dumped in the present work directory which must be writable, (with screen instructions given that they be copied to the cgi-bin directory). Alias -F -!_ --scp [filename/wildcard] <br> +!_ --scp [filename/wildcard] \\ copies sisu output files to remote host using scp. This requires that sisurc.yml has been provided with information on hostname and username, and that you have your "keys" and ssh agent in place. Also see --rsync. Alias -r -!_ --sqlite --[instruction] [filename] <br> +!_ --sqlite --[instruction] [filename] \\ database type default set to sqlite, (for which --sqlite may be used instead) or to specify another database --db-[pgsql, sqlite] (however see -D) possible instructions include: --createdb; --create; --dropall; --import [filename]; --update [filename]; --remove [filename]; see database section below. Alias -d -!_ --sisupod <br> +!_ --sisupod \\ produces a sisupod a zipped sisu directory of markup files including sisu markup source files and the directories local configuration file, images and skins. Note: this only includes the configuration files or skins contained in ./_sisu not those in ~/.sisu -S [filename/wildcard] option. Note: (this option is tested only with zsh). Alias -S -!_ --sisupod [filename/wildcard] <br> +!_ --sisupod [filename/wildcard] \\ produces a zipped file of the prepared document specified along with associated images, by default named sisupod.zip they may alternatively be named with the filename extension .ssp This provides a quick way of gathering the relevant parts of a sisu document which can then for example be emailed. A sisupod includes sisu markup source file, (along with associated documents if a master file, or available in multilingual versions), together with related images and skin. SiSU commands can be run directly against a sisupod contained in a local directory, or provided as a url on a remote site. As there is a security issue with skins provided by other users, they are not applied unless the flag --trust or --trusted is added to the command instruction, it is recommended that file that are not your own are treated as untrusted. The directory structure of the unzipped file is understood by sisu, and sisu commands can be run within it. Note: if you wish to send multiple files, it quickly becomes more space efficient to zip the sisu markup directory, rather than the individual files for sending). See the -S option without [filename/wildcard]. Alias -S -!_ --source [filename/wildcard] <br> +!_ --source [filename/wildcard] \\ copies sisu markup file to output directory. Alias -s -!_ -S <br> +!_ -S \\ see --sisupod -!_ -S [filename/wildcard] <br> +!_ -S [filename/wildcard] \\ see --sisupod -!_ -s [filename/wildcard] <br> +!_ -s [filename/wildcard] \\ see --source -!_ --texinfo [filename/wildcard] <br> +!_ --texinfo [filename/wildcard] \\ produces texinfo and info file, (view with pinfo). Alias -I -!_ --txt [filename/wildcard] <br> +!_ --txt [filename/wildcard] \\ produces plaintext with Unix linefeeds and without markup, (object numbers are omitted), has footnotes at end of each paragraph that contains them [ -A for equivalent dos (linefeed) output file] [see -e for endnotes]. (Options include: --endnotes for endnotes --footnotes for footnotes at the end of each paragraph --unix for unix linefeed (default) --msdos for msdos linefeed). Alias -t -!_ -T [filename/wildcard (*.termsheet.rb)] <br> +!_ -T [filename/wildcard (*.termsheet.rb)] \\ standard form document builder, preprocessing feature -!_ -t [filename/wildcard] <br> +!_ -t [filename/wildcard] \\ see --txt -!_ --urls [filename/wildcard] <br> +!_ --urls [filename/wildcard] \\ prints url output list/map for the available processing flags options and resulting files that could be requested, (can be used to get a list of processing options in relation to a file, together with information on the output that would be produced), -u provides url output mapping for those flags requested for processing. The default assumes sisu_webrick is running and provides webrick url mappings where appropriate, but these can be switched to file system paths in sisurc.yml. Alias -U -!_ -U [filename/wildcard] <br> +!_ -U [filename/wildcard] \\ see --urls -!_ -u [filename/wildcard] <br> +!_ -u [filename/wildcard] \\ provides url mapping of output files for the flags requested for processing, also see -U -!_ --v2 [filename/wildcard] <br> +!_ --v2 [filename/wildcard] \\ invokes the sisu v2 document parser/generator. This is the default and is normally omitted. -!_ --v3 [filename/wildcard] <br> +!_ --v3 [filename/wildcard] \\ invokes the sisu v3 document parser/generator. Currently under development and incomplete, v3 requires >= ruby1.9.2p180. You may run sisu3 instead. -!_ --verbose [filename/wildcard] <br> +!_ --verbose [filename/wildcard] \\ provides verbose output of what is being generated, where output is placed (and error messages if any), as with -u flag provides a url mapping of files created for each of the processing flag requests. Alias -v -!_ -V <br> +!_ -V \\ on its own, provides SiSU version and environment information (sisu --help env) -!_ -V [filename/wildcard] <br> +!_ -V [filename/wildcard] \\ even more verbose than the -v flag. -!_ -v <br> +!_ -v \\ on its own, provides SiSU version information -!_ -v [filename/wildcard] <br> +!_ -v [filename/wildcard] \\ see --verbose -!_ --webrick <br> +!_ --webrick \\ starts ruby's webrick webserver points at sisu output directories, the default port is set to 8081 and can be changed in the resource configuration files. [tip: the webrick server requires link suffixes, so html output should be created using the -h option rather than -H ; also, note -F webrick ]. Alias -W -!_ -W <br> +!_ -W \\ see --webrick -!_ --wordmap [filename/wildcard] <br> +!_ --wordmap [filename/wildcard] \\ see --concordance -!_ -w [filename/wildcard] <br> +!_ -w [filename/wildcard] \\ see --concordance -!_ --xhtml [filename/wildcard] <br> +!_ --xhtml [filename/wildcard] \\ produces xhtml/XML output for browser viewing (sax parsing). Alias -b -!_ --xml-dom [filename/wildcard] <br> +!_ --xml-dom [filename/wildcard] \\ produces XML output with deep document structure, in the nature of dom. Alias -X -!_ --xml-sax [filename/wildcard] <br> +!_ --xml-sax [filename/wildcard] \\ produces XML output shallow structure (sax parsing). Alias -x -!_ -X [filename/wildcard] <br> +!_ -X [filename/wildcard] \\ see --xml-dom -!_ -x [filename/wildcard] <br> +!_ -x [filename/wildcard] \\ see --xml-sax -!_ -Y [filename/wildcard] <br> +!_ -Y [filename/wildcard] \\ produces a short sitemap entry for the document, based on html output and the sisu_manifest. --sitemaps generates/updates the sitemap index of existing sitemaps. (Experimental, [g,y,m announcement this week]) -!_ -y [filename/wildcard] <br> +!_ -y [filename/wildcard] \\ produces an html summary of output generated (hyperlinked to content) and document specific metadata (sisu_manifest.html). This step is assumed for most processing flags. -!_ --zap [filename/wildcard] <br> +!_ --zap [filename/wildcard] \\ Zap, if used with other processing flags deletes output files of the type about to be processed, prior to processing. If -Z is used as the lone processing related flag (or in conjunction with a combination of -[mMvVq]), will remove the related document output directory. Alias -Z -!_ -Z [filename/wildcard] <br> +!_ -Z [filename/wildcard] \\ see --zap 1~command_modifiers command line modifiers -!_ --no-ocn <br> +!_ --no-ocn \\ [with --html --pdf or --epub] switches off object citation numbering. Produce output without identifying numbers in margins of html or LaTeX/pdf output. -!_ --no-annotate <br> +!_ --no-annotate \\ strips output text of editor endnotes~[* square brackets ]~ denoted by asterisk or dagger/plus sign -!_ --no-asterisk <br> +!_ --no-asterisk \\ strips output text of editor endnotes~[* square brackets ]~ denoted by asterisk sign -!_ --no-dagger <br> +!_ --no-dagger \\ strips output text of editor endnotes~[+ square brackets ]~ denoted by dagger/plus sign 1~commands_database database commands @@ -335,50 +341,50 @@ dbi - database interface -D or --pgsql set for postgresql -d or --sqlite default set for sqlite -d is modifiable with --db=[database type (pgsql or sqlite)] -!_ --pg -v --createall <br> +!_ --pg -v --createall \\ initial step, creates required relations (tables, indexes) in existing postgresql database (a database should be created manually and given the same name as working directory, as requested) (rb.dbi) [ -dv --createall sqlite equivalent] it may be necessary to run sisu -Dv --createdb initially NOTE: at the present time for postgresql it may be necessary to manually create the database. The command would be 'createdb [database name]' where database name would be SiSU_[present working directory name (without path)]. Please use only alphanumerics and underscores. -!_ --pg -v --import <br> +!_ --pg -v --import \\ [filename/wildcard] imports data specified to postgresql db (rb.dbi) [ -dv --import sqlite equivalent] -!_ --pg -v --update <br> +!_ --pg -v --update \\ [filename/wildcard] updates/imports specified data to postgresql db (rb.dbi) [ -dv --update sqlite equivalent] -!_ --pg --remove <br> +!_ --pg --remove \\ [filename/wildcard] removes specified data to postgresql db (rb.dbi) [ -d --remove sqlite equivalent] -!_ --pg --dropall <br> +!_ --pg --dropall \\ kills data" and drops (postgresql or sqlite) db, tables & indexes [ -d --dropall sqlite equivalent] The -v is for verbose output. 1~command_shorcuts Shortcuts, Shorthand for multiple flags -!_ --update [filename/wildcard] <br> +!_ --update [filename/wildcard] \\ Checks existing file output and runs the flags required to update this output. This means that if only html and pdf output was requested on previous runs, only the -hp files will be applied, and only these will be generated this time, together with the summary. This can be very convenient, if you offer different outputs of different files, and just want to do the same again. -!_ -0 to -5 [filename or wildcard] <br> -Default shorthand mappings (note that the defaults can be changed/configured in the sisurc.yml file): +!_ -0 to -5 [filename or wildcard] \\ +Default shorthand mappings (for v3, note that the defaults can be changed/configured in the sisurc.yml file): -!_ -0 <br> --mNhwpAobxXyYv [this is the default action run when no options are give, i.e. on 'sisu [filename]'] +!_ -0 \\ +-NQhewpotbxXyYv [this is the default action run when no options are give, i.e. on 'sisu [filename]'] -!_ -1 <br> --mhewpy +!_ -1 \\ +-Qhewpoty -!_ -2 <br> --mhewpaoy +!_ -2 \\ +-NQhewpotbxXy -!_ -3 <br> --mhewpAobxXyY +!_ -3 \\ +-NQhewpotbxXyY -!_ -4 <br> --mhewpAobxXDyY --import +!_ -4 \\ +-NQhewpotbxXDyY --update -!_ -5 <br> --mhewpAobxXDyY --update +!_ -5 \\ +-NQhewpotbxXDyYv --update -add -v for verbose mode and -c for color, e.g. sisu -2vc [filename or wildcard] +add -v for verbose mode and -c to toggle color state, e.g. sisu -2vc [filename or wildcard] consider -u for appended url info or -v for verbose output diff --git a/data/doc/sisu/markup-samples/sisu_manual/sisu_markup.sst b/data/doc/sisu/markup-samples/sisu_manual/sisu_markup.sst index a246d160..735f00ea 100644 --- a/data/doc/sisu/markup-samples/sisu_manual/sisu_markup.sst +++ b/data/doc/sisu/markup-samples/sisu_manual/sisu_markup.sst @@ -123,7 +123,10 @@ code{ @title: SiSU :subtitle: Manual -@creator: :author: Amissah, Ralph +@creator: + :author: Amissah, Ralph + +@publisher: [publisher name] @rights: Copyright (C) Ralph Amissah 2007, part of SiSU documentation, License GPL 3 @@ -440,6 +443,30 @@ _# numbered list numbered list indented a., b., c., d., etc. }code +2~ Hanging Indents + +!_ markup example: + +code{ + +_0_1 first line no indent, +rest of paragraph indented one step + +_1_0 first line indented, +rest of paragraph no indent + +in each case level may be 0-9 + +}code + +!_ resulting output: + +_0_1 first line no indent, rest of paragraph indented one step + +_1_0 first line indented, rest of paragraph no indent + +in each case level may be 0-9 + 2~ Footnotes / Endnotes Footnotes and endnotes are marked up at the location where they would be indicated within a text. They are automatically numbered. The output type determines whether footnotes or endnotes will be produced diff --git a/data/sisu/v3/conf/editor-syntax-etc/emacs/sisu-mode.el b/data/sisu/v3/conf/editor-syntax-etc/emacs/sisu-mode.el index 8ea5c023..84e7cbef 100644 --- a/data/sisu/v3/conf/editor-syntax-etc/emacs/sisu-mode.el +++ b/data/sisu/v3/conf/editor-syntax-etc/emacs/sisu-mode.el @@ -251,15 +251,23 @@ ;;indented text (cons "^_[1-9] " 'general-font-lock-red1) + (cons "^_[1-9]! " 'general-font-lock-red1) + + ;hanging indented text [proposed enable when implemented] + (cons "^__[1-9] " 'general-font-lock-red1) + (cons "^_[0-9]_[0-9] " 'general-font-lock-red1) + (cons "^__[1-9]! " 'general-font-lock-red1) + (cons "^_[0-9]_[0-9]! " 'general-font-lock-red1) ;;url (cons "\\(^\\|[ ]\\)http:[/][/][^ \t\n\r<]+" 'general-font-lock-blue2) -;; \\|\$ - ;; Comment Lines (cons "^% .*" 'general-font-lock-blue1) + ;; line break + (cons " \\\\\\\\ " 'general-font-lock-red1) + ;; line break (depreciated) (cons "<br>" 'general-font-lock-red1) ;; Section titles diff --git a/data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim b/data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim index 00c02a34..7416f809 100644 --- a/data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim +++ b/data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim @@ -1,7 +1,7 @@ " SiSU Vim syntax file " SiSU Maintainer: Ralph Amissah <ralph@amissah.com> -" SiSU Markup: SiSU (sisu-3.0.13) -" Last Change: 2011-06-26 +" SiSU Markup: SiSU (sisu-3.0.14) +" Last Change: 2011-07-24 " URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim;hb=HEAD> "(originally looked at Ruby Vim by Mirko Nasato) @@ -12,9 +12,10 @@ elseif exists("b:current_syntax") else endif -" Errors: +"% "Errors: syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>" -" Markers Identifiers: + +"% "Markers Identifiers: if !exists("sisu_no_identifiers") syn match sisu_mark_endnote "\~^" syn match sisu_break contains=@NoSpell " \\\\\( \|$\)" @@ -35,14 +36,18 @@ if !exists("sisu_no_identifiers") syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^._-]\+\.ss[it]$" syn match sisu_require contains=@NoSpell "^<<{[a-zA-Z0-9^._-]\+\.ss[it]}$" syn match sisu_structure "^:A\~$" + +"% "Document Sub Headers: syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content - syn match sisu_sub_header_creator "^\s\+:\(author\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution + syn match sisu_sub_header_creator "^\s\+:\(author\|editor\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license syn match sisu_sub_header_classify "^\s\+:\(topic_register\|coverage\|format\|identifier\|keywords\|relation\|subject\|type\|dewey\|loc\|oclc\|pg\|isbn\):\s" syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s" syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s" syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|plaintext_wrap\|texpdf_font\|skin\|stamp\|promo\|ad\|manpage\):\s" syn match sisu_sub_header_notes "^\s\+:\(abstract\|comment\|description\|history\|prefix\|prefix_[ab]\|suffix\):\s" + +"% "semantic markers: (ignore) syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]" syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]" syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]" @@ -53,77 +58,123 @@ if !exists("sisu_no_identifiers") syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+" endif -"URLs Numbers And ASCII Codes: +"% "URLs Numbers And ASCII Codes: syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)" -"Tuned Error: (is error if not already matched) +"% "Tuned Error: (is error if not already matched) syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" syn match sisu_error contains=sisu_error "<a href\|</a>]" -"Simple Paired Enclosed Markup: +"% "Simple Paired Enclosed Markup: "url/link syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" -"header + +"% "Document Header: +" title syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" creator syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" dates syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_date matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" publisher syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" rights syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" classify document syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" original language (depreciated) syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" notes syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" links of interest syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" make, processing instructions syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -"headings -syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$" -"block/group text -syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table" -syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$" + +"% "Headings: +syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$" + +"% "Block Group Text: +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table" +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$" +" block, group, poem, alt syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\(block\|group\|poem\|alt\){" end="^}\(block\|group\|poem\|alt\)" +" code syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code" -"endnotes -syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" -syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" -syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$" -"links and images -syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline -syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline -syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline -"some line operations -syn region sisu_control contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_control start="\(\(^\| \)!_ \|<:b>\)" end="$" -syn region sisu_normal contains=sisu_fontface,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$" + +"% "Endnotes: +" regular endnote or asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" +" numbered asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" +" endnote content marker (for binary content marking) +syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$" + +"% "Links And Images: +" image with url link (and possibly footnote of url) +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline +" sisu outputs, short notation +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline +" image +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline + +"% "Some Line Operations: +" bold line +syn region sisu_bold contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^!_ " end=" \\\\\|$" +" indent and bullet paragraph +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$" +" indent and bullet (bold start) paragraph +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\)!_\? " end=" \\\\\|$" +" hanging indent paragraph [proposed] +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9] " end="$" +" hanging indent (bold start/ definition) paragraph [proposed] +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9]!_\? " end=" \\\\\|$" +" list numbering syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" -"font face curly brackets + +"% "Font Face Curly Brackets: "syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline +" book index: syn region sisu_index matchgroup=sisu_index_block start="^={" end="}" -syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" -syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" -syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" -syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/" -syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" -syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" -syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," -syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#" +" emphasis: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" +" bold: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" +" underscore: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" +" italics: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/" +" added: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" +" superscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" +" subscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," +" monospace: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#" +" strikethrough: syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" -syn region sisu_html contains=sisu_error contains=sisu_strikeout matchgroup=sisu_contain start="<a href=\".\{-}\">" end="</a>" oneline -"single words bold italicise etc. "workon -syn region sisu_control contains=sisu_error matchgroup=sisu_control start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline + +"% "Single Words Bold Italicise Etc: (depreciated) +syn region sisu_bold contains=sisu_error matchgroup=sisu_bold start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline "misc syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline -"Expensive Mode: +"% "Expensive Mode: if !exists("sisu_no_expensive") else " not Expensive syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline endif " Expensive? -"Headers And Headings: (Document Instructions) +"% "Headers And Headings: (Document Instructions) syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" -"Errors: +"% "Errors: syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]" syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" syn match sisu_error_wspace contains=sisu_error_wspace "\s\+$" @@ -147,16 +198,17 @@ syn match sisu_error contains=sisu_error "<dir>" syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>" syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n$" -"Error Exceptions: +"% "Error Exceptions: syn match sisu_control "\n$" "contains=ALL -syn match sisu_control " //" +"syn match sisu_control " //" syn match sisu_error "%{" syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>" syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]" syn match sisu_comment "^%\{1,2\}.\+" -"Definitions Default Highlighting: +"% "Definitions Default Highlighting: hi def link sisu_normal Normal +hi def link sisu_bold Statement hi def link sisu_header PreProc hi def link sisu_header_content Normal hi def link sisu_sub_header_title Statement diff --git a/data/sisu/v3/v/version.yml b/data/sisu/v3/v/version.yml index 681fd4c9..98cdbc06 100644 --- a/data/sisu/v3/v/version.yml +++ b/data/sisu/v3/v/version.yml @@ -1,5 +1,5 @@ --- -:version: 3.0.13-beta-rb1.9.2p180 -:date_stamp: 2011w25/7 -:date: "2011-06-26" +:version: 3.0.14-beta-rb1.9.2p180 +:date_stamp: 2011w30/2 +:date: "2011-07-26" :project: SiSU diff --git a/lib/sisu/v3/cgi_sql_common.rb b/lib/sisu/v3/cgi_sql_common.rb index 8dce0743..5a2b9fde 100644 --- a/lib/sisu/v3/cgi_sql_common.rb +++ b/lib/sisu/v3/cgi_sql_common.rb @@ -138,7 +138,7 @@ module SiSU_CGI_sql search_field='' if checked_echo !~/\S/ @base,@search_field,@selected_db,@result_type,@checked_sql_limit,@checked_tip,@checked_stats,@checked_searched,@checked_url,@checked_case,@checked_echo,@checked_sql,@checked_all,@checked_none,@checked_selected,@checked_default,@search_note,@the_can=base,search_field,selected_db,result_type,checked_sql_limit,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can @tip=if checked_tip =~/\S/ - '<font size="2" color="#666666">text:__; fulltxt:__; keywords:__; title:__; author:__; topic_register:__; subject:__; description:__; publisher:__; contributor:__; date:__; type:__; format:__; identifier:__; source:__; language:__; relation:__; coverage:__; rights:__; comment:__; abstract:__; filename:__;</font><br />' + '<font size="2" color="#666666">text:__; fulltxt:__; keywords:__; title:__; author:__; topic_register:__; subject:__; description:__; publisher:__; editor:__; contributor:__; date:__; type:__; format:__; identifier:__; source:__; language:__; relation:__; coverage:__; rights:__; comment:__; abstract:__; filename:__;</font><br />' else '' end end @@ -231,10 +231,10 @@ module SiSU_CGI_sql def search_request <<-'WOK_SQL' class Search_request #% search_for - attr_accessor :text1,:fulltext,:keywords,:title,:author,:topic_register,:subject,:description,:publisher,:contributor,:date,:type,:format,:identifier,:source,:language,:relation,:coverage,:rights,:comment,:abstract,:owner,:date_created,:date_issued,:date_modified,:date_available,:date_valid,:filename + attr_accessor :text1,:fulltext,:keywords,:title,:author,:topic_register,:subject,:description,:publisher,:editor,:contributor,:date,:type,:format,:identifier,:source,:language,:relation,:coverage,:rights,:comment,:abstract,:owner,:date_created,:date_issued,:date_modified,:date_available,:date_valid,:filename def initialize(search_field='',q='') @search_field,@q=search_field,q - @text1=@fulltext=@keywords=@title=@author=@topic_register=@subject=@description=@publisher=@contributor=@date=@type=@format=@identifier=@source=@language=@relation=@coverage=@rights=@comment=@abstract=@owner=@date_created=@date_issued=@date_modified=@date_available=@date_valid=@filename='' + @text1=@fulltext=@keywords=@title=@author=@topic_register=@subject=@description=@publisher=@editor=@contributor=@date=@type=@format=@identifier=@source=@language=@relation=@coverage=@rights=@comment=@abstract=@owner=@date_created=@date_issued=@date_modified=@date_available=@date_valid=@filename='' if @search_field=~/\S/ @text1=text_to_match('text:') @fulltext=text_to_match('fulltxt:') @@ -244,6 +244,7 @@ module SiSU_CGI_sql @subject=text_to_match('subj(?:ect)?:') # DublinCore 3 - subject @description=text_to_match('description:') # DublinCore 4 - description @publisher=text_to_match('pub(?:lisher)?:') # DublinCore 5 - publisher + @editor=text_to_match('editor:') @contributor=text_to_match('contributor:') # DublinCore 6 - contributor @date=text_to_match('date:') # DublinCore 7 - date dd-mm-yy @type=text_to_match('type:') # DublinCore 8 - type @@ -275,6 +276,7 @@ module SiSU_CGI_sql @subject=q['sj'] if q['sj']=~/\S/ @description=q['dsc'] if q['dsc']=~/\S/ @publisher=q['pb'] if q['pb']=~/\S/ + @editor=q['cntr'] if q['cntr']=~/\S/ @contributor=q['cntr'] if q['cntr']=~/\S/ @date=q['dt'] if q['dt']=~/\S/ @type=q['ty'] if q['ty']=~/\S/ @@ -381,6 +383,11 @@ module SiSU_CGI_sql search[:text] << st[:search] search[:endnotes] << st[:search] end + st=Dbi_search_string.new('metadata_and_text.creator_editor',search_for.editor,q['cntr'],cse).string + if st[:flag] + search[:text] << st[:search] + search[:endnotes] << st[:search] + end st=Dbi_search_string.new('metadata_and_text.creator_contributor',search_for.contributor,q['cntr'],cse).string if st[:flag] search[:text] << st[:search] @@ -709,6 +716,7 @@ module SiSU_CGI_sql sj='&sj=' + CGI.escape(@search_for.subject) if @search_for.subject=~/\S/ dsc='&dsc=' + CGI.escape(@search_for.description) if @search_for.description=~/\S/ pb='&pb=' + CGI.escape(@search_for.publisher) if @search_for.publisher=~/\S/ + edt='&edt=' + CGI.escape(@search_for.editor) if @search_for.editor=~/\S/ cntr='&cntr=' + CGI.escape(@search_for.contributor) if @search_for.contributor=~/\S/ dt='&dt=' + CGI.escape(@search_for.date) if @search_for.date=~/\S/ ty='&ty=' + CGI.escape(@search_for.type) if @search_for.type=~/\S/ @@ -727,8 +735,8 @@ module SiSU_CGI_sql dtv='&dtv=' + CGI.escape(@search_for.date_valid) if @search_for.date_valid=~/\S/ fns='&fns=' + CGI.escape(@search_for.filename) if @search_for.filename=~/\S/ @@canned_search_url=(checked_all =~/checked/) \ - ? "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}&a=1" \ - : "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}" + ? "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{edt}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}&a=1" \ + : "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{edt}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}" mod=ft=~/\S+/ ? (ft.gsub(/ft/,'s1')) : s1 @canned_base_url="#{@base}?#{mod}&db=#{cgi['db']}" if checked_case=~/\S/ @@ -762,12 +770,13 @@ module SiSU_CGI_sql green=%{<font size="2" color="#004000">} canned_search_url_txt=CGI.escapeHTML(@@canned_search_url) the_can=%{<font size="2" color="#666666">#{canned_note} <a href="#{@@canned_search_url}">#{canned_search_url_txt}</a></font><br />} - p_text=p_fulltext=p_keywords=p_title=p_author=p_topic_register=p_subject=p_description=p_publisher=p_contributor=p_date=p_type=p_format=p_identifier=p_source=p_language=p_relation=p_coverage=p_rights=p_comment=p_abstract=p_filename='' + p_text=p_fulltext=p_keywords=p_title=p_author=p_topic_register=p_subject=p_description=p_publisher=p_editor=p_contributor=p_date=p_type=p_format=p_identifier=p_source=p_language=p_relation=p_coverage=p_rights=p_comment=p_abstract=p_filename='' p_filename=%{filename: #{green}#{@search_for.filename}</font><br />} if @search_for.filename =~/\S+/ p_text=%{text: #{green}#{@search_for.text1}</font><br />} if @search_for.text1 =~/\S+/ p_fulltext=%{fulltxt: #{green}#{@search_for.fulltext}</font><br />} if @search_for.fulltext =~/\S+/ p_title=%{title: #{green}#{@search_for.title}</font><br />} if @search_for.title =~/\S+/ p_author=%{author: #{green}#{@search_for.author}</font><br />} if @search_for.author =~/\S+/ + p_editor=%{editor: #{green}#{@search_for.editor}</font><br />} if @search_for.editor=~/\S+/ p_contributor=%{contributor: #{green}#{@search_for.contributor}</font><br />} if @search_for.contributor =~/\S+/ p_date=%{date: #{green}#{@search_for.date}</font><br />} if @search_for.date =~/\S+/ p_rights=%{rights: #{green}#{@search_for.rights}</font><br />} if @search_for.rights =~/\S+/ @@ -789,7 +798,7 @@ module SiSU_CGI_sql <font size="2" color="#666666"> <b>database:</b> #{green}#{@db}</font>; <b>selected view:</b> #{green}#{cgi['view']}</font> <b>search string:</b> "#{green}#{analyze_format}</font>"<br /> - #{p_text} #{p_fulltext} #{p_keywords} #{p_title} #{p_author} #{p_topic_register} #{p_subject} #{p_description} #{p_publisher} #{p_contributor} #{p_date} #{p_type} #{p_format} #{p_identifier} #{p_source} #{p_language} #{p_relation} #{p_coverage} #{p_rights} #{p_comment} #{p_abstract} #{p_filename} + #{p_text} #{p_fulltext} #{p_keywords} #{p_title} #{p_author} #{p_topic_register} #{p_subject} #{p_description} #{p_publisher} #{p_editor} #{p_contributor} #{p_date} #{p_type} #{p_format} #{p_identifier} #{p_source} #{p_language} #{p_relation} #{p_coverage} #{p_rights} #{p_comment} #{p_abstract} #{p_filename} </font> WOK #eg = %{canned search e.g.:<br /> <a href="#{url}">#{url}</a><br />find: #{analyze}<br />database: #{database}} diff --git a/lib/sisu/v3/constants.rb b/lib/sisu/v3/constants.rb index ae2a3b18..918a581f 100644 --- a/lib/sisu/v3/constants.rb +++ b/lib/sisu/v3/constants.rb @@ -151,8 +151,8 @@ Px[:lv3]= '=' Px[:lv4]= '-' Px[:lv5]= '.' Px[:lv6]= '.' -Db[:name_prefix]="SiSU#{SiSU_version_dir}d_" -Db[:name_prefix_db]="sisu_#{SiSU_version_dir}d_" +Db[:name_prefix]="SiSU#{SiSU_version_dir}e_" +Db[:name_prefix_db]="sisu_#{SiSU_version_dir}e_" Db[:col_title]=800 Db[:col_title_part]=400 Db[:col_title_edition]=10 diff --git a/lib/sisu/v3/css.rb b/lib/sisu/v3/css.rb index 463492af..e86c3076 100644 --- a/lib/sisu/v3/css.rb +++ b/lib/sisu/v3/css.rb @@ -342,7 +342,8 @@ WOK margin-right: 2em; margin-top: 10px; margin-bottom: 0px; - text-indent: 0mm; + padding-left: 0em; + text-indent: 0em; } p, h0, h1, h2, h3, h4, h5, h6 { display: block; @@ -357,16 +358,431 @@ WOK margin-top: 3px; margin-bottom: 3px; } + + /* indent */ + p.norm { } - p.i1 {margin-left: 1em;} - p.i2 {margin-left: 2em;} - p.i3 {margin-left: 3em;} - p.i4 {margin-left: 4em;} - p.i5 {margin-left: 5em;} - p.i6 {margin-left: 6em;} - p.i7 {margin-left: 7em;} - p.i8 {margin-left: 8em;} - p.i9 {margin-left: 9em;} + p.i1 {padding-left: 1em;} + p.i2 {padding-left: 2em;} + p.i3 {padding-left: 3em;} + p.i4 {padding-left: 4em;} + p.i5 {padding-left: 5em;} + p.i6 {padding-left: 6em;} + p.i7 {padding-left: 7em;} + p.i8 {padding-left: 8em;} + p.i9 {padding-left: 9em;} + + /* hanging indent */ + + p.h0i0 { + padding-left: 0em; + text-indent: 0em; + } + p.h0i1 { + padding-left: 1em; + text-indent: -1em; + } + p.h0i2 { + padding-left: 2em; + text-indent: -2em; + } + p.h0i3 { + padding-left: 3em; + text-indent: -3em; + } + p.h0i4 { + padding-left: 4em; + text-indent: -4em; + } + p.h0i5 { + padding-left: 5em; + text-indent: -5em; + } + p.h0i6 { + padding-left: 6em; + text-indent: -6em; + } + p.h0i7 { + padding-left: 7em; + text-indent: -7em; + } + p.h0i8 { + padding-left: 8em; + text-indent: -8em; + } + p.h0i9 { + padding-left: 9em; + text-indent: -9em; + } + + p.h1i0 { + padding-left: 0em; + text-indent: 1em; + } + p.h1i1 { + padding-left: 1em; + text-indent: 0em; + } + p.h1i2 { + padding-left: 2em; + text-indent: -1em; + } + p.h1i3 { + padding-left: 3em; + text-indent: -2em; + } + p.h1i4 { + padding-left: 4em; + text-indent: -3em; + } + p.h1i5 { + padding-left: 5em; + text-indent: -4em; + } + p.h1i6 { + padding-left: 6em; + text-indent: -5em; + } + p.h1i7 { + padding-left: 7em; + text-indent: -6em; + } + p.h1i8 { + padding-left: 8em; + text-indent: -7em; + } + p.h1i9 { + padding-left: 9em; + text-indent: -8em; + } + + p.h2i0 { + padding-left: 0em; + text-indent: 2em; + } + p.h2i1 { + padding-left: 1em; + text-indent: 1em; + } + p.h2i2 { + padding-left: 2em; + text-indent: 0em; + } + p.h2i3 { + padding-left: 3em; + text-indent: -1em; + } + p.h2i4 { + padding-left: 4em; + text-indent: -2em; + } + p.h2i5 { + padding-left: 5em; + text-indent: -3em; + } + p.h2i6 { + padding-left: 6em; + text-indent: -4em; + } + p.h2i7 { + padding-left: 7em; + text-indent: -5em; + } + p.h2i8 { + padding-left: 8em; + text-indent: -6em; + } + p.h2i9 { + padding-left: 9em; + text-indent: -7em; + } + + p.h3i0 { + padding-left: 0em; + text-indent: 3em; + } + p.h3i1 { + padding-left: 1em; + text-indent: 2em; + } + p.h3i2 { + padding-left: 2em; + text-indent: 1em; + } + p.h3i3 { + padding-left: 3em; + text-indent: 0em; + } + p.h3i4 { + padding-left: 4em; + text-indent: -1em; + } + p.h3i5 { + padding-left: 5em; + text-indent: -2em; + } + p.h3i6 { + padding-left: 6em; + text-indent: -3em; + } + p.h3i7 { + padding-left: 7em; + text-indent: -4em; + } + p.h3i8 { + padding-left: 8em; + text-indent: -5em; + } + p.h3i9 { + padding-left: 9em; + text-indent: -6em; + } + + p.h4i0 { + padding-left: 0em; + text-indent: 4em; + } + p.h4i1 { + padding-left: 1em; + text-indent: 3em; + } + p.h4i2 { + padding-left: 2em; + text-indent: 2em; + } + p.h4i3 { + padding-left: 3em; + text-indent: 1em; + } + p.h4i4 { + padding-left: 4em; + text-indent: 0em; + } + p.h4i5 { + padding-left: 5em; + text-indent: -1em; + } + p.h4i6 { + padding-left: 6em; + text-indent: -2em; + } + p.h4i7 { + padding-left: 7em; + text-indent: -3em; + } + p.h4i8 { + padding-left: 8em; + text-indent: -4em; + } + p.h4i9 { + padding-left: 9em; + text-indent: -5em; + } + + p.h5i0 { + padding-left: 0em; + text-indent: 5em; + } + p.h5i1 { + padding-left: 1em; + text-indent: 4em; + } + p.h5i2 { + padding-left: 2em; + text-indent: 3em; + } + p.h5i3 { + padding-left: 3em; + text-indent: 2em; + } + p.h5i4 { + padding-left: 4em; + text-indent: 1em; + } + p.h5i5 { + padding-left: 5em; + text-indent: 0em; + } + p.h5i6 { + padding-left: 6em; + text-indent: -1em; + } + p.h5i7 { + padding-left: 7em; + text-indent: -2em; + } + p.h5i8 { + padding-left: 8em; + text-indent: -3em; + } + p.h5i9 { + padding-left: 9em; + text-indent: -4em; + } + + p.h6i0 { + padding-left: 0em; + text-indent: 6em; + } + p.h6i1 { + padding-left: 1em; + text-indent: 5em; + } + p.h6i2 { + padding-left: 2em; + text-indent: 4em; + } + p.h6i3 { + padding-left: 3em; + text-indent: 3em; + } + p.h6i4 { + padding-left: 4em; + text-indent: 2em; + } + p.h6i5 { + padding-left: 5em; + text-indent: 1em; + } + p.h6i6 { + padding-left: 6em; + text-indent: 0em; + } + p.h6i7 { + padding-left: 7em; + text-indent: -1em; + } + p.h6i8 { + padding-left: 8em; + text-indent: -2em; + } + p.h6i9 { + padding-left: 9em; + text-indent: -3em; + } + + p.h7i0 { + padding-left: 0em; + text-indent: 7em; + } + p.h7i1 { + padding-left: 1em; + text-indent: 6em; + } + p.h7i2 { + padding-left: 2em; + text-indent: 5em; + } + p.h7i3 { + padding-left: 3em; + text-indent: 4em; + } + p.h7i4 { + padding-left: 4em; + text-indent: 3em; + } + p.h7i5 { + padding-left: 5em; + text-indent: 2em; + } + p.h7i6 { + padding-left: 6em; + text-indent: 1em; + } + p.h7i7 { + padding-left: 7em; + text-indent: 0em; + } + p.h7i8 { + padding-left: 8em; + text-indent: -1em; + } + p.h7i9 { + padding-left: 9em; + text-indent: -2em; + } + + p.h8i0 { + padding-left: 0em; + text-indent: 8em; + } + p.h8i1 { + padding-left: 1em; + text-indent: 7em; + } + p.h8i2 { + padding-left: 2em; + text-indent: 6em; + } + p.h8i3 { + padding-left: 3em; + text-indent: 5em; + } + p.h8i4 { + padding-left: 4em; + text-indent: 4em; + } + p.h8i5 { + padding-left: 5em; + text-indent: 3em; + } + p.h8i6 { + padding-left: 6em; + text-indent: 2em; + } + p.h8i7 { + padding-left: 7em; + text-indent: 1em; + } + p.h8i8 { + padding-left: 8em; + text-indent: 0em; + } + p.h8i9 { + padding-left: 9em; + text-indent: -1em; + } + + p.h9i0 { + padding-left: 0em; + text-indent: 9em; + } + p.h9i1 { + padding-left: 1em; + text-indent: 8em; + } + p.h9i2 { + padding-left: 2em; + text-indent: 7em; + } + p.h9i3 { + padding-left: 3em; + text-indent: 6em; + } + p.h9i4 { + padding-left: 4em; + text-indent: 5em; + } + p.h9i5 { + padding-left: 5em; + text-indent: 4em; + } + p.h9i6 { + padding-left: 6em; + text-indent: 3em; + } + p.h9i7 { + padding-left: 7em; + text-indent: 2em; + } + p.h9i8 { + padding-left: 8em; + text-indent: 1em; + } + p.h9i9 { + padding-left: 9em; + text-indent: 0em; + } p.it0 { margin-left: 0em; @@ -1339,35 +1755,446 @@ WOK text-align: left; } text[class|="indent0"] { - margin-left: 10%; + padding-left: 10%; } text[class|="indent1"] { - margin-left: 15%; + padding-left: 15%; } text[class|="indent2"] { - margin-left: 20%; + padding-left: 20%; } text[class|="indent3"] { - margin-left: 25%; + padding-left: 25%; } text[class|="indent4"] { - margin-left: 30%; + padding-left: 30%; } text[class|="indent5"] { - margin-left: 35%; + padding-left: 35%; } text[class|="indent6"] { - margin-left: 40%; + padding-left: 40%; } text[class|="indent7"] { - margin-left: 45%; + padding-left: 45%; } text[class|="indent8"] { - margin-left: 50%; + padding-left: 50%; } text[class|="indent9"] { - margin-left: 55%; + padding-left: 55%; + } + + text[class|="hang0_indent0"] { + padding-left: 10%; + text-indent: 0%; + } + text[class|="hang0_indent1"] { + padding-left: 15%; + text-indent: -5%; + } + text[class|="hang0_indent2"] { + padding-left: 20%; + text-indent: -10%; + } + text[class|="hang0_indent3"] { + padding-left: 25%; + text-indent: -15%; + } + text[class|="hang0_indent4"] { + padding-left: 30%; + text-indent: -20%; + } + text[class|="hang0_indent5"] { + padding-left: 35%; + text-indent: -25%; + } + text[class|="hang0_indent6"] { + padding-left: 40%; + text-indent: -30%; + } + text[class|="hang0_indent7"] { + padding-left: 45%; + text-indent: -35%; + } + text[class|="hang0_indent8"] { + padding-left: 50%; + text-indent: -40%; + } + text[class|="hang0_indent9"] { + padding-left: 55%; + text-indent: -45%; + } + + text[class|="hang1_indent0"] { + padding-left: 10%; + text-indent: 5%; + } + text[class|="hang1_indent1"] { + padding-left: 15%; + text-indent: 0%; + } + text[class|="hang1_indent2"] { + padding-left: 20%; + text-indent: -5%; + } + text[class|="hang1_indent3"] { + padding-left: 25%; + text-indent: -10%; + } + text[class|="hang1_indent4"] { + padding-left: 30%; + text-indent: -15%; + } + text[class|="hang1_indent5"] { + padding-left: 35%; + text-indent: -20%; + } + text[class|="hang1_indent6"] { + padding-left: 40%; + text-indent: -25%; + } + text[class|="hang1_indent7"] { + padding-left: 45%; + text-indent: -30%; + } + text[class|="hang1_indent8"] { + padding-left: 50%; + text-indent: -35%; + } + text[class|="hang1_indent9"] { + padding-left: 55%; + text-indent: -40%; + } + + text[class|="hang2_indent0"] { + padding-left: 10%; + text-indent: 10%; + } + text[class|="hang2_indent1"] { + padding-left: 15%; + text-indent: 5%; + } + text[class|="hang2_indent2"] { + padding-left: 20%; + text-indent: 0%; + } + text[class|="hang2_indent3"] { + padding-left: 25%; + text-indent: -5%; + } + text[class|="hang2_indent4"] { + padding-left: 30%; + text-indent: -10%; + } + text[class|="hang2_indent5"] { + padding-left: 35%; + text-indent: -15%; + } + text[class|="hang2_indent6"] { + padding-left: 40%; + text-indent: -20%; + } + text[class|="hang2_indent7"] { + padding-left: 45%; + text-indent: -25%; + } + text[class|="hang2_indent8"] { + padding-left: 50%; + text-indent: -30%; + } + text[class|="hang2_indent9"] { + padding-left: 55%; + text-indent: -35%; + } + + text[class|="hang3_indent0"] { + padding-left: 10%; + text-indent: 15%; + } + text[class|="hang3_indent1"] { + padding-left: 15%; + text-indent: 10%; + } + text[class|="hang3_indent2"] { + padding-left: 20%; + text-indent: 5%; + } + text[class|="hang3_indent3"] { + padding-left: 25%; + text-indent: 0%; + } + text[class|="hang3_indent4"] { + padding-left: 30%; + text-indent: -5%; + } + text[class|="hang3_indent5"] { + padding-left: 35%; + text-indent: -10%; + } + text[class|="hang3_indent6"] { + padding-left: 40%; + text-indent: -15%; + } + text[class|="hang3_indent7"] { + padding-left: 45%; + text-indent: -20%; + } + text[class|="hang3_indent8"] { + padding-left: 50%; + text-indent: -25%; + } + text[class|="hang3_indent9"] { + padding-left: 55%; + text-indent: -30%; + } + + text[class|="hang4_indent0"] { + padding-left: 10%; + text-indent: 20%; + } + text[class|="hang4_indent1"] { + padding-left: 15%; + text-indent: 15%; + } + text[class|="hang4_indent2"] { + padding-left: 20%; + text-indent: 10%; + } + text[class|="hang4_indent3"] { + padding-left: 25%; + text-indent: 5%; + } + text[class|="hang4_indent4"] { + padding-left: 30%; + text-indent: 0%; + } + text[class|="hang4_indent5"] { + padding-left: 35%; + text-indent: -5%; + } + text[class|="hang4_indent6"] { + padding-left: 40%; + text-indent: -10%; } + text[class|="hang4_indent7"] { + padding-left: 45%; + text-indent: -15%; + } + text[class|="hang4_indent8"] { + padding-left: 50%; + text-indent: -20%; + } + text[class|="hang4_indent9"] { + padding-left: 55%; + text-indent: -25%; + } + + text[class|="hang5_indent0"] { + padding-left: 10%; + text-indent: 25%; + } + text[class|="hang5_indent1"] { + padding-left: 15%; + text-indent: 20%; + } + text[class|="hang5_indent2"] { + padding-left: 20%; + text-indent: 15%; + } + text[class|="hang5_indent3"] { + padding-left: 25%; + text-indent: 10%; + } + text[class|="hang5_indent4"] { + padding-left: 30%; + text-indent: 5%; + } + text[class|="hang5_indent5"] { + padding-left: 35%; + text-indent: 0%; + } + text[class|="hang5_indent6"] { + padding-left: 40%; + text-indent: -5%; + } + text[class|="hang5_indent7"] { + padding-left: 45%; + text-indent: -10%; + } + text[class|="hang5_indent8"] { + padding-left: 50%; + text-indent: -15%; + } + text[class|="hang5_indent9"] { + padding-left: 55%; + text-indent: -20%; + } + + text[class|="hang6_indent0"] { + padding-left: 10%; + text-indent: 30%; + } + text[class|="hang6_indent1"] { + padding-left: 15%; + text-indent: 25%; + } + text[class|="hang6_indent2"] { + padding-left: 20%; + text-indent: 20%; + } + text[class|="hang6_indent3"] { + padding-left: 25%; + text-indent: 15%; + } + text[class|="hang6_indent4"] { + padding-left: 30%; + text-indent: 10%; + } + text[class|="hang6_indent5"] { + padding-left: 35%; + text-indent: 5%; + } + text[class|="hang6_indent6"] { + padding-left: 40%; + text-indent: 0%; + } + text[class|="hang6_indent7"] { + padding-left: 45%; + text-indent: -5%; + } + text[class|="hang6_indent8"] { + padding-left: 50%; + text-indent: -10%; + } + text[class|="hang6_indent9"] { + padding-left: 55%; + text-indent: -15%; + } + + text[class|="hang7_indent0"] { + padding-left: 10%; + text-indent: 35%; + } + text[class|="hang7_indent1"] { + padding-left: 15%; + text-indent: 30%; + } + text[class|="hang7_indent2"] { + padding-left: 20%; + text-indent: 25%; + } + text[class|="hang7_indent3"] { + padding-left: 25%; + text-indent: 20%; + } + text[class|="hang7_indent4"] { + padding-left: 30%; + text-indent: 15%; + } + text[class|="hang7_indent5"] { + padding-left: 35%; + text-indent: 10%; + } + text[class|="hang7_indent6"] { + padding-left: 40%; + text-indent: 5%; + } + text[class|="hang7_indent7"] { + padding-left: 45%; + text-indent: 0%; + } + text[class|="hang7_indent8"] { + padding-left: 50%; + text-indent: -5%; + } + text[class|="hang7_indent9"] { + padding-left: 55%; + text-indent: -10%; + } + + text[class|="hang8_indent0"] { + padding-left: 10%; + text-indent: 40%; + } + text[class|="hang8_indent1"] { + padding-left: 15%; + text-indent: 35%; + } + text[class|="hang8_indent2"] { + padding-left: 20%; + text-indent: 30%; + } + text[class|="hang8_indent3"] { + padding-left: 25%; + text-indent: 25%; + } + text[class|="hang8_indent4"] { + padding-left: 30%; + text-indent: 20%; + } + text[class|="hang8_indent5"] { + padding-left: 35%; + text-indent: 15%; + } + text[class|="hang8_indent6"] { + padding-left: 40%; + text-indent: 10%; + } + text[class|="hang8_indent7"] { + padding-left: 45%; + text-indent: 5%; + } + text[class|="hang8_indent8"] { + padding-left: 50%; + text-indent: 0%; + } + text[class|="hang8_indent9"] { + padding-left: 55%; + text-indent: -5%; + } + + text[class|="hang9_indent0"] { + padding-left: 10%; + text-indent: 45%; + } + text[class|="hang9_indent1"] { + padding-left: 15%; + text-indent: 40%; + } + text[class|="hang9_indent2"] { + padding-left: 20%; + text-indent: 35%; + } + text[class|="hang9_indent3"] { + padding-left: 25%; + text-indent: 30%; + } + text[class|="hang9_indent4"] { + padding-left: 30%; + text-indent: 25%; + } + text[class|="hang9_indent5"] { + padding-left: 35%; + text-indent: 20%; + } + text[class|="hang9_indent6"] { + padding-left: 40%; + text-indent: 15%; + } + text[class|="hang9_indent7"] { + padding-left: 45%; + text-indent: 10%; + } + text[class|="hang9_indent8"] { + padding-left: 50%; + text-indent: 5%; + } + text[class|="hang9_indent9"] { + padding-left: 55%; + text-indent: 0%; + } + text[class|="indent_bullet"] { text-indent: 0%; } @@ -1645,59 +2472,479 @@ WOK font-weight: bold; text-align: left; } + text[class|="indent0"] { + padding-left: 10%; + } text[class|="indent1"] { - margin-left: 10%; + padding-left: 15%; } text[class|="indent2"] { - margin-left: 15%; + padding-left: 20%; } text[class|="indent3"] { - margin-left: 20%; + padding-left: 25%; } text[class|="indent4"] { - margin-left: 25%; + padding-left: 30%; } text[class|="indent5"] { - margin-left: 30%; + padding-left: 35%; } text[class|="indent6"] { - margin-left: 35%; + padding-left: 40%; } text[class|="indent7"] { - margin-left: 40%; + padding-left: 45%; } text[class|="indent8"] { - margin-left: 45%; + padding-left: 50%; } text[class|="indent9"] { - margin-left: 50%; + padding-left: 55%; + } + + text[class|="hang0_indent0"] { + padding-left: 10%; + text-indent: 0%; + } + text[class|="hang0_indent1"] { + padding-left: 15%; + text-indent: -5%; + } + text[class|="hang0_indent2"] { + padding-left: 20%; + text-indent: -10%; + } + text[class|="hang0_indent3"] { + padding-left: 25%; + text-indent: -15%; + } + text[class|="hang0_indent4"] { + padding-left: 30%; + text-indent: -20%; + } + text[class|="hang0_indent5"] { + padding-left: 35%; + text-indent: -25%; + } + text[class|="hang0_indent6"] { + padding-left: 40%; + text-indent: -30%; + } + text[class|="hang0_indent7"] { + padding-left: 45%; + text-indent: -35%; + } + text[class|="hang0_indent8"] { + padding-left: 50%; + text-indent: -40%; + } + text[class|="hang0_indent9"] { + padding-left: 55%; + text-indent: -45%; + } + + text[class|="hang1_indent0"] { + padding-left: 10%; + text-indent: 5%; + } + text[class|="hang1_indent1"] { + padding-left: 15%; + text-indent: 0%; + } + text[class|="hang1_indent2"] { + padding-left: 20%; + text-indent: -5%; + } + text[class|="hang1_indent3"] { + padding-left: 25%; + text-indent: -10%; + } + text[class|="hang1_indent4"] { + padding-left: 30%; + text-indent: -15%; + } + text[class|="hang1_indent5"] { + padding-left: 35%; + text-indent: -20%; + } + text[class|="hang1_indent6"] { + padding-left: 40%; + text-indent: -25%; + } + text[class|="hang1_indent7"] { + padding-left: 45%; + text-indent: -30%; + } + text[class|="hang1_indent8"] { + padding-left: 50%; + text-indent: -35%; + } + text[class|="hang1_indent9"] { + padding-left: 55%; + text-indent: -40%; + } + + text[class|="hang2_indent0"] { + padding-left: 10%; + text-indent: 10%; + } + text[class|="hang2_indent1"] { + padding-left: 15%; + text-indent: 5%; + } + text[class|="hang2_indent2"] { + padding-left: 20%; + text-indent: 0%; + } + text[class|="hang2_indent3"] { + padding-left: 25%; + text-indent: -5%; + } + text[class|="hang2_indent4"] { + padding-left: 30%; + text-indent: -10%; + } + text[class|="hang2_indent5"] { + padding-left: 35%; + text-indent: -15%; + } + text[class|="hang2_indent6"] { + padding-left: 40%; + text-indent: -20%; + } + text[class|="hang2_indent7"] { + padding-left: 45%; + text-indent: -25%; + } + text[class|="hang2_indent8"] { + padding-left: 50%; + text-indent: -30%; + } + text[class|="hang2_indent9"] { + padding-left: 55%; + text-indent: -35%; + } + + text[class|="hang3_indent0"] { + padding-left: 10%; + text-indent: 15%; + } + text[class|="hang3_indent1"] { + padding-left: 15%; + text-indent: 10%; + } + text[class|="hang3_indent2"] { + padding-left: 20%; + text-indent: 5%; + } + text[class|="hang3_indent3"] { + padding-left: 25%; + text-indent: 0%; + } + text[class|="hang3_indent4"] { + padding-left: 30%; + text-indent: -5%; + } + text[class|="hang3_indent5"] { + padding-left: 35%; + text-indent: -10%; + } + text[class|="hang3_indent6"] { + padding-left: 40%; + text-indent: -15%; + } + text[class|="hang3_indent7"] { + padding-left: 45%; + text-indent: -20%; + } + text[class|="hang3_indent8"] { + padding-left: 50%; + text-indent: -25%; + } + text[class|="hang3_indent9"] { + padding-left: 55%; + text-indent: -30%; + } + + text[class|="hang4_indent0"] { + padding-left: 10%; + text-indent: 20%; + } + text[class|="hang4_indent1"] { + padding-left: 15%; + text-indent: 15%; + } + text[class|="hang4_indent2"] { + padding-left: 20%; + text-indent: 10%; + } + text[class|="hang4_indent3"] { + padding-left: 25%; + text-indent: 5%; + } + text[class|="hang4_indent4"] { + padding-left: 30%; + text-indent: 0%; + } + text[class|="hang4_indent5"] { + padding-left: 35%; + text-indent: -5%; + } + text[class|="hang4_indent6"] { + padding-left: 40%; + text-indent: -10%; + } + text[class|="hang4_indent7"] { + padding-left: 45%; + text-indent: -15%; + } + text[class|="hang4_indent8"] { + padding-left: 50%; + text-indent: -20%; + } + text[class|="hang4_indent9"] { + padding-left: 55%; + text-indent: -25%; + } + + text[class|="hang5_indent0"] { + padding-left: 10%; + text-indent: 25%; + } + text[class|="hang5_indent1"] { + padding-left: 15%; + text-indent: 20%; + } + text[class|="hang5_indent2"] { + padding-left: 20%; + text-indent: 15%; + } + text[class|="hang5_indent3"] { + padding-left: 25%; + text-indent: 10%; + } + text[class|="hang5_indent4"] { + padding-left: 30%; + text-indent: 5%; + } + text[class|="hang5_indent5"] { + padding-left: 35%; + text-indent: 0%; + } + text[class|="hang5_indent6"] { + padding-left: 40%; + text-indent: -5%; + } + text[class|="hang5_indent7"] { + padding-left: 45%; + text-indent: -10%; + } + text[class|="hang5_indent8"] { + padding-left: 50%; + text-indent: -15%; + } + text[class|="hang5_indent9"] { + padding-left: 55%; + text-indent: -20%; + } + + text[class|="hang6_indent0"] { + padding-left: 10%; + text-indent: 30%; + } + text[class|="hang6_indent1"] { + padding-left: 15%; + text-indent: 25%; + } + text[class|="hang6_indent2"] { + padding-left: 20%; + text-indent: 20%; + } + text[class|="hang6_indent3"] { + padding-left: 25%; + text-indent: 15%; + } + text[class|="hang6_indent4"] { + padding-left: 30%; + text-indent: 10%; + } + text[class|="hang6_indent5"] { + padding-left: 35%; + text-indent: 5%; + } + text[class|="hang6_indent6"] { + padding-left: 40%; + text-indent: 0%; + } + text[class|="hang6_indent7"] { + padding-left: 45%; + text-indent: -5%; + } + text[class|="hang6_indent8"] { + padding-left: 50%; + text-indent: -10%; + } + text[class|="hang6_indent9"] { + padding-left: 55%; + text-indent: -15%; + } + + text[class|="hang7_indent0"] { + padding-left: 10%; + text-indent: 35%; + } + text[class|="hang7_indent1"] { + padding-left: 15%; + text-indent: 30%; + } + text[class|="hang7_indent2"] { + padding-left: 20%; + text-indent: 25%; + } + text[class|="hang7_indent3"] { + padding-left: 25%; + text-indent: 20%; + } + text[class|="hang7_indent4"] { + padding-left: 30%; + text-indent: 15%; + } + text[class|="hang7_indent5"] { + padding-left: 35%; + text-indent: 10%; + } + text[class|="hang7_indent6"] { + padding-left: 40%; + text-indent: 5%; + } + text[class|="hang7_indent7"] { + padding-left: 45%; + text-indent: 0%; + } + text[class|="hang7_indent8"] { + padding-left: 50%; + text-indent: -5%; + } + text[class|="hang7_indent9"] { + padding-left: 55%; + text-indent: -10%; + } + + text[class|="hang8_indent0"] { + padding-left: 10%; + text-indent: 40%; + } + text[class|="hang8_indent1"] { + padding-left: 15%; + text-indent: 35%; + } + text[class|="hang8_indent2"] { + padding-left: 20%; + text-indent: 30%; + } + text[class|="hang8_indent3"] { + padding-left: 25%; + text-indent: 25%; + } + text[class|="hang8_indent4"] { + padding-left: 30%; + text-indent: 20%; + } + text[class|="hang8_indent5"] { + padding-left: 35%; + text-indent: 15%; + } + text[class|="hang8_indent6"] { + padding-left: 40%; + text-indent: 10%; + } + text[class|="hang8_indent7"] { + padding-left: 45%; + text-indent: 5%; + } + text[class|="hang8_indent8"] { + padding-left: 50%; + text-indent: 0%; + } + text[class|="hang8_indent9"] { + padding-left: 55%; + text-indent: -5%; + } + + text[class|="hang9_indent0"] { + padding-left: 10%; + text-indent: 45%; + } + text[class|="hang9_indent1"] { + padding-left: 15%; + text-indent: 40%; + } + text[class|="hang9_indent2"] { + padding-left: 20%; + text-indent: 35%; + } + text[class|="hang9_indent3"] { + padding-left: 25%; + text-indent: 30%; + } + text[class|="hang9_indent4"] { + padding-left: 30%; + text-indent: 25%; + } + text[class|="hang9_indent5"] { + padding-left: 35%; + text-indent: 20%; + } + text[class|="hang9_indent6"] { + padding-left: 40%; + text-indent: 15%; + } + text[class|="hang9_indent7"] { + padding-left: 45%; + text-indent: 10%; + } + text[class|="hang9_indent8"] { + padding-left: 50%; + text-indent: 5%; + } + text[class|="hang9_indent9"] { + padding-left: 55%; + text-indent: 0%; + } + + text[class|="indent_bullet"] { + text-indent: 0%; + } + text[class|="indent_bullet0"] { + text-indent: 0%; } text[class|="indent_bullet1"] { - margin-left: 10%; + padding-left: 10%; } text[class|="indent_bullet2"] { - margin-left: 15%; + padding-left: 15%; } text[class|="indent_bullet3"] { - margin-left: 20%; + padding-left: 20%; } text[class|="indent_bullet4"] { - margin-left: 25%; + padding-left: 25%; } text[class|="indent_bullet5"] { - margin-left: 30%; + padding-left: 30%; } text[class|="indent_bullet6"] { - margin-left: 35%; + padding-left: 35%; } text[class|="indent_bullet7"] { - margin-left: 40%; + padding-left: 40%; } text[class|="indent_bullet8"] { - margin-left: 45%; + padding-left: 45%; } text[class|="indent_bullet9"] { - margin-left: 50%; + padding-left: 50%; } text[class|="verse"], text[class|="block"], text[class|="group"], text[class|="code"] { text-align: left; diff --git a/lib/sisu/v3/dal_doc_objects.rb b/lib/sisu/v3/dal_doc_objects.rb index ad5f8bb7..8a330f13 100644 --- a/lib/sisu/v3/dal_doc_objects.rb +++ b/lib/sisu/v3/dal_doc_objects.rb @@ -167,10 +167,10 @@ module SiSU_document_structure end end class Object_para - attr_accessor :obj,:is,:tags,:of,:name,:idx,:bullet_,:indent,:ocn,:odv,:osp,:parent,:note_,:image_,:ocn_,:digest,:tmp + attr_accessor :obj,:is,:tags,:of,:name,:idx,:bullet_,:indent,:hang,:ocn,:odv,:osp,:parent,:note_,:image_,:ocn_,:digest,:tmp def initialize @of='para' - @is=@obj=@name=@idx=@bullet_=@indent=@size=@ocn=@odv=@osp=@parent=@note_=@image_=@ocn_=@digest=@tmp=nil + @is=@obj=@name=@idx=@bullet_=@indent=@hang=@size=@ocn=@odv=@osp=@parent=@note_=@image_=@ocn_=@digest=@tmp=nil @tags=[] end def paragraph(h,o=nil) @@ -185,6 +185,7 @@ module SiSU_document_structure osp= h[:osp] || ((defined? o.osp) ? o.osp : nil) parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent] indent= h[:indent].to_s || ((defined? o.indent) ? o.indent.to_s : nil) #Integer, indent level + hang= h[:hang].to_s || ((defined? o.hang) ? o.hang.to_s : nil) #Integer, hanging indent level bullet_=h[:bullet_] || ((defined? o.bullet_) ? o.bullet_ : false) #Bool, bulleted? note_= h[:note_] || ((defined? o.note_) ? o.note_ : false) #Bool, endnotes/footnotes? (processing optimization) image_= h[:image_] || ((defined? o.image_) ? o.image_ : false) #Bool, images? (processing optimization) @@ -193,7 +194,7 @@ module SiSU_document_structure end digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5 tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use - @of,@is,@name,@tags,@obj,@indent,@bullet_,@idx,@ocn,@odv,@osp,@parent,@image_,@note_,@ocn_,@digest,@tmp=of,is,name,tags,obj,indent,bullet_,idx,ocn,odv,osp,parent,image_,note_,ocn_,digest,tmp + @of,@is,@name,@tags,@obj,@indent,@hang,@bullet_,@idx,@ocn,@odv,@osp,@parent,@image_,@note_,@ocn_,@digest,@tmp=of,is,name,tags,obj,indent,hang,bullet_,idx,ocn,odv,osp,parent,image_,note_,ocn_,digest,tmp self end def docinfo(h,o=nil) @@ -208,6 +209,7 @@ module SiSU_document_structure osp= h[:osp] || ((defined? o.osp) ? o.osp : nil) parent= h[:parent] || ((defined? o.parent) ? o.parent : nil) #[Node parent] indent= nil #Integer, indent level + hang= nil #Integer, indent level bullet_=false #Bool, bulleted? note_= false #Bool, endnotes/footnotes? (processing optimization) image_= h[:image_] || ((defined? o.image_) ? o.image_ : false) #Bool, images? (processing optimization) @@ -216,7 +218,7 @@ module SiSU_document_structure end digest= h[:digest] || ((defined? o.digest) ? o.digest : nil) #hash digests, either sha256 or md5 tmp= h[:tmp] || ((defined? o.tmp) ? o.tmp : nil) #available for processing, empty after use - @of,@is,@name,@tags,@obj,@indent,@bullet_,@idx,@ocn,@odv,@osp,@parent,@image_,@note_,@ocn_,@digest,@tmp=of,is,name,tags,obj,indent,bullet_,idx,ocn,odv,osp,parent,image_,note_,ocn_,digest,tmp + @of,@is,@name,@tags,@obj,@indent,@hang,@bullet_,@idx,@ocn,@odv,@osp,@parent,@image_,@note_,@ocn_,@digest,@tmp=of,is,name,tags,obj,indent,hang,bullet_,idx,ocn,odv,osp,parent,image_,note_,ocn_,digest,tmp self end end @@ -325,10 +327,10 @@ module SiSU_document_structure end end class Object_table - attr_accessor :obj,:is,:of,:lv,:tags,:name,:idx,:indent,:size,:ocn,:number,:head_,:cols,:widths,:odv,:osp,:parent,:note_,:ocn_,:digest,:tmp + attr_accessor :obj,:is,:of,:lv,:tags,:name,:idx,:indent,:hang,:size,:ocn,:number,:head_,:cols,:widths,:odv,:osp,:parent,:note_,:ocn_,:digest,:tmp def initialize @of='block' - @is=@obj=@lv=@name=@idx=@indent=@size=@ocn,@number,@head_,@cols,@widths=@odv=@osp=@parent=@note_=@ocn_=@digest=@tmp=nil + @is=@obj=@lv=@name=@idx=@indent=@hang=@size=@ocn,@number,@head_,@cols,@widths=@odv=@osp=@parent=@note_=@ocn_=@digest=@tmp=nil @tags=[] end def table(h,o=nil) diff --git a/lib/sisu/v3/dal_doc_str.rb b/lib/sisu/v3/dal_doc_str.rb index ed289015..52425437 100644 --- a/lib/sisu/v3/dal_doc_str.rb +++ b/lib/sisu/v3/dal_doc_str.rb @@ -92,8 +92,36 @@ module SiSU_document_structure_extract def bullet_test(str) bool=((str=~/\*/) ? true : false) end - def indent_test(str) - num=((str=~/^_([1-9])/) ? $1 : 0) + def hang_and_indent_test(str) + hang_indent=if str=~/^_([1-9])[^_]/ + [$1,$1] + elsif str=~/^__([1-9])/ + [0,$1] + elsif str=~/^_([0-9])_([0-9])/ + [$1,$2] + else + [0,0] + end + hang,indent=hang_indent[0],hang_indent[1] + [hang,indent] + end + def hang_and_indent_def_test(str1,str2) + hang_indent=if str1=~/^_([1-9])[^_]/ + [$1,$1] + elsif str1=~/^__([1-9])/ + [0,$1] + elsif str1=~/^_([0-9])_([0-9])/ + [$1,$2] + else + [0,0] + end + obj=if str2 =~/^(.+?)\s+\\\\(?:\s+|\n)/ + str2.gsub(/^(.+?)(\s+\\\\(?:\s+|\n))/,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2") + else + str2.gsub(/^(.+?)\n/,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\n") + end + hang,indent=hang_indent[0],hang_indent[1] + [hang,indent,obj] end def endnote_test?(str) bool=((str=~/~\{.+?\}~|~\[.+?\]~/) ? true : false) @@ -171,16 +199,37 @@ module SiSU_document_structure_extract SiSU_document_structure::Object_heading.new.heading(h) else nil end - when /^(?:_[1-9]|_[1-9]?\*)\s+/ #indented and/or bullet paragraph - t_o=if t_o=~/^(_(?:[1-9]?\*|[1-9])\s+)(.+)/m + when /^_(?:[1-9]!?|[1-9]?\*)\s+/ #indented and/or bullet paragraph + t_o=if t_o=~/^(_(?:[1-9]?\*|[1-9]!?)\s+)(.+)/m tst,obj=$1,$2 - indent=indent_test(tst) + if t_o=~/^_[1-9]!\s+.+/m + hang,indent,obj=hang_and_indent_def_test(tst,obj) + else + hang,indent=hang_and_indent_test(tst) + end bullet=bullet_test(tst) image=image_test(obj) note=endnote_test?(obj) obj,tags=extract_tags(obj) unless obj=~/\A\s*\Z/m - h={ bullet_: bullet, indent: indent, obj: obj, idx: idx, note_: note, image_: image, tags: tags } + h={ bullet_: bullet, hang: hang, indent: indent, obj: obj, idx: idx, note_: note, image_: image, tags: tags } + SiSU_document_structure::Object_para.new.paragraph(h) + end + else nil + end + when /^_[0-9]?_[0-9]!?\s+/ #hanging indent paragraph + t_o=if t_o=~/^(_[0-9]?_[0-9]!?\s+)(.+)/m + tst,obj=$1,$2 + if t_o=~/^_[0-9]?_[0-9]!\s+.+/m + hang,indent,obj=hang_and_indent_def_test(tst,obj) + else + hang,indent=hang_and_indent_test(tst) + end + image=image_test(obj) + note=endnote_test?(obj) + obj,tags=extract_tags(obj) + unless obj=~/\A\s*\Z/m + h={ hang: hang, indent: indent, obj: obj, idx: idx, note_: note, image_: image, tags: tags } SiSU_document_structure::Object_para.new.paragraph(h) end else nil @@ -196,7 +245,7 @@ module SiSU_document_structure_extract note=endnote_test?(t_o) obj,tags=extract_tags(t_o) unless obj=~/\A\s*\Z/m - h={ bullet_: false, indent: 0, obj: obj, idx: idx, note_: note, image_: image, tags: tags } + h={ bullet_: false, indent: 0, hang: 0, obj: obj, idx: idx, note_: note, image_: image, tags: tags } SiSU_document_structure::Object_para.new.paragraph(h) end end @@ -725,7 +774,8 @@ module SiSU_document_structure_extract end def structure_markup #build structure where structure provided only in meta header @dob=if @dob.is =~/para/ \ - and @dob.indent !~/[1-9]/ \ + and ((@dob.hang !~/[1-9]/ and @dob.indent !~/[1-9]/) \ + or (@dob.hang != @dob.indent)) \ and not @dob.bullet_ @dob=case @dob.obj when /^#{@md.lv1}/ diff --git a/lib/sisu/v3/dal_syntax.rb b/lib/sisu/v3/dal_syntax.rb index 4595d6e1..bb1aacbe 100644 --- a/lib/sisu/v3/dal_syntax.rb +++ b/lib/sisu/v3/dal_syntax.rb @@ -398,9 +398,19 @@ module SiSU_Syntax dob.obj.gsub!(/=\{(.+?)\}/, "#{Mx[:idx_o]}\\1#{Mx[:idx_c]}") dob.obj.gsub!(/^\s*_([1-9])\*\s*/, - "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}#{Mx[:gl_bullet]}") #bullets, shortcut + "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}#{Mx[:gl_bullet]}") #bullets, shortcut dob.obj.gsub!(/^\s*_([1-9])\s+/, - "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}") #indent + "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}") #indent + dob.obj.gsub!(/^\s*_([1-9])!\s+(.+?)\s*$/, + "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]} ") #indent bold + dob.obj.gsub!(/^\s*__([1-9])\s+/, + "#{Mx[:pa_o]}:i0:\\1#{Mx[:pa_c]}") #hang + dob.obj.gsub!(/^\s*__([1-9])!\s+(.+?)\s*$/, + "#{Mx[:pa_o]}:i0:\\1#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]} ") #hangdef + dob.obj.gsub!(/^\s*_([0-9])_([0-9])\s+/, + "#{Mx[:pa_o]}:i\\1:\\2#{Mx[:pa_c]}") #hang + dob.obj.gsub!(/^\s*_([0-9])_([0-9])!\s+(.+?)\s*$/, + "#{Mx[:pa_o]}:i\\1:\\2#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\3#{Mx[:fa_bold_c]} ") #hangdef dob.obj.gsub!(/<:hi>/,"#{Mx[:fa_hilite_o]}") #'<span style="background-color: rgb(255,240,196)">') # bright yellow rgb(255,255,0) pale yellow rgb(255,255,200) dob.obj.gsub!(/<:\/hi>/,"#{Mx[:fa_hilite_c]}") #'</span>') dob.obj.gsub!(/(#{Mx[:gr_o]}verse#{Mx[:gr_c]}.+)/m,"\\1\n") @@ -517,7 +527,11 @@ module SiSU_Syntax line.gsub!(/^\s*_\([1-9]\)\(\*\+\)\s*/, "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}#{Mx[:fa_o]}\\2#{Mx[:fa_c_o]}") #bullets, shortcut line.gsub!(/^\s*_\([1-9]\)\s+/, - "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}") + "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}") #watch + line.gsub!(/^\s*__\([1-9]\)\s+/, + "#{Mx[:pa_o]}:h\\1#{Mx[:pa_c]}") #watch + #line.gsub!(/^\s*__\([1-9]\)!\s+/, + # "#{Mx[:pa_o]}:hd\\1#{Mx[:pa_c]}") #watch line.gsub!(/#{Mx[:br_line]}\s*_[12]\s+/, "#{Mx[:br_line]} ") #indent used in endnotes, not implemented, replace when ready with: line.gsub!(/(?:<br>|<br \/>)\s*_([12])\s+/,'<br><:i\1> ') end diff --git a/lib/sisu/v3/db_columns.rb b/lib/sisu/v3/db_columns.rb index d8a6f3cf..99118f92 100644 --- a/lib/sisu/v3/db_columns.rb +++ b/lib/sisu/v3/db_columns.rb @@ -273,6 +273,7 @@ module SiSU_DB_columns #% creator @creator: :author: + :editor: :contributor: :illustrator: :photographer: @@ -353,6 +354,34 @@ module SiSU_DB_columns end self end + def creator_editor + def name + 'creator_editor' + end + def create_column + "#{name} VARCHAR(#{Db[:col_name]}) NULL," + end + def column_comment + %{COMMENT ON COLUMN metadata_and_text.#{name} + IS 'metadata document editor name(s)';} + end + def tuple + t=if defined? @md.creator.editor_detail \ + and @md.creator.editor_detail.class==Array \ + and @md.creator.editor_detail.length > 0 + txt=@md.creator.editor_detail #dc + txt='' + @md.creator.editor_detail.each do |h| + txt=txt + %{#{h[:the]}, #{h[:others]}; } + end + txt.gsub!(/[;, ]+\s*$/,'') + special_character_escape(txt) + ["#{name}, ","'#{txt}', "] + else ['',''] + end + end + self + end def creator_contributor # DublinCore 6 - contributor def name 'creator_contributor' diff --git a/lib/sisu/v3/db_create.rb b/lib/sisu/v3/db_create.rb index 35750c4b..1804410a 100644 --- a/lib/sisu/v3/db_create.rb +++ b/lib/sisu/v3/db_create.rb @@ -116,6 +116,7 @@ module SiSU_DB_create #{column.creator_author.create_column} #{column.creator_author_honorific.create_column} #{column.creator_author_nationality.create_column} + #{column.creator_editor.create_column} #{column.creator_contributor.create_column} #{column.creator_illustrator.create_column} #{column.creator_photographer.create_column} @@ -375,6 +376,7 @@ module SiSU_DB_create %{#{column.creator_author.column_comment}}, %{#{column.creator_author_honorific.column_comment}}, %{#{column.creator_author_nationality.column_comment}}, + %{#{column.creator_editor.column_comment}}, %{#{column.creator_contributor.column_comment}}, %{#{column.creator_illustrator.column_comment}}, %{#{column.creator_photographer.column_comment}}, diff --git a/lib/sisu/v3/db_import.rb b/lib/sisu/v3/db_import.rb index 541399a9..ac6f0104 100644 --- a/lib/sisu/v3/db_import.rb +++ b/lib/sisu/v3/db_import.rb @@ -393,8 +393,16 @@ module SiSU_DB_import SiSU_Format_Shared::CSS_Format.new(@md,data).html_table elsif data.is=='code' SiSU_Format_Shared::CSS_Format.new(@md,data).code - elsif defined? data.indent and data.indent =~/[1-9]/ + elsif defined? data.indent \ + and defined? data.hang \ + and data.indent =~/[1-9]/ \ + and data.indent == data.hang SiSU_Format_Shared::CSS_Format.new(@md,data).indent(data.indent) + elsif defined? data.indent \ + and defined? data.hang \ + and data.hang =~/[0-9]/ \ + and data.indent != data.hang + SiSU_Format_Shared::CSS_Format.new(@md,data).hang_indent(data.hang,data.indent) else SiSU_Format_Shared::CSS_Format.new(@md,data).norm end diff --git a/lib/sisu/v3/db_load_tuple.rb b/lib/sisu/v3/db_load_tuple.rb index b8408f22..f7f39c08 100644 --- a/lib/sisu/v3/db_load_tuple.rb +++ b/lib/sisu/v3/db_load_tuple.rb @@ -132,6 +132,7 @@ module SiSU_DB_tuple #{@tp.column.creator_author.tuple[0]} #{@tp.column.creator_author_honorific.tuple[0]} #{@tp.column.creator_author_nationality.tuple[0]} +#{@tp.column.creator_editor.tuple[0]} #{@tp.column.creator_contributor.tuple[0]} #{@tp.column.creator_illustrator.tuple[0]} #{@tp.column.creator_photographer.tuple[0]} @@ -216,6 +217,7 @@ tid) #{@tp.column.creator_author.tuple[1]} #{@tp.column.creator_author_honorific.tuple[1]} #{@tp.column.creator_author_nationality.tuple[1]} +#{@tp.column.creator_editor.tuple[1]} #{@tp.column.creator_contributor.tuple[1]} #{@tp.column.creator_illustrator.tuple[1]} #{@tp.column.creator_photographer.tuple[1]} diff --git a/lib/sisu/v3/epub_format.rb b/lib/sisu/v3/epub_format.rb index e75ad112..2a9af20e 100644 --- a/lib/sisu/v3/epub_format.rb +++ b/lib/sisu/v3/epub_format.rb @@ -161,6 +161,7 @@ module SiSU_EPUB_Format margin-right: 2em; margin-top: 10px; margin-bottom: 0px; + padding-left: 0em; text-indent: 0mm; } p, h0, h1, h2, h3, h4, h5, h6 { @@ -177,15 +178,426 @@ module SiSU_EPUB_Format margin-bottom: 3px; } p.norm { } - p.i1 {margin-left: 1em;} - p.i2 {margin-left: 2em;} - p.i3 {margin-left: 3em;} - p.i4 {margin-left: 4em;} - p.i5 {margin-left: 5em;} - p.i6 {margin-left: 6em;} - p.i7 {margin-left: 7em;} - p.i8 {margin-left: 8em;} - p.i9 {margin-left: 9em;} + p.i1 {padding-left: 1em;} + p.i2 {padding-left: 2em;} + p.i3 {padding-left: 3em;} + p.i4 {padding-left: 4em;} + p.i5 {padding-left: 5em;} + p.i6 {padding-left: 6em;} + p.i7 {padding-left: 7em;} + p.i8 {padding-left: 8em;} + p.i9 {padding-left: 9em;} + + p.h0i0 { + padding-left: 0em; + text-indent: 0em; + } + p.h0i1 { + padding-left: 1em; + text-indent: -1em; + } + p.h0i2 { + padding-left: 2em; + text-indent: -2em; + } + p.h0i3 { + padding-left: 3em; + text-indent: -3em; + } + p.h0i4 { + padding-left: 4em; + text-indent: -4em; + } + p.h0i5 { + padding-left: 5em; + text-indent: -5em; + } + p.h0i6 { + padding-left: 6em; + text-indent: -6em; + } + p.h0i7 { + padding-left: 7em; + text-indent: -7em; + } + p.h0i8 { + padding-left: 8em; + text-indent: -8em; + } + p.h0i9 { + padding-left: 9em; + text-indent: -9em; + } + + p.h1i0 { + padding-left: 0em; + text-indent: 1em; + } + p.h1i1 { + padding-left: 1em; + text-indent: 0em; + } + p.h1i2 { + padding-left: 2em; + text-indent: -1em; + } + p.h1i3 { + padding-left: 3em; + text-indent: -2em; + } + p.h1i4 { + padding-left: 4em; + text-indent: -3em; + } + p.h1i5 { + padding-left: 5em; + text-indent: -4em; + } + p.h1i6 { + padding-left: 6em; + text-indent: -5em; + } + p.h1i7 { + padding-left: 7em; + text-indent: -6em; + } + p.h1i8 { + padding-left: 8em; + text-indent: -7em; + } + p.h1i9 { + padding-left: 9em; + text-indent: -8em; + } + + p.h2i0 { + padding-left: 0em; + text-indent: 2em; + } + p.h2i1 { + padding-left: 1em; + text-indent: 1em; + } + p.h2i2 { + padding-left: 2em; + text-indent: 0em; + } + p.h2i3 { + padding-left: 3em; + text-indent: -1em; + } + p.h2i4 { + padding-left: 4em; + text-indent: -2em; + } + p.h2i5 { + padding-left: 5em; + text-indent: -3em; + } + p.h2i6 { + padding-left: 6em; + text-indent: -4em; + } + p.h2i7 { + padding-left: 7em; + text-indent: -5em; + } + p.h2i8 { + padding-left: 8em; + text-indent: -6em; + } + p.h2i9 { + padding-left: 9em; + text-indent: -7em; + } + + p.h3i0 { + padding-left: 0em; + text-indent: 3em; + } + p.h3i1 { + padding-left: 1em; + text-indent: 2em; + } + p.h3i2 { + padding-left: 2em; + text-indent: 1em; + } + p.h3i3 { + padding-left: 3em; + text-indent: 0em; + } + p.h3i4 { + padding-left: 4em; + text-indent: -1em; + } + p.h3i5 { + padding-left: 5em; + text-indent: -2em; + } + p.h3i6 { + padding-left: 6em; + text-indent: -3em; + } + p.h3i7 { + padding-left: 7em; + text-indent: -4em; + } + p.h3i8 { + padding-left: 8em; + text-indent: -5em; + } + p.h3i9 { + padding-left: 9em; + text-indent: -6em; + } + + p.h4i0 { + padding-left: 0em; + text-indent: 4em; + } + p.h4i1 { + padding-left: 1em; + text-indent: 3em; + } + p.h4i2 { + padding-left: 2em; + text-indent: 2em; + } + p.h4i3 { + padding-left: 3em; + text-indent: 1em; + } + p.h4i4 { + padding-left: 4em; + text-indent: 0em; + } + p.h4i5 { + padding-left: 5em; + text-indent: -1em; + } + p.h4i6 { + padding-left: 6em; + text-indent: -2em; + } + p.h4i7 { + padding-left: 7em; + text-indent: -3em; + } + p.h4i8 { + padding-left: 8em; + text-indent: -4em; + } + p.h4i9 { + padding-left: 9em; + text-indent: -5em; + } + + p.h5i0 { + padding-left: 0em; + text-indent: 5em; + } + p.h5i1 { + padding-left: 1em; + text-indent: 4em; + } + p.h5i2 { + padding-left: 2em; + text-indent: 3em; + } + p.h5i3 { + padding-left: 3em; + text-indent: 2em; + } + p.h5i4 { + padding-left: 4em; + text-indent: 1em; + } + p.h5i5 { + padding-left: 5em; + text-indent: 0em; + } + p.h5i6 { + padding-left: 6em; + text-indent: -1em; + } + p.h5i7 { + padding-left: 7em; + text-indent: -2em; + } + p.h5i8 { + padding-left: 8em; + text-indent: -3em; + } + p.h5i9 { + padding-left: 9em; + text-indent: -4em; + } + + p.h6i0 { + padding-left: 0em; + text-indent: 6em; + } + p.h6i1 { + padding-left: 1em; + text-indent: 5em; + } + p.h6i2 { + padding-left: 2em; + text-indent: 4em; + } + p.h6i3 { + padding-left: 3em; + text-indent: 3em; + } + p.h6i4 { + padding-left: 4em; + text-indent: 2em; + } + p.h6i5 { + padding-left: 5em; + text-indent: 1em; + } + p.h6i6 { + padding-left: 6em; + text-indent: 0em; + } + p.h6i7 { + padding-left: 7em; + text-indent: -1em; + } + p.h6i8 { + padding-left: 8em; + text-indent: -2em; + } + p.h6i9 { + padding-left: 9em; + text-indent: -3em; + } + + p.h7i0 { + padding-left: 0em; + text-indent: 7em; + } + p.h7i1 { + padding-left: 1em; + text-indent: 6em; + } + p.h7i2 { + padding-left: 2em; + text-indent: 5em; + } + p.h7i3 { + padding-left: 3em; + text-indent: 4em; + } + p.h7i4 { + padding-left: 4em; + text-indent: 3em; + } + p.h7i5 { + padding-left: 5em; + text-indent: 2em; + } + p.h7i6 { + padding-left: 6em; + text-indent: 1em; + } + p.h7i7 { + padding-left: 7em; + text-indent: 0em; + } + p.h7i8 { + padding-left: 8em; + text-indent: -1em; + } + p.h7i9 { + padding-left: 9em; + text-indent: -2em; + } + + p.h8i0 { + padding-left: 0em; + text-indent: 8em; + } + p.h8i1 { + padding-left: 1em; + text-indent: 7em; + } + p.h8i2 { + padding-left: 2em; + text-indent: 6em; + } + p.h8i3 { + padding-left: 3em; + text-indent: 5em; + } + p.h8i4 { + padding-left: 4em; + text-indent: 4em; + } + p.h8i5 { + padding-left: 5em; + text-indent: 3em; + } + p.h8i6 { + padding-left: 6em; + text-indent: 2em; + } + p.h8i7 { + padding-left: 7em; + text-indent: 1em; + } + p.h8i8 { + padding-left: 8em; + text-indent: 0em; + } + p.h8i9 { + padding-left: 9em; + text-indent: -1em; + } + + p.h9i0 { + padding-left: 0em; + text-indent: 9em; + } + p.h9i1 { + padding-left: 1em; + text-indent: 8em; + } + p.h9i2 { + padding-left: 2em; + text-indent: 7em; + } + p.h9i3 { + padding-left: 3em; + text-indent: 6em; + } + p.h9i4 { + padding-left: 4em; + text-indent: 5em; + } + p.h9i5 { + padding-left: 5em; + text-indent: 4em; + } + p.h9i6 { + padding-left: 6em; + text-indent: 3em; + } + p.h9i7 { + padding-left: 7em; + text-indent: 2em; + } + p.h9i8 { + padding-left: 8em; + text-indent: 1em; + } + p.h9i9 { + padding-left: 9em; + text-indent: 0em; + } + p.it0 { margin-left: 0em; @@ -1037,16 +1449,112 @@ WOK def metadata #metadata dc author=if defined? @md.creator.author \ and @md.creator.author =~/\S+/ - x=@md.creator.author.gsub!(/</,'<'); @md.creator.author.gsub!(/>/,'>') - @md.creator.author.gsub!(/<br(?: \/)?>/,'<br />') - %{\n <dc:creator opf:file-as="#{x}" opf:role="aut">#{x}</dc:creator>} + m='' + @md.creator.author_detail.each do |x| + surname=x[:the] \ + ? x[:the] \ + : '' + other_names=x[:others] \ + ? ', ' + x[:others] \ + : '' + m=(m.empty?) \ + ? (surname + other_names) \ + : (m + '; ' + surname + ', ' + other_names) + m.gsub!(/</,'<'); m.gsub!(/>/,'>') + m.gsub!(/<br(?: \/)?>/,';') + end + x=@md.creator.author.dup + x.gsub!(/</,'<'); x.gsub!(/>/,'>') + x.gsub!(/<br(?: \/)?>/,'<br />') + %{\n <dc:creator opf:file-as="#{m}" opf:role="aut">#{x}</dc:creator>} + else '' + end + editor=if defined? @md.creator.editor \ + and @md.creator.editor =~/\S+/ + m='' + @md.creator.editor_detail.each do |x| + surname=x[:the] \ + ? x[:the] \ + : '' + other_names=x[:others] \ + ? ', ' + x[:others] \ + : '' + m=(m.empty?) \ + ? (surname + other_names) \ + : (m + '; ' + surname + ', ' + other_names) + m.gsub!(/</,'<'); m.gsub!(/>/,'>') + m.gsub!(/<br(?: \/)?>/,';') + end + x=@md.creator.editor.dup + x.gsub!(/</,'<'); x.gsub!(/>/,'>') + x.gsub!(/<br(?: \/)?>/,'<br />') + %{\n <dc:creator opf:file-as="#{m}" opf:role="edt">#{x}</dc:creator>} + else '' + end + translator=if defined? @md.creator.translator \ + and @md.creator.translator =~/\S+/ + m='' + @md.creator.translator_detail.each do |x| + surname=x[:the] \ + ? x[:the] \ + : '' + other_names=x[:others] \ + ? ', ' + x[:others] \ + : '' + m=(m.empty?) \ + ? (surname + other_names) \ + : (m + '; ' + surname + ', ' + other_names) + m.gsub!(/</,'<'); m.gsub!(/>/,'>') + m.gsub!(/<br(?: \/)?>/,';') + end + x=@md.creator.translator.dup + x.gsub!(/</,'<'); x.gsub!(/>/,'>') + x.gsub!(/<br(?: \/)?>/,'<br />') + %{\n <dc:creator opf:file-as="#{m}" opf:role="trl">#{x}</dc:creator>} else '' end illustrator=if defined? @md.creator.illustrator \ and @md.creator.illustrator =~/\S+/ - x=@md.creator.illustrator.gsub!(/</,'<'); @md.creator.illustrator.gsub!(/>/,'>') - @md.creator.illustrator.gsub!(/<br(?: \/)?>/,'<br />') - %{\n <dc:creator opf:file-as="#{x}" opf:role="ill">#{x}</dc:creator>} + m='' + @md.creator.illustrator_detail.each do |x| + surname=x[:the] \ + ? x[:the] \ + : '' + other_names=x[:others] \ + ? ', ' + x[:others] \ + : '' + m=(m.empty?) \ + ? (surname + other_names) \ + : (m + '; ' + surname + ', ' + other_names) + m.gsub!(/</,'<'); m.gsub!(/>/,'>') + m.gsub!(/<br(?: \/)?>/,';') + end + x=@md.creator.illustrator.dup + x.gsub!(/</,'<'); x.gsub!(/>/,'>') + x.gsub!(/<br(?: \/)?>/,'<br />') + %{\n <dc:creator opf:file-as="#{m}" opf:role="ill">#{x}</dc:creator>} + else '' + end + date_published=if defined? @md.date.published \ + and @md.date.published =~/\S+/ + x=@md.date.published.dup + x.gsub!(/</,'<'); x.gsub!(/>/,'>') + x.gsub!(/<br(?: \/)?>/,'<br />') + %{\n <dc:date opf:event="published">#{x}</dc:date>} + else '' + end + subject=if defined? @md.classify.subject \ + and @md.classify.subject =~/\S+/ + x=@md.classify.subject.dup + x.gsub!(/</,'<'); x.gsub!(/>/,'>') + x.gsub!(/<br(?: \/)?>/,'<br />') + %{\n <dc:subject>#{x}</dc:subject>} + else '' + end + language=if defined? @md.opt.lng \ + and @md.opt.lng =~/\S+/ + language=@md.opt.lng.gsub(/<br>/,'<br />') + %{\n <dc:language>#{language}</dc:language>} else '' end rights=if defined? @md.rights.all \ @@ -1058,10 +1566,8 @@ WOK <<WOK <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf"> <dc:title>#{@md.title.full}</dc:title> - #{author}#{illustrator} - <dc:language>en-US</dc:language> + #{author}#{editor}#{translator}#{illustrator}#{language}#{date_published}#{subject}#{rights} <dc:identifier id="bookid">...</dc:identifier> - #{rights} <dc:identifier id="EPB-UUID">urn:uuid:#{@md.dgst[1]}</dc:identifier> </metadata> WOK diff --git a/lib/sisu/v3/epub_segments.rb b/lib/sisu/v3/epub_segments.rb index ed8c8d39..b9b75b9c 100644 --- a/lib/sisu/v3/epub_segments.rb +++ b/lib/sisu/v3/epub_segments.rb @@ -360,8 +360,11 @@ WOK @p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,dob.ocn) end sto=SiSU_EPUB_Format::Format_text_object.new(@md,dob) - dob_xhtml=if dob.is=='heading' or dob.is=='heading_insert' or dob.is=='para' - dob_xhtml=if dob.is=='heading' or dob.is=='heading_insert' + dob_xhtml=if dob.is=='heading' \ + or dob.is=='heading_insert' \ + or dob.is=='para' + dob_xhtml=if dob.is=='heading' \ + or dob.is=='heading_insert' if dob.ln==4 sto.seg_heading4 # work on see Split_text_object elsif dob.ln==5 @@ -369,16 +372,23 @@ WOK elsif dob.ln==6; sto.seg_heading6 end elsif dob.is=='para' - if dob.indent and dob.indent =~/[1-9]/ + if dob.indent \ + and dob.hang \ + and dob.indent =~/[0-9]/ \ + and dob.hang =~/[0-9]/ if dob.bullet_ - sto.format('li',"i#{dob.indent}") - else sto.format('p',"i#{dob.indent}") - end - else - if dob.bullet_ - sto.format('li','bullet') + if dob.indent =~/[1-9]/ + sto.format('li',"i#{dob.indent}") + else + sto.format('li','bullet') + end + elsif dob.indent == dob.hang + sto.format('p',"i#{dob.indent}") + elsif dob.indent != dob.hang + sto.format('p',"h#{dob.hang}i#{dob.indent}") else sto.para end + else sto.para end end elsif dob.is =~/^(?:block|group|alt)$/ @@ -395,7 +405,8 @@ WOK if @md.flag_separate_endnotes # may need to revisit, check dob.obj.gsub!(/"\s+href="#note_ref(\d+)">/,%{" href=\"endnotes#{Sfx[:epub_xhtml]}#note_ref\\1">}) #endnote- twice #removed file type end - if dob.is =~/heading|para/ and (not dob.ocn or dob.ocn.to_s.empty?) + if dob.is =~/heading|para/ \ + and (not dob.ocn or dob.ocn.to_s.empty?) format_seg=SiSU_EPUB_Format::Format_seg.new(@md,dob) end if (dob.is=='heading' or dob.is=='heading_insert' or dob.is=='para') \ @@ -414,7 +425,8 @@ WOK end def tail format_head_seg=SiSU_EPUB_Format::Head_seg.new(@md) - if @md.flag_auto_endnotes and @@seg_endnotes[@@get_hash_fn] + if @md.flag_auto_endnotes \ + and @@seg_endnotes[@@get_hash_fn] @@seg[:tail] << %{\n<div class="content">\n<div class="endnote">\n} if @@seg_endnotes[@@get_hash_fn].flatten.length > 0 @@seg[:tail] << format_head_seg.endnote_mark diff --git a/lib/sisu/v3/html_scroll.rb b/lib/sisu/v3/html_scroll.rb index d58dd502..0a37bcca 100644 --- a/lib/sisu/v3/html_scroll.rb +++ b/lib/sisu/v3/html_scroll.rb @@ -153,16 +153,22 @@ module SiSU_HTML_scroll end elsif dob.is=='para' if dob.indent \ - and dob.indent =~/[1-9]/ + and dob.hang \ + and dob.indent =~/[0-9]/ \ + and dob.hang =~/[0-9]/ if dob.bullet_ - sto.format('li',"i#{dob.indent}") - else sto.format('p',"i#{dob.indent}") - end - else - if dob.bullet_ - sto.format('li','bullet') + if dob.indent =~/[1-9]/ + sto.format('li',"i#{dob.indent}") + else + sto.format('li','bullet') + end + elsif dob.indent == dob.hang + sto.format('p',"i#{dob.indent}") + elsif dob.indent != dob.hang + sto.format('p',"h#{dob.hang}i#{dob.indent}") else sto.para end + else sto.para end elsif dob.is=='block' sto.block diff --git a/lib/sisu/v3/html_segments.rb b/lib/sisu/v3/html_segments.rb index ccd48407..e6dc0d35 100644 --- a/lib/sisu/v3/html_segments.rb +++ b/lib/sisu/v3/html_segments.rb @@ -389,16 +389,22 @@ module SiSU_HTML_seg end elsif dob.is=='para' if dob.indent \ - and dob.indent =~/[1-9]/ + and dob.hang \ + and dob.indent =~/[0-9]/ \ + and dob.hang =~/[0-9]/ if dob.bullet_ - sto.format('li',"i#{dob.indent}") - else sto.format('p',"i#{dob.indent}") - end - else - if dob.bullet_ - sto.format('li','bullet') + if dob.indent =~/[1-9]/ + sto.format('li',"i#{dob.indent}") + else + sto.format('li','bullet') + end + elsif dob.indent == dob.hang + sto.format('p',"i#{dob.indent}") + elsif dob.indent != dob.hang + sto.format('p',"h#{dob.hang}i#{dob.indent}") else sto.para end + else sto.para end end elsif dob.is=='block' diff --git a/lib/sisu/v3/hub.rb b/lib/sisu/v3/hub.rb index 7b847d4f..5e288b96 100644 --- a/lib/sisu/v3/hub.rb +++ b/lib/sisu/v3/hub.rb @@ -157,6 +157,7 @@ module SiSU when /^xml_scaffold$/; SiSU_XML_scaffold::Source.new(@opt).read # -k xml_scaffold.rb when /^embedded$/; SiSU_Embedded::Source.new(@opt).read # -m embedded.rb (image and other content) #check when /^manifest$/; SiSU_Manifest::Source.new(@opt).read # -y manifest.rb + when /^qrcode$/; SiSU_QRcode::Source.new(@opt).read # -Q qrcode.rb when /^sitemaps$/; SiSU_Sitemaps::Source.new(@opt).read # -Y sitemaps.rb when /^zap$/; SiSU_Zap::Source.new(@opt).read # -Z zap.rb when /^dbi$/; SiSU_DBI::SiSU_SQL.new(@opt).connect # -D -d dbi.rb @@ -398,6 +399,9 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/ op('share_src_kdissert','kdissert (kdi)') #% -S share kdissert source end end + if @opt.act[:qrcode] #% --qrcode, -Q + op('qrcode','QRcode') + end if @opt.act[:hash_digests] #% --hash-digests, -N digest tree op('digests','digests') end diff --git a/lib/sisu/v3/manifest.rb b/lib/sisu/v3/manifest.rb index 06745c35..f94534a4 100644 --- a/lib/sisu/v3/manifest.rb +++ b/lib/sisu/v3/manifest.rb @@ -415,6 +415,33 @@ module SiSU_Manifest published_languages(id,file) end end + def qrc_image + pth="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image" + fn=@f.base_filename.manifest_txt + #fix relative path for different output structures + img_md="../../_sisu/image/qrc_md.#{fn}.png" + img_title="../../_sisu/image/qrc_title.#{fn}.png" + if FileTest.file?("#{pth}/qrc_md.#{fn}.png")==true + @manifest[:html] <<<<WOK +<tr><td class="left"> + <p class="tiny">QR code SiSU document metadata:</p> + <p class="tiny"> + <img border="0" src="#{img_md}" alt="qrcode metadata" /> + </p> +</td></tr> +WOK + end + if FileTest.file?("#{pth}/qrc_title.#{fn}.png")==true + @manifest[:html] <<<<WOK +<tr><td class="left"> + <p class="tiny">QR code document title info:</p> + <p class="tiny"> + <img border="0" src="#{img_title}" alt="qrcode title" /> + </p> +</td></tr> +WOK + end + end def source_tests if @md.fns =~/\.ssm\.sst$/ #% decide whether to extract and include requested/required documents req=@md.fns @@ -463,6 +490,11 @@ module SiSU_Manifest id,info=@translate.author,@md.creator.author metadata(id,info) end + if defined? @md.creator.editor \ + and @md.creator.editor=~/\S+/ + id,info=@translate.editor,@md.creator.editor + metadata(id,info) + end if defined? @md.creator.contributor \ and @md.creator.contributor=~/\S+/ id,info=@translate.contributor,@md.creator.contributor @@ -813,6 +845,7 @@ WOK WOK language_versions + qrc_image @manifest[:html] <<<<WOK </table> </div> diff --git a/lib/sisu/v3/manpage.rb b/lib/sisu/v3/manpage.rb index 0a2c2fcc..e23caa76 100644 --- a/lib/sisu/v3/manpage.rb +++ b/lib/sisu/v3/manpage.rb @@ -202,11 +202,15 @@ WOK or dob.is=='heading' paragraph=dob.obj if dob.is=='para' - if dob.indent =~/[1-9]/ + if dob.indent =~/[1-9]/ \ + and dob.indent == dob.hang util=if dob.bullet_ SiSU_text_utils::Wrap.new("* #{paragraph}",78,dob.indent.to_i*2) else SiSU_text_utils::Wrap.new(paragraph,78,dob.indent.to_i*2) end + elsif dob.hang =~/[0-9]/ \ + and dob.indent != dob.hang # NOT yet implemented + util=SiSU_text_utils::Wrap.new(paragraph,78,dob.indent.to_i*2) else util=if dob.bullet_ SiSU_text_utils::Wrap.new("* #{paragraph}",78,0) diff --git a/lib/sisu/v3/odf.rb b/lib/sisu/v3/odf.rb index c42ce349..49856a87 100644 --- a/lib/sisu/v3/odf.rb +++ b/lib/sisu/v3/odf.rb @@ -308,7 +308,13 @@ module SiSU_ODF %{#{@brace_url.xml_open}<text:a xlink:type="simple" xlink:href="mailto:\\1">\\1</text:a>#{@brace_url.xml_close}}) dob.obj.gsub!(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, %{#{@brace_url.xml_open}<text:a xlink:type="simple" xlink:href="\\1">\\1</text:a>#{@brace_url.xml_close}}) #http ftp matches with decoration - dob.obj= if dob.is=='para' and dob.indent.to_s =~/[0-9]/ # and t_o.bullet_==true + dob.obj= if dob.is=='para' \ + and dob.indent.to_s =~/[0-9]/ \ + and dob.indent == dob.hang + %{<text:p text:style-name="P1#{dob.indent}">#{dob.obj}#{p_num}</text:p>} + elsif dob.is=='para' \ + and dob.hang.to_s =~/[0-9]/ \ + and dob.indent != dob.hang # NOT yet implemented %{<text:p text:style-name="P1#{dob.indent}">#{dob.obj}#{p_num}</text:p>} else %{<text:p text:style-name="P1">#{dob.obj}#{p_num}</text:p>} end diff --git a/lib/sisu/v3/options.rb b/lib/sisu/v3/options.rb index 81d12db8..b5771590 100644 --- a/lib/sisu/v3/options.rb +++ b/lib/sisu/v3/options.rb @@ -309,6 +309,7 @@ module SiSU_commandline when /^--(?:po4a|pot?)$/; c=c+'P' when /^--(?:termsheet)$/; c=c+'T' when /^--(?:manifest)$/; c=c+'y' + when /^--(?:qrcode)$/; c=c+'Q' when /^--(?:sqlite)$/; c=c+'d' when /^--(?:pg|pg?sql|postgresql)$/; c=c+'D' when /^--(?:remote|rsync)$/; c=c+'R' @@ -551,6 +552,11 @@ module SiSU_commandline true else false end + act[:qrcode]=if cmd =~/Q/ \ + or mod.inspect =~/"--qrcode"/ + true + else false + end act[:manifest]=if cmd =~/y/ \ or mod.inspect =~/"--manifest"/ true diff --git a/lib/sisu/v3/param.rb b/lib/sisu/v3/param.rb index 22b711df..c33bab75 100644 --- a/lib/sisu/v3/param.rb +++ b/lib/sisu/v3/param.rb @@ -300,6 +300,27 @@ module SiSU_Param names=name_format(s) names[:name_a_h] end + def editor + names=@h['editor'] \ + ? name_format(@h['editor']) \ + : nil + s=(names.class==Hash) \ + ? names[:name_str] \ + : nil + s=if s + l,n=Db[:col_name],'creator.editor' + validate_length(s,l,n) + else nil + end + end + def editor_detail + names=@h['editor'] \ + ? name_format(@h['editor']) \ + : nil + (names.class==Hash) \ + ? names[:name_a_h] \ + : nil + end def contributor names=@h['contributor'] \ ? name_format(@h['contributor']) \ @@ -1172,17 +1193,8 @@ module SiSU_Param when /^\^~\s+\S/; @en[:note] +=1 #% processing end end - if para =~/~\{|\^~ |~\^|<:ee>|\{.+?\[[1-6]\]\}\S+?\.ss[tm]/m; @flag_auto_endnotes,@flag_endnotes=true,true - end - unless @flag_auto_endnotes - if para =~/^(4~endnotes\b|<:ee>)/ - @flag_separate_endnotes=true - @flag_endnotes=true - end - end - if para =~/^(?:4~endnotes|<:ee>)/; @flag_separate_endnotes_make=false - end - if para =~/<!!e[#0-9]+?!>\s*.+/; @flag_endnotes=true + if para =~/~\{|\^~ |~\^|\{.+?\[[1-6]\]\}\S+?\.ss[tm]/m + @flag_auto_endnotes,@flag_endnotes=true,true end if para =~/^(?:table\{|\{table)/i; @flag_tables=true end diff --git a/lib/sisu/v3/plaintext.rb b/lib/sisu/v3/plaintext.rb index b7ad1680..aee1e56f 100644 --- a/lib/sisu/v3/plaintext.rb +++ b/lib/sisu/v3/plaintext.rb @@ -225,7 +225,12 @@ WOK wrapped=if dob.is =='para' \ or dob.is=='heading' if dob.is=='para' - if dob.indent =~/[1-9]/ + if dob.hang \ + and dob.hang =~/[0-9]/ \ + and dob.indent != dob.hang + util=SiSU_text_utils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2,dob.hang.to_i*2) + #util=SiSU_text_utils::Wrap.new(dob.obj,@wrap_width,dob.hang.to_i*2,0) + elsif dob.indent =~/[1-9]/ util=if dob.bullet_ SiSU_text_utils::Wrap.new("* #{dob.obj}",@wrap_width,dob.indent.to_i*2) else SiSU_text_utils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2) diff --git a/lib/sisu/v3/po4a.rb b/lib/sisu/v3/po4a.rb index dd2aff7a..c87da346 100644 --- a/lib/sisu/v3/po4a.rb +++ b/lib/sisu/v3/po4a.rb @@ -498,8 +498,8 @@ GSUB #puts z unless z.empty? end end - def pot_structure(desc,orig,trans,indent=0) - SiSU_po4a_utils::Wrap.new(@md,orig,trans,desc,@wrap_width,indent) + def pot_structure(desc,orig,trans,indent=0,hang=0) + SiSU_po4a_utils::Wrap.new(@md,orig,trans,desc,@wrap_width,indent,hang) end def pot_structure_heading(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document lv=n=n3=nil @@ -533,7 +533,8 @@ GSUB end def pot_structure_para(dob_src='',notes_s='',dob_trn='',notes_t='') #% Used to extract the structure of a document util=nil - wrapped=if dob_src.indent =~/[1-9]/ + wrapped=if dob_src.indent =~/[1-9]/ \ + and dob_src.indent == dob_src.hang s_mark=desc=orig=trans='' if dob_src.bullet_ mark="_#{dob_src.indent}* " @@ -557,6 +558,20 @@ GSUB orig="#{s_mark}#{dob_src.obj}" trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}" util=pot_structure(desc,orig,trans) + elsif dob_src.hang =~/[0-9]/ \ + and dob_src.indent != dob_src.hang + s_mark=desc=orig=trans='' + mark="_#{dob_src.hang}_#{dob_src.indent} " + d="#{dob_src.is}: hang #{dob_src.hang} indent #{dob_src.indent}" + instruct=s_mark='' + if @md.opt.cmd=~/M/ + instruct=%{\n# markup for indented text with a first line indented to a different level from the rest of the paragraph, is at the start of the line/object, an underscore and the first indent level a second underscore and the indent level for the rest of the paragraph, "#{mark1}"} + s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"} + end + desc="#{d}#{s_mark}#{instruct}" + orig="#{s_mark}#{dob_src.obj}" + trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}" + util=pot_structure(desc,orig,trans) else s_mark=desc=orig=trans='' if dob_src.bullet_ diff --git a/lib/sisu/v3/qrcode.rb b/lib/sisu/v3/qrcode.rb new file mode 100644 index 00000000..b31bc7a5 --- /dev/null +++ b/lib/sisu/v3/qrcode.rb @@ -0,0 +1,738 @@ +# encoding: utf-8 +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + + * Author: Ralph Amissah + + * Copyright: (C) 1997 - 2011, Ralph Amissah, All Rights Reserved. + + * License: GPL 3 or later: + + SiSU, a framework for document structuring, publishing and search + + Copyright (C) Ralph Amissah + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program. If not, see <http://www.gnu.org/licenses/>. + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + <http://www.fsf.org/licensing/licenses/gpl.html> + <http://www.gnu.org/licenses/gpl.html> + + <http://www.jus.uio.no/sisu/gpl.fsf/toc.html> + <http://www.jus.uio.no/sisu/gpl.fsf/doc.html> + <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt> + + * SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + + * Hompages: + <http://www.jus.uio.no/sisu> + <http://www.sisudoc.org> + + * Download: + <http://www.jus.uio.no/sisu/SiSU/download.html> + + * Ralph Amissah + <ralph@amissah.com> + <ralph.amissah@gmail.com> + + ** Description: summary of generated outputs and metadata + +=end +module SiSU_QRcode + require_relative 'sysenv' # sysenv.rb + include SiSU_Env + require_relative 'prog_text_translation' # prog_text_translation.rb + require_relative 'particulars' # particulars.rb + include SiSU_Particulars + require_relative 'html' # html.rb + require_relative 'param' # param.rb + include SiSU_Param + require_relative 'i18n' # i18n.rb + include SiSU_Viz + class Source + def initialize(opt) + @opt=opt + @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt) + l=SiSU_Env::Standardise_language.new(@opt.lng).language + @doc_language=l[:n] + end + def read + begin + @env=SiSU_Env::Info_env.new(@opt.fns) + @md=SiSU_Param::Parameters.new(@opt).get + SiSU_Env::Info_skin.new(@md).select + xbrowser=@env.program.web_browser + browser=@env.program.console_web_browser + unless @opt.cmd =~/q/ + url_html="file://#{@md.file.output_path.manifest.dir}/#{@md.file.base_filename.manifest}" + @opt.cmd=~/[MVvz]/ \ + ? SiSU_Screen::Ansi.new(@opt.cmd,'QR code',"#{xbrowser} #{url_html}").green_hi_blue \ + : SiSU_Screen::Ansi.new(@opt.cmd,'QR code',"[#{@opt.f_pth[:lng_is]}] #{@opt.fns}").green_title_hi + SiSU_Screen::Ansi.new(@opt.cmd,"#{browser} #{url_html}").grey_tab if @opt.cmd =~/v/i + end + data=SiSU_HTML::Source::Html_environment.new(@particulars).tuned_file_instructions + Output_Info.new(@md).check_output(data) + rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error + ensure + end + end + private + class Output_Info <Source + def initialize(md) + @manifest={ txt: [], txt_title: [] } + @md,@fns=md,md.fns + @env=SiSU_Env::Info_env.new(@md.fns) + @fnb=@md.fnb + @base_url="#{@env.url.root}/#{@fnb}" + @f=SiSU_Env::SiSU_file.new(@md) + @base_path=@f.output_path.manifest.dir + @@dg ||=SiSU_Env::Info_env.new.digest.type + @dg=@@dg + l=SiSU_Env::Standardise_language.new(@md.opt.lng).language + @language=l[:n] + @translate=SiSU_Translate::Source.new(@md,@language) + @brace_url=SiSU_Viz::Skin.new.url_decoration + @dest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image" + end + def output_metadata + fn=@f.base_filename.manifest_txt + mn='' + if @md.opt =~/M/ + pt=@f.output_path.manifest.dir + fn=@f.base_filename.manifest_txt + manifest=@f.write_file.manifest_txt + end + @manifest[:txt].each do |x| + manifest << x if @md.opt =~/M/ + mn += x + end + manifest.close if @md.opt =~/M/ + #system(%{ + # cat #{pt}/#{fn} | qrencode -s 3 -o qrcm.autonomy_markup0.png + #}) + cmd=SiSU_Env::System_call.new(mn,"#{@dest}/qrc_md.#{fn}.png",@md.opt.cmd) + cmd.qrencode + #system(%{ + # echo "#{mn}" | qrencode -s 3 -o #{@dest}/qrc_md.#{fn}.png + #}) + end + def output_metadata_short + fn=@f.base_filename.manifest_txt + mn='' + @manifest[:txt_title].each do |x| + mn += x + end + cmd=SiSU_Env::System_call.new(mn,"#{@dest}/qrc_title.#{fn}.png",@md.opt.cmd) + cmd.qrencode + #system(%{ + # echo "#{mn}" | qrencode -s 3 -o #{@dest}/qrc_title.#{fn}.png + #}) + end + def summarize(id,file,pth='',rel='',url='',img='● ') + size=(File.size("#{pth}/#{file}")/1024.00).to_s + kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1] + @manifest[:txt] <<<<WOK +#{id} #{kb} + #{@brace_url.txt_open}#{url}/#{file}#{@brace_url.txt_close} +WOK + end + def summarize_html_seg(id,file,pth='',rel='',url='',img='● ') + size=(File.size("#{pth}/#{file}")/1024.00).to_s + kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1] + @manifest[:txt] <<<<WOK +#{id} #{kb} + #{@brace_url.txt_open}#{url}/#{file}#{@brace_url.txt_close} +WOK + end + def summarize_sources(id,file,pth,rel,url) + sys=SiSU_Env::System_call.new + dgst =if @dg =~/^sha(?:2|256)$/; sys.sha256("#{pth}/#{file}") + else sys.md5("#{pth}/#{file}") + end + SiSU_Screen::Ansi.new(@md.opt.cmd,"#{dgst[1]} #{file}").warn if @md.opt.cmd =~/[vVM]/ + size=(File.size("#{pth}/#{file}")/1024.00).to_s + kb=/([0-9]+\.[0-9]{0,1})/m.match(size)[1] + @manifest[:txt] <<<<WOK +#{id} #{dgst[1]} #{kb} + #{@brace_url.txt_open}#{url}/#{file}#{@brace_url.txt_close} +WOK + end + def published_manifests? + @f=SiSU_Env::SiSU_file.new(@md) #.base_filename + @m=[] + url=@f.output_path.base.url + manifests={} + mp,mn,mt=nil,nil,nil + ln=SiSU_i18n::Languages.new.language.list + Px[:lng_lst].each do |lc| + if @env.output_dir_structure.by_language_code? + mp="#{@f.output_path.base.dir}/#{lc}/manifest" + mn="#{@md.fnb}.html" + mt="#{mp}/#{mn}" + mu="#{url}/#{lc}/manifest/#{mn}" + elsif @env.output_dir_structure.by_filetype? + mp="#{@f.output_path.base.dir}/manifest" + mn="#{@md.fnb}.#{lc}.html" + mt="#{mp}/#{mn}" + mu="#{url}/manifest/#{mn}" + else + mp="#{@f.output_path.base.dir}/#{@md.fnb}" + mn="sisu_manifest.#{lc}.html" + mt="#{mp}/#{mn}" + mu="#{url}/#{mn}" + end + if FileTest.directory?(mp) \ + && FileTest.file?(mt) + lng=ln[lc][:t] + manifests[lc]={ ln: lng, fn: mn } + @m << { mu: mu, l: lng } + end + end + #url=@f.output_path.base.url + #@en_manifest=if @env.output_dir_structure.by_language_code? + # "#{url}/en/manifest/#{@md.fnb}.html" + #elsif @env.output_dir_structure.by_filetype? + # "#{url}/manifest/#{@md.fnb}.#{lc}.html" + #else + # "#{url}/sisu_manifest.#{lc}.html" + #end + manifests + @m.uniq! + @m + end + def languages(id,file) + flv=published_manifests? + flv.each do |l| + lang=SiSU_Translate::Source.new(@md,@language,l[:n]).language_list + @manifest[:txt] << "#{l[:mu]} #{l[:l]}\n" + end + end + def published_languages(id,file) + flv=published_manifests? + flv.each do |l| + @manifest[:txt] << "#{l[:l]} #{@brace_url.txt_open}#{l[:mu]}#{@brace_url.txt_close}\n" + end + end + def metadata(id,info) + info.to_s.gsub!(/#{Mx[:br_line]}/,"\n") + @manifest[:txt] << %{#{id}: #{info}\n} + end + def md_title_info(id,info) + info.to_s.gsub!(/#{Mx[:br_line]}/,"\n") + @manifest[:txt_title] << %{#{info}\n} + end + def links(url,lnk,target) + static=if url =~/^\.\//; url.gsub(/^\.(\.)?/,@base_url) + elsif url =~/^\.\.\//; url.gsub(/^\.(\.)?/,@env.url.root) + else url + end + @manifest[:txt] << %{#{url} #{lnk} #{@brace_url.txt_open}#{static}#{@brace_url.txt_close}\n} + end + def output_tests + if FileTest.file?(@f.place_file.html_segtoc.dir)==true + pth=@f.output_path.html_seg.dir + rel=@f.output_path.html_seg.rel_sm + url=@f.output_path.html_seg.url + id,file='HTML, table of contents (for segmented text)',@f.base_filename.html_segtoc + summarize_html_seg(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.html_scroll.dir)==true + pth=@f.output_path.html_scroll.dir + rel=@f.output_path.html_scroll.rel_sm + url=@f.output_path.html_scroll.url + id,file='HTML, full length document',@f.base_filename.html_scroll + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.html_book_index.dir)==true + pth=@f.output_path.html_seg.dir + rel=@f.output_path.html_seg.rel_sm + url=@f.output_path.html_seg.url + id,file='HTML, (book type) index',@f.base_filename.html_book_index + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.html_concordance.dir)==true + pth=@f.output_path.html_seg.dir + rel=@f.output_path.html_seg.rel_sm + url=@f.output_path.html_seg.url + id,file='HTML, concordance file',@f.base_filename.html_concordance + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.epub.dir)==true + id,file='EPUB (Electronic Publication, e-book standard)',@f.base_filename.epub + pth=@f.output_path.epub.dir + rel=@f.output_path.epub.rel_sm + url=@f.output_path.epub.url + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_letter}")==true + pth=@f.output_path.pdf.dir + rel=@f.output_path.pdf.rel_sm + url=@f.output_path.pdf.url + id,file="PDF, U.S. letter size, portrait/vertical","#{@f.base_filename.pdf_p_letter}" + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_letter}")==true + pth=@f.output_path.pdf.dir + rel=@f.output_path.pdf.rel_sm + url=@f.output_path.pdf.url + id,file="PDF, U.S. letter size, landscape/horizontal","#{@f.base_filename.pdf_l_letter}" + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a4}")==true + pth=@f.output_path.pdf.dir + rel=@f.output_path.pdf.rel_sm + url=@f.output_path.pdf.url + id,file="PDF, A4 size, portrait/vertical","#{@f.base_filename.pdf_p_a4}" + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a4}")==true + pth=@f.output_path.pdf.dir + rel=@f.output_path.pdf.rel_sm + url=@f.output_path.pdf.url + id,file="PDF, A4 size, landscape/horizontal","#{@f.base_filename.pdf_l_a4}" + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_a5}")==true + pth=@f.output_path.pdf.dir + rel=@f.output_path.pdf.rel_sm + url=@f.output_path.pdf.url + id,file="PDF, A5 (book) size, portrait/vertical","#{@f.base_filename.pdf_p_a5}" + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_a5}")==true + pth=@f.output_path.pdf.dir + rel=@f.output_path.pdf.rel_sm + url=@f.output_path.pdf.url + id,file="PDF, A5 (book) size, landscape/horizontal","#{@f.base_filename.pdf_l_a5}" + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_b5}")==true + pth=@f.output_path.pdf.dir + rel=@f.output_path.pdf.rel_sm + url=@f.output_path.pdf.url + id,file="PDF, B5 (book) size, portrait/vertical","#{@f.base_filename.pdf_p_b5}" + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_b5}")==true + pth=@f.output_path.pdf.dir + rel=@f.output_path.pdf.rel_sm + url=@f.output_path.pdf.url + id,file="PDF, B5 (book) size, landscape/horizontal","#{@f.base_filename.pdf_l_b5}" + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_p_legal}")==true + pth=@f.output_path.pdf.dir + rel=@f.output_path.pdf.rel_sm + url=@f.output_path.pdf.url + id,file="PDF, U.S. legal size, portrait/vertical","#{@f.base_filename.pdf_p_legal}" + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@f.output_path.pdf.dir}/#{@f.base_filename.pdf_l_legal}")==true + pth=@f.output_path.pdf.dir + rel=@f.output_path.pdf.rel_sm + url=@f.output_path.pdf.url + id,file="PDF, U.S. legal size, landscape/horizontal","#{@f.base_filename.pdf_l_legal}" + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.odt.dir)==true + pth=@f.output_path.odt.dir + rel=@f.output_path.odt.rel_sm + url=@f.output_path.odf.url + id,file='ODF:ODT (Open Document Format)',@f.base_filename.odt + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.xhtml.dir)==true + pth=@f.output_path.xhtml.dir + rel=@f.output_path.xhtml.rel_sm + url=@f.output_path.xhtml.url + id,file='ODF:ODT (Open Document Format)',@f.base_filename.odt + id,file='XHTML',@f.base_filename.xhtml + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.xml_sax.dir)==true + pth=@f.output_path.xml_sax.dir + rel=@f.output_path.xml_sax.rel_sm + url=@f.output_path.xml_sax.url + id,file='XML SAX',@f.base_filename.xml_sax + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.xml_dom.dir)==true + pth=@f.output_path.xml_dom.dir + rel=@f.output_path.xml_dom.rel_sm + url=@f.output_path.xml_dom.url + id,file='XML DOM',@f.base_filename.xml_dom + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.txt.dir)==true + if @md.opt.cmd =~/a/; id='Plaintext (Unix (UTF-8) with footnotes)' + elsif @md.opt.cmd =~/e/; id='Plaintext (Unix (UTF-8) with endnotes)' + elsif @md.opt.cmd =~/A/; id='Plaintext (dos (UTF-8) with footnotes)' + elsif @md.opt.cmd =~/E/; id='Plaintext (dos (UTF-8) with endnotes)' + else id='Plaintext (UTF-8)' + end + pth=@f.output_path.txt.dir + rel=@f.output_path.txt.rel_sm + url=@f.output_path.txt.url + file=@f.base_filename.txt + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@base_path}/#{@md.fns}.tex")==true + id,file='LaTeX (portrait)',"#{@md.fns}.tex" + pth,rel,url='','','' + summarize(id,file,pth,rel,url) + end + if FileTest.file?("#{@base_path}/#{@md.fns}.tex")==true + id,file='LaTeX (landscape)',"#{@md.fns}.landscape.tex" + pth,rel,url='','','' + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.manpage.dir)==true + pth=@f.output_path.manpage.dir + rel=@f.output_path.manpage.rel_sm + url=@f.output_path.manpage.url + id,file='Manpage',@f.base_filename.manpage + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.texinfo.dir)==true + pth=@f.output_path.texinfo.dir + rel=@f.output_path.texinfo.rel_sm + url=@f.output_path.texinfo.url + id,file='Texinfo',@f.base_filename.texinfo + summarize(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.hash_digest.dir)==true + pth=@f.output_path.hash_digest.dir + rel=@f.output_path.hash_digest.rel_sm + url=@f.output_path.hash_digest.url + id,file="Digest/DCC - Document Content Certificate (#{@dg})",@f.base_filename.hash_digest + summarize(id,file,pth,rel,url) + end + end + def published_versions + id,file='Markup (SiSU source)',@md.fns + #languages(id,file) + published_languages(id,file) + end + def language_versions + if FileTest.file?(@f.place_file.manifest.dir)==true + id,file='Markup (SiSU source)',@md.fns + published_languages(id,file) + end + end + def source_tests + if @md.fns =~/\.ssm\.sst$/ #% decide whether to extract and include requested/required documents + req=@md.fns + if FileTest.file?(@f.place_file.src.dir)==true + pth=@f.output_path.src.dir + rel=@f.output_path.src.rel + url=@f.output_path.src.url + id,file='Markup Composite File (SiSU source)',@f.base_filename.src + summarize_sources(id,file,pth,rel,url) + end + else + if FileTest.file?(@f.place_file.src.dir)==true + pth=@f.output_path.src.dir + rel=@f.output_path.src.rel + url=@f.output_path.src.url + id,file='Markup (SiSU source)',@f.base_filename.src + summarize_sources(id,file,pth,rel,url) + end + end + if FileTest.file?(@f.place_file.sisupod.dir)==true + pth=@f.output_path.sisupod.dir + rel=@f.output_path.sisupod.rel + url=@f.output_path.sisupod.url + id,file='SiSU doc (zip)',@f.base_filename.sisupod + summarize_sources(id,file,pth,rel,url) + end + if FileTest.file?(@f.place_file.pot.dir)==true + pth=@f.output_path.pot.dir + rel=@f.output_path.pot.rel_sm + url=@f.output_path.pot.url + id,file='SiSU pot',@f.base_filename.pot + summarize_sources(id,file,pth,rel,url) + end + end + def metadata_tests + if defined? @md.title.full \ + and @md.title.full=~/\S+/ + id,info=@translate.full_title,@md.title.full + #id,info=@translate.full_title,%{"#{@md.title.full}"} + metadata(id,info) + md_title_info(id,info) + end + if defined? @md.creator.author \ + and @md.creator.author=~/\S+/ + id,info=@translate.author,@md.creator.author + metadata(id,info) + md_title_info(id,info) + end + if defined? @md.creator.editor \ + and @md.creator.editor=~/\S+/ + id,info=@translate.editor,@md.creator.editor + metadata(id,info) + end + if defined? @md.creator.contributor \ + and @md.creator.contributor=~/\S+/ + id,info=@translate.contributor,@md.creator.contributor + metadata(id,info) + end + if defined? @md.creator.translator \ + and @md.creator.translator=~/\S+/ + id,info=@translate.translator,%{(#{@md.creator.translator})} + metadata(id,info) + md_title_info(id,info) + end + if defined? @md.creator.illustrator \ + and @md.creator.illustrator=~/\S+/ + id,info=@translate.illustrator,@md.creator.illustrator + metadata(id,info) + end + if defined? @md.publisher \ + and @md.publisher=~/\S+/ #dc + id,info=@translate.publisher,@md.publisher + metadata(id,info) + end + if defined? @md.creator.prepared_by \ + and @md.creator.prepared_by=~/\S+/ + id,info=@translate.prepared_by,@md.creator.prepared_by + metadata(id,info) + end + if defined? @md.creator.digitized_by \ + and @md.creator.digitized_by=~/\S+/ + id,info=@translate.digitized_by,@md.creator.digitized_by + metadata(id,info) + end + if defined? @md.classify.subject \ + and @md.classify.subject=~/\S+/ + id,info=@translate.subject,@md.classify.subject + metadata(id,info) + end + if defined? @md.notes.description \ + and @md.notes.description=~/\S+/ + id,info=@translate.description,@md.notes.description + metadata(id,info) + end + if defined? @md.notes.abstract \ + and @md.notes.abstract=~/\S+/ + id,info=@translate.abstract,@md.notes.abstract + metadata(id,info) + end + if defined? @md.type \ + and @md.type=~/\S+/ #dc + id,info=@translate.type,@md.type + metadata(id,info) + end + if defined? @md.rights.all \ + and @md.rights.all=~/\S+/ #dc + id,info=@translate.rights,@md.rights.all + metadata(id,info) + end + if defined? @md.date.published + if defined? @md.date.published \ + and @md.date.published=~/\S+/ #dc + id,info=@translate.date,@md.date.published + metadata(id,info) + md_title_info(id,info) + end + if defined? @md.date.created \ + and @md.date.created=~/\S+/ #dc + id,info=@translate.date_created,@md.date.created + metadata(id,info) + end + if defined? @md.date.issued \ + and @md.date.issued=~/\S+/ #dc + id,info=@translate.date_issued,@md.date.issued + metadata(id,info) + end + if defined? @md.date.available \ + and @md.date.available=~/\S+/ #dc + id,info=@translate.date_available,@md.date.available + metadata(id,info) + end + if defined? @md.date.modified \ + and @md.date.modified=~/\S+/ #dc + id,info=@translate.date_modified,@md.date.modified + metadata(id,info) + end + if defined? @md.date.valid \ + and @md.date.valid=~/\S+/ #dc + id,info=@translate.date_valid,@md.date.valid + metadata(id,info) + end + end + if defined? @md.title.language \ + and @md.title.language=~/\S+/ + id,info=@translate.language,@md.title.language + metadata(id,info) + end + if defined? @md.original.language \ + and @md.original.language=~/\S+/ + id,info=@translate.language_original,@md.original.language + metadata(id,info) + end + if defined? @md.classify.format \ + and @md.classify.format=~/\S+/ + id,info=@transate.format,@md.classify.format + metadata(id,info) + end + if defined? @md.classify.identifier \ + and @md.classify.identifier=~/\S+/ + id,info=@translate.identifier,@md.classify.identifier + metadata(id,info) + end + if defined? @md.original.source \ + and @md.original.source=~/\S+/ + id,info=@translate.source,@md.original.source + metadata(id,info) + end + if defined? @md.classify.relation \ + and @md.classify.relation=~/\S+/ + id,info=@translate.relation,@md.classify.relation + metadata(id,info) + end + if defined? @md.classify.coverage \ + and @md.classify.coverage=~/\S+/ + id,info=@translate.coverage,@md.classify.coverage + metadata(id,info) + end + if defined? @md.classify.keywords \ + and @md.classify.keywords=~/\S+/ + id,info=@translate.keywords,@md.classify.keywords + metadata(id,info) + end + if defined? @md.notes.comment \ + and @md.notes.comment=~/\S+/ + id,info=@translate.comments,@md.notes.comment + metadata(id,info) + end + if defined? @md.classify.loc \ + and @md.classify.loc=~/\S+/ + id,info=@translate.cls_loc,@md.classify.loc + metadata(id,info) + end + if defined? @md.classify.dewey \ + and @md.classify.dewey=~/\S+/ + id,info=@translate.cls_dewey,@md.classify.dewey + metadata(id,info) + end + if defined? @md.classify.oclc \ + and @md.classify.oclc=~/\S+/ + id,info=@translate.cls_oclc,@md.classify.oclc + @manifest[:txt] << %{#{id}:\n} + @manifest[:txt] << %{#{info}\n} + end + if defined? @md.classify.pg \ + and @md.classify.pg=~/\S+/ + id,info=@translate.cls_gutenberg,@md.classify.pg + metadata(id,info) + end + if defined? @md.classify.isbn \ + and @md.classify.isbn=~/\S+/ + id,info=@translate.cls_isbn,@md.classify.isbn + metadata(id,info) + end + if defined? @md.notes.prefix_a \ + and @md.notes.prefix_a=~/\S+/ + id,info=@translate.prefix_a,@md.notes.prefix_a + metadata(id,info) + end + if defined? @md.notes.prefix_b \ + and @md.notes.prefix_b=~/\S+/ + id,info=@translate.prefix_b,@md.notes.prefix_b + metadata(id,info) + end + if defined? @md.topic_register_array \ + and @md.topic_register_array.length > 0 + @manifest[:txt] << %{#{@translate.topic_register}:\n} +@sp=' ' + @md.topic_register_array.each do |t| + t.each_with_index do |st,i| + if st.class==Array + st.each do |v| + @manifest[:txt] << %{#{@sp*i}#{v}\n} + end + else @manifest[:txt] << %{#{@sp*i}#{st}\n} + end + end + end + end + if @md.fns + id,info=@translate.sourcefile,@md.fns + metadata(id,info) + end + if @md.en[:mismatch] > 0 + id,info='WARNING document error in endnote markup, number mismatch',"endnotes: #{@md.en[:note]} != endnote reference marks: #{@md.en[:mark]} (difference = #{@md.en[:mismatch]})" + metadata(id,info) + end + if @md.wc_words + id,info=@translate.word_count,@md.wc_words + metadata(id,info) + end + if @md.dgst + id,info="#{@translate.sourcefile_digest} (#{@dg})",@md.dgst[1] + metadata(id,info) + end + if @md.sc_number + id,info=@translate.sc_number,@md.sc_number + metadata(id,info) + end + if @md.sc_date + id,info=@translate.sc_date,"#{@md.sc_date} at #{@md.sc_time}" + metadata(id,info) + end + end + def check_output(data) + begin + id,file='','' + vz=SiSU_Env::Get_init.instance.skin + @f=SiSU_Env::SiSU_file.new(@md) #.base_filename + url=@f.output_path.base.url + @en_manifest=if @env.output_dir_structure.by_language_code? + "#{url}/en/manifest/#{@md.fnb}.html" + elsif @env.output_dir_structure.by_filetype? + "#{url}/manifest/#{@md.fnb}.#{lc}.html" + else + "#{url}/sisu_manifest.#{lc}.html" + end + @manifest[:txt] <<<<WOK +#{@translate.manifest_description_metadata} + #{@brace_url.txt_open}#{@en_manifest}#{@brace_url.txt_close} +WOK + metadata_tests + @manifest[:txt_title] <<<<WOK + #{@brace_url.txt_open}#{@en_manifest}#{@brace_url.txt_close} +WOK + source_tests + @manifest[:txt] <<<<WOK +#{@translate.language_version_list} +WOK + language_versions + output_metadata + output_metadata_short + rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error + ensure + end + end + end + end +end +__END__ diff --git a/lib/sisu/v3/shared_html_lite.rb b/lib/sisu/v3/shared_html_lite.rb index fca0cfb8..0dd13a34 100644 --- a/lib/sisu/v3/shared_html_lite.rb +++ b/lib/sisu/v3/shared_html_lite.rb @@ -236,6 +236,12 @@ GSUB h={ txt: txt, class: "indent#{t}", type: 'substantive', id: @ocn } tag_para(h) end + def hang_indent(f,t) + txt=markup_object(@t_o) + h={ txt: txt, class: "hang#{f}indent#{t}", type: 'substantive', id: @ocn } + #h={ txt: txt, class: "h#{f}i#{t}", type: 'substantive', id: @ocn } + tag_para(h) + end def para_table %{<p class="norm" align="left"><font #{@vz.font_small} #{@vz.font_color} #{@vz.font_face}>} end diff --git a/lib/sisu/v3/shared_txt.rb b/lib/sisu/v3/shared_txt.rb index 6f25a06b..c81e1c37 100644 --- a/lib/sisu/v3/shared_txt.rb +++ b/lib/sisu/v3/shared_txt.rb @@ -84,8 +84,8 @@ module SiSU_text_utils line=line elsif word =~/\n\n/ word="\n" - @n_char_max_extend = @n_char_max + out[line].length - line=line + @n_char_max_extend = @n_char_max + line += 1 elsif (out[line].length + word.length) > (@n_char_max_extend - @n_indent) \ and out[line] =~/\S+/ @n_char_max_extend = @n_char_max @@ -104,7 +104,7 @@ module SiSU_text_utils end @oldword=word if word =~/\S+/ end - x=out.join(spaces_indent).gsub(/\A\n+/m,'').insert(0,spaces_hang) + spaces_hang + out.join(spaces_indent) end def line_wrap_indent1 @n_indent,@n_hang=2,2 diff --git a/lib/sisu/v3/sysenv.rb b/lib/sisu/v3/sysenv.rb index d709cd52..30ff2e9b 100644 --- a/lib/sisu/v3/sysenv.rb +++ b/lib/sisu/v3/sysenv.rb @@ -696,28 +696,39 @@ module SiSU_Env end def relaxng(cmd='') #trang - convert between different schema languages for XML program='trang' - program_ref="\n\t\tsee http://www.thaiopensource.com/relaxng/trang.html" + program_ref="\n\t\tsee <http://www.thaiopensource.com/relaxng/trang.html>" if program_found?(program); system("trang #{@input} #{@output}") else puts "\tWARN: #{program} is not installed #{program_ref}" if cmd =~/V/ end end + def qrencode #qrcode - for generating QR code + program='qrencode' + program_ref="\n\t\tsee <http://megaui.net/fukuchi/works/qrencode/index.en.html>" + found=(program_found?(program)) ? true : false + found \ + ? (system(%{ + echo "#{@input}" | #{program} -s 3 -o #{@output} + })) \ + : (puts "\tWARN: #{program} is not installed #{program_ref}" if cmd =~/V/) + #found + end def imagemagick #imagemagick is a image manipulation program program='identify' - program_ref="\n\t\tsee http://www.imagemagick.org/" + program_ref="\n\t\tsee <http://www.imagemagick.org/>" found=(program_found?(program)) ? true : false puts "\tWARN: #{program} is not installed #{program_ref}" unless found found end def graphicksmagick #graphicsmagick is a image manipulation program program='gm' - program_ref="\n\t\tsee http://www.graphicsmagick.org/" + program_ref="\n\t\tsee <http://www.graphicsmagick.org/>" found=(program_found?(program)) ? true : false puts "\tWARN: #{program} is not installed #{program_ref}" unless found found end def well_formed? #tidy - check for well formed xml xhtml etc. program=@prog.tidy - program_ref="\n\t\tsee http://tidy.sourceforge.net/" + program_ref="\n\t\tsee <http://tidy.sourceforge.net/>" if program_found?(program); system("#{@prog.tidy} -xml #{@input} > #{@output}") else puts "\tWARN: #{program} is not installed #{program_ref}" end @@ -741,8 +752,7 @@ module SiSU_Env end def latex2pdf(md,papersize='a4') #convert from latex to pdf tell=((@cmd =~/[MVv]/) ? '' : '> /dev/null' ) - mode='batchmode' - #mode='nonstopmode' + mode='batchmode' #mode='nonstopmode' program_ref="\n\t\tSee http://www.tug.org/applications/pdftex/\n\t\tOn Debian this is is included in tetex-extra" texpdf=tex2pdf_engine if @pdfetex_flag; @@ -2142,20 +2152,10 @@ WOK #end def images_local if FileTest.directory?(path.image_source_include) - if @@image_flag - images=Dir.glob("#{path.image_source_include}/*.{png,jpg,gif}") - pth="#{path.webserv}/#{@stub_pwd}" - mkdir_p("#{pth}/_sisu/image") unless FileTest.directory?("#{pth}/_sisu/image") - images.each { |i| File.install(i,"#{pth}/#{i}") } unless images.length > 0 - @@image_flag=false - end path.image_source_include -# "#{Xx[:html_relative2]}/_sisu/image" else if @@local_image==true - cmd=if @cmd; @cmd - else '' - end + cmd=@cmd ? @cmd : '' SiSU_Screen::Ansi.new(cmd,"WARNING - no local image directory or images:", defaults[:image_local] ).warn unless cmd =~/q/ @@local_image=false end @@ -2415,7 +2415,7 @@ WOK and not (@rc['flag']['default'].nil? \ or @rc['flag']['default'].empty?) @rc['flag']['default'] - else '-NhwepoabxXyYv' + else '-NQhewpotbxXyYv' end end def cf_1 #processing flag shortcuts @@ -2423,7 +2423,7 @@ WOK and not (@rc['flag']['i'].nil? \ or @rc['flag']['i'].empty?) @rc['flag']['i'] - else '-hwepoay' + else '-Qhewpoty' end end def cf_2 #processing flag shortcuts @@ -2431,7 +2431,7 @@ WOK and not (@rc['flag']['ii'].nil? \ or @rc['flag']['ii'].empty?) @rc['flag']['ii'] - else '-NhwepoabxXy' + else '-NQhewpotbxXy' end end def cf_3 #processing flag shortcuts @@ -2439,7 +2439,7 @@ WOK and not (@rc['flag']['iii'].nil? \ or @rc['flag']['iii'].empty?) @rc['flag']['iii'] - else '-NhwepoabxXyY' + else '-NQhewpotbxXyY' end end def cf_4 #processing flag shortcuts @@ -2447,7 +2447,7 @@ WOK and not (@rc['flag']['iv'].nil? \ or @rc['flag']['iv'].empty?) @rc['flag']['iv'] - else '-NhwepoabxXDyY --update' + else '-NQhewpotbxXDyY --update' end end def cf_5 #processing flag shortcuts @@ -2455,7 +2455,7 @@ WOK and not (@rc['flag']['v'].nil? \ or @rc['flag']['v'].empty?) @rc['flag']['v'] - else '-NhwepoabxXDyYv --update' + else '-NQhewpotbxXDyYv --update' end end end @@ -3282,6 +3282,12 @@ WOK fn=base_filename.manifest make_file(path,fn) end + def manifest_txt + path=output_path.manifest.dir + make_path(path) + fn=base_filename.manifest_txt + make_file(path,fn) + end def pot path=output_path.pot.dir make_path(path) @@ -3675,6 +3681,16 @@ WOK 'sitemap' + @md.lang_code_insert + ft end end + def manifest_txt + ft='.txt' + if @env.output_dir_structure.by_language_code? + @md.fnb + ft + elsif @env.output_dir_structure.by_filetype? + @md.fnb + @md.lang_code_insert + ft + else #fix + 'sisu_manifest' + @md.lang_code_insert + ft + end + end def manifest ft='.html' if @env.output_dir_structure.by_language_code? diff --git a/lib/sisu/v3/texpdf.rb b/lib/sisu/v3/texpdf.rb index 522480fd..9e223920 100644 --- a/lib/sisu/v3/texpdf.rb +++ b/lib/sisu/v3/texpdf.rb @@ -183,7 +183,7 @@ module SiSU_TeX when /legal/; pdf_p=@f.pdf_p_legal; pdf_l=@f.pdf_l_legal else pdf_p=@f.pdf_p_a4; pdf_l=@f.pdf_l_a4 end - Dir.mkdir(@md.file.output_path.pdf.dir) unless FileTest.directory?(@md.file.output_path.pdf.dir) + mkdir_p(@md.file.output_path.pdf.dir) unless FileTest.directory?(@md.file.output_path.pdf.dir) if FileTest.file?(portrait_pdf) cp(portrait_pdf,"#{@md.file.output_path.pdf.dir}/#{pdf_p}") rm(portrait_pdf) @@ -515,8 +515,14 @@ module SiSU_TeX if dob.bullet_ dob.tmp=tst.bullet elsif dob.indent \ - and dob.indent =~/[1-9]/ + and dob.hang \ + and dob.indent =~/[1-9]/ \ + and dob.indent == dob.hang dob.tmp=tst.indent + elsif dob.hang \ + and dob.hang =~/[0-9]/ \ + and (dob.indent != dob.hang or dob.indent =~/[1-9]/) + dob.tmp=tst.hang else dob.tmp.strip! dob=enclose(dob) unless dob.tmp =~/^$/ diff --git a/lib/sisu/v3/texpdf_format.rb b/lib/sisu/v3/texpdf_format.rb index d7942121..76f0630a 100644 --- a/lib/sisu/v3/texpdf_format.rb +++ b/lib/sisu/v3/texpdf_format.rb @@ -293,6 +293,141 @@ module SiSU_TeX_Pdf # '\subsubsection*{\1}') dob end + def hang + case @dob.indent + when /0/ + case @dob.hang + when /0/; indent,hang='0mm', '0mm' + when /1/; indent,hang='0mm','10mm' + when /2/; indent,hang='0mm','20mm' + when /3/; indent,hang='0mm','30mm' + when /4/; indent,hang='0mm','40mm' + when /5/; indent,hang='0mm','50mm' + when /6/; indent,hang='0mm','60mm' + when /7/; indent,hang='0mm','70mm' + when /8/; indent,hang='0mm','80mm' + when /9/; indent,hang='0mm','90mm' + end + when /1/ + case @dob.hang + when /0/; indent,hang='10mm','-10mm' + when /1/; indent,hang='10mm', '0mm' + when /2/; indent,hang='10mm', '10mm' + when /3/; indent,hang='10mm', '20mm' + when /4/; indent,hang='10mm', '30mm' + when /5/; indent,hang='10mm', '40mm' + when /6/; indent,hang='10mm', '50mm' + when /7/; indent,hang='10mm', '60mm' + when /8/; indent,hang='10mm', '70mm' + when /9/; indent,hang='10mm', '80mm' + end + when /2/ + case @dob.hang + when /0/; indent,hang='20mm','-20mm' + when /1/; indent,hang='20mm','-10mm' + when /2/; indent,hang='20mm', '0mm' + when /3/; indent,hang='20mm', '10mm' + when /4/; indent,hang='20mm', '20mm' + when /5/; indent,hang='20mm', '30mm' + when /6/; indent,hang='20mm', '40mm' + when /7/; indent,hang='20mm', '50mm' + when /8/; indent,hang='20mm', '60mm' + when /9/; indent,hang='20mm', '70mm' + end + when /3/ + case @dob.hang + when /0/; indent,hang='30mm','-30mm' + when /1/; indent,hang='30mm','-20mm' + when /2/; indent,hang='30mm','-10mm' + when /3/; indent,hang='30mm', '0mm' + when /4/; indent,hang='30mm', '10mm' + when /5/; indent,hang='30mm', '20mm' + when /6/; indent,hang='30mm', '30mm' + when /7/; indent,hang='30mm', '40mm' + when /8/; indent,hang='30mm', '50mm' + when /9/; indent,hang='30mm', '60mm' + end + when /4/ + case @dob.hang + when /0/; indent,hang='40mm','-40mm' + when /1/; indent,hang='40mm','-30mm' + when /2/; indent,hang='40mm','-20mm' + when /3/; indent,hang='40mm','-10mm' + when /4/; indent,hang='40mm', '0mm' + when /5/; indent,hang='40mm', '10mm' + when /6/; indent,hang='40mm', '20mm' + when /7/; indent,hang='40mm', '30mm' + when /8/; indent,hang='40mm', '40mm' + when /9/; indent,hang='40mm', '50mm' + end + when /5/ + case @dob.hang + when /0/; indent,hang='50mm','-50mm' + when /1/; indent,hang='50mm','-40mm' + when /2/; indent,hang='50mm','-30mm' + when /3/; indent,hang='50mm','-20mm' + when /4/; indent,hang='50mm','-10mm' + when /5/; indent,hang='50mm', '0mm' + when /6/; indent,hang='50mm', '10mm' + when /7/; indent,hang='50mm', '20mm' + when /8/; indent,hang='50mm', '30mm' + when /9/; indent,hang='50mm', '40mm' + end + when /6/ + case @dob.hang + when /0/; indent,hang='60mm','-60mm' + when /1/; indent,hang='60mm','-50mm' + when /2/; indent,hang='60mm','-40mm' + when /3/; indent,hang='60mm','-30mm' + when /4/; indent,hang='60mm','-20mm' + when /5/; indent,hang='60mm','-10mm' + when /6/; indent,hang='60mm', '0mm' + when /7/; indent,hang='60mm', '10mm' + when /8/; indent,hang='60mm', '20mm' + when /9/; indent,hang='60mm', '30mm' + end + when /7/ + case @dob.hang + when /0/; indent,hang='70mm','-70mm' + when /1/; indent,hang='70mm','-60mm' + when /2/; indent,hang='70mm','-50mm' + when /3/; indent,hang='70mm','-40mm' + when /4/; indent,hang='70mm','-30mm' + when /5/; indent,hang='70mm','-20mm' + when /6/; indent,hang='70mm','-10mm' + when /7/; indent,hang='70mm', '0mm' + when /8/; indent,hang='70mm', '10mm' + when /9/; indent,hang='70mm', '20mm' + end + when /8/ + case @dob.hang + when /0/; indent,hang='80mm','-80mm' + when /1/; indent,hang='80mm','-70mm' + when /2/; indent,hang='80mm','-60mm' + when /3/; indent,hang='80mm','-50mm' + when /4/; indent,hang='80mm','-40mm' + when /5/; indent,hang='80mm','-30mm' + when /6/; indent,hang='80mm','-20mm' + when /7/; indent,hang='80mm','-10mm' + when /8/; indent,hang='80mm', '0mm' + when /9/; indent,hang='80mm', '10mm' + end + when /9/ + case @dob.hang + when /0/; indent,hang='90mm','-90mm' + when /1/; indent,hang='90mm','-80mm' + when /2/; indent,hang='90mm','-70mm' + when /3/; indent,hang='90mm','-60mm' + when /4/; indent,hang='90mm','-50mm' + when /5/; indent,hang='90mm','-40mm' + when /6/; indent,hang='90mm','-30mm' + when /7/; indent,hang='90mm','-20mm' + when /8/; indent,hang='90mm','-10mm' + when /9/; indent,hang='90mm', '0mm' + end + end + "\\begin{ParagraphHang}{#{indent}}{#{hang}}#{@dob.tmp} \\end{ParagraphHang}}" + end def indent indent=case @dob.indent when /1/; '0mm' @@ -636,10 +771,20 @@ module SiSU_TeX_Pdf end def tex_head_lang #babel 18n lang_char_arr=@md.i18n - mainlang_char=lang_char_arr.slice(0) + mainlang_char=if @md.i18n == Array \ + and @md.i18n.length > 0 + lang_char_arr.slice(0) + else @md.opt.lng + end mainlang=@lang.list[mainlang_char][:xlp] - otherlang=[] - lang_char_arr.slice(1..9).each { |ch| otherlang << @lang.list[ch][:xlp] } + otherlang=if mainlang != 'english' + [ @lang.list['en'][:xlp] ] + else [] + end + if lang_char_arr.length > 0 + lang_char_arr.slice(1..9).each { |ch| otherlang << @lang.list[ch][:xlp] } + otherlang.uniq! + end otherlang=otherlang.join(',') { mainlang: mainlang, otherlang: otherlang } end @@ -918,6 +1063,19 @@ WOK \\item[] } {\\end{list}} + +\\newenvironment{ParagraphHang}[2]% +{ +\\begin{list}{}{% +\\setlength\\topsep{0pt}% +\\addtolength{\\leftmargin}{#1} +\\itemindent=#2 +\\setlength\\parsep{0pt plus 1pt}% +} +\\item[] +} +{\\end{list}} + \\newenvironment{Bullet}[1]% { \\begin{list}{}{% diff --git a/lib/sisu/v3/urls.rb b/lib/sisu/v3/urls.rb index 2e73a91f..d5698b53 100644 --- a/lib/sisu/v3/urls.rb +++ b/lib/sisu/v3/urls.rb @@ -118,7 +118,7 @@ module SiSU_urls 'X --xml-dom (XML dom type)'=>@fn[:dom], 'y --manifest (Manifest, html)'=>@fn[:manifest], 'Y (Sitemap, xml)'=>@fn[:sitemap], - 'w -concordance (Concordance, html)'=>@fn[:concordance], + 'w --concordance (Concordance, html)'=>@fn[:concordance], }.sort {|a,b| a[0].downcase<=>b[0].downcase} end def songsheet diff --git a/lib/sisu/v3/xhtml.rb b/lib/sisu/v3/xhtml.rb index ba8238d2..569b1dc3 100644 --- a/lib/sisu/v3/xhtml.rb +++ b/lib/sisu/v3/xhtml.rb @@ -107,7 +107,7 @@ module SiSU_XHTML def song begin SiSU_XHTML::Source::Scroll.new(@particulars).songsheet - SiSU_XHTML::Source::Tidy.new(@md,@env).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use + SiSU_XHTML::Source::Tidy.new(@md,@file.place_file.xhtml.dir).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use SiSU_Rexml::Rexml.new(@md,@file.place_file.xhtml.dir).xml if @md.opt.cmd =~/M/ # test rexml parsing, comment out when not in use #debug rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error ensure @@ -321,8 +321,13 @@ WOK and dob.bullet_==true xml_structure(dob,"indent_bullet#{dob.indent}") elsif dob.is =='para' \ - and dob.indent.to_s =~/[1-9]/ + and dob.indent.to_s =~/[1-9]/ \ + and dob.indent == dob.hang xml_structure(dob,"indent#{dob.indent}") + elsif dob.is=='para' \ + and dob.hang.to_s =~/[0-9]/ \ + and dob.indent != dob.hang + xml_structure(dob,"hang#{dob.hang.to_s}_indent#{dob.indent.to_s}") else xml_structure(dob) end end @@ -395,8 +400,8 @@ WOK end end class Tidy - def initialize(md,dir) - @md,@env=md,dir + def initialize(md,file) + @md,@file=md,file @prog=SiSU_Env::Info_program.new end def xml @@ -408,7 +413,7 @@ WOK tell.grey_open end tidyfile='/dev/null' #don't want one or screen output, check for alternative flags - tidy=SiSU_Env::System_call.new("#{@env.path.output}/#{@md.fnb}/#{@md.fn[:xhtml]}",tidyfile) + tidy=SiSU_Env::System_call.new(@file,tidyfile) tidy.well_formed? tell.p_off unless @md.opt.cmd =~/q/ end diff --git a/lib/sisu/v3/xml.rb b/lib/sisu/v3/xml.rb index 23cfb5bc..73e9345c 100644 --- a/lib/sisu/v3/xml.rb +++ b/lib/sisu/v3/xml.rb @@ -107,7 +107,7 @@ module SiSU_XML_SAX def song begin SiSU_XML_SAX::Source::Scroll.new(@particulars).songsheet - SiSU_XML_SAX::Source::Tidy.new(@md,@env).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use + SiSU_XML_SAX::Source::Tidy.new(@md,@file.place_file.xml_sax.dir).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use SiSU_Rexml::Rexml.new(@md,@file.place_file.xml_sax.dir).xml if @md.opt.cmd =~/M/ # test rexml parsing, comment out when not in use #debug rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error ensure @@ -346,8 +346,13 @@ WOK and dob.bullet_==true xml_structure(dob,"indent_bullet#{dob.indent}") elsif dob.is =~ /^para/ \ - and dob.indent.to_s =~/[1-9]/ + and dob.indent.to_s =~/[1-9]/ \ + and dob.indent == dob.hang xml_structure(dob,"indent#{dob.indent}") + elsif dob.is =~ /^para/ \ + and dob.hang.to_s =~/[0-9]/ \ + and dob.indent != dob.hang + xml_structure(dob,"hang#{dob.hang.to_s}_indent#{dob.indent.to_s}") else xml_structure(dob) end end @@ -437,8 +442,8 @@ WOK end end class Tidy - def initialize(md,dir) - @md,@env=md,dir + def initialize(md,file) + @md,@file=md,file @prog=SiSU_Env::Info_program.new end def xml @@ -450,7 +455,7 @@ WOK tell.grey_open end tidyfile='/dev/null' #don't want one or screen output, check for alternative flags - tidy=SiSU_Env::System_call.new("#{@env.path.output}/#{@md.fnb}/#{@md.fn[:sax]}",tidyfile) + tidy=SiSU_Env::System_call.new(@file,tidyfile) tidy.well_formed? tell.p_off unless @md.opt.cmd =~/q/ end diff --git a/lib/sisu/v3/xml_dom.rb b/lib/sisu/v3/xml_dom.rb index 22b11ebc..664bccdc 100644 --- a/lib/sisu/v3/xml_dom.rb +++ b/lib/sisu/v3/xml_dom.rb @@ -104,7 +104,7 @@ module SiSU_XML_DOM def songsheet begin SiSU_XML_DOM::Source::Scroll.new(@particulars).songsheet - SiSU_XML_DOM::Source::Tidy.new(@md,@env).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use + SiSU_XML_DOM::Source::Tidy.new(@md,@file.place_file.xml_dom.dir).xml if @md.opt.cmd =~/[vVM]/ # test wellformedness, comment out when not in use SiSU_Rexml::Rexml.new(@md,@file.place_file.xml_dom.dir).xml if @md.opt.cmd =~/M/ # test rexml parsing, comment out when not in use #debug rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error ensure @@ -412,9 +412,15 @@ WOK type="indent_bullet#{dob.indent.to_s}" xml_markup(dob) elsif dob.is=='para' \ - and dob.indent.to_s =~/[1-9]/ + and dob.indent.to_s =~/[1-9]/ \ + and dob.indent == dob.hang type="indent#{dob.indent.to_s}" xml_markup(dob) + elsif dob.is=='para' \ + and dob.hang.to_s =~/[0-9]/ \ + and dob.indent != dob.hang + type="hang#{dob.hang.to_s}_indent#{dob.indent.to_s}" + xml_markup(dob) else type='norm' xml_markup(dob) @@ -513,8 +519,8 @@ WOK end end class Tidy - def initialize(md,dir) - @md,@env=md,dir + def initialize(md,file) + @md,@file=md,file @prog=SiSU_Env::Info_program.new end def xml @@ -524,7 +530,7 @@ WOK tell=SiSU_Screen::Ansi.new(@md.opt.cmd,'invert','','') tell.grey_open unless @md.opt.cmd =~/q/ tidyfile='/dev/null' #don't want one or screen output, check for alternative flags - tidy=SiSU_Env::System_call.new("#{@env.path.output}/#{@md.fnb}/#{@md.fn[:dom]}",tidyfile) + tidy=SiSU_Env::System_call.new(@file,tidyfile) tidy.well_formed? tell.p_off unless @md.opt.cmd =~/q/ end diff --git a/man/man1/sisu.1 b/man/man1/sisu.1 index 2994ef64..0b9a2fce 100644 --- a/man/man1/sisu.1 +++ b/man/man1/sisu.1 @@ -1,4 +1,4 @@ -.TH "sisu" "1" "2011-06-24" "3.0.13-beta-rb1.9.2p180" "SiSU" +.TH "sisu" "1" "2011-07-26" "3.0.14-beta-rb1.9.2p180" "SiSU" .br .SH NAME .br @@ -34,18 +34,18 @@ RALPH AMISSAH .br .B SiSU -is a framework for document structuring, publishing (in multiple open -standard formats) and search, comprising of: (a) a lightweight document -structure and presentation markup syntax; and (b) an accompanying engine for -generating standard document format outputs from documents prepared in sisu -markup syntax, which is able to produce multiple standard outputs (including -the population of sql databases) that (can) share a common numbering system for -the citation of text within a document. +is a framework for document structuring, publishing (in multiple open standard +formats) and search, comprising of: (a) a lightweight document structure and +presentation markup syntax; and (b) an accompanying engine for generating +standard document format outputs from documents prepared in sisu markup syntax, +which is able to produce multiple standard outputs (including the population of +sql databases) that (can) share a common numbering system for the citation of +text within a document. .br .B SiSU -is developed under an open source, software libre license (GPL3). Its use -case for development is work with medium to large document sets and cope with +is developed under an open source, software libre license (GPL3). Its use case +for development is work with medium to large document sets and cope with evolving document formats/ representation technologies. Documents are prepared once, and generated as need be to update the technical presentation or add additional output formats. Various output formats (including search related @@ -94,28 +94,28 @@ content. .br In preparing a .B SiSU -document you optionally provide semantic information related to the document -in a document header, and in marking up the substantive text provide -information on the structure of the document, primarily indicating heading -levels and footnotes. You also provide information on basic text attributes -where used. The rest is automatic, sisu from this information custom builds[^2] -the different forms of output requested. +document you optionally provide semantic information related to the document in +a document header, and in marking up the substantive text provide information +on the structure of the document, primarily indicating heading levels and +footnotes. You also provide information on basic text attributes where used. +The rest is automatic, sisu from this information custom builds[^2] the +different forms of output requested. .br .B SiSU works with an abstraction of the document based on its structure which is comprised of its headings[^3] and objects[^4], which enables .B SiSU -to represent the document in many different ways, and to take advantage of -the strengths of different ways of presenting documents. The objects are -numbered, and these numbers can be used to provide a common basis for citing -material within a document across the different output format types. This is -significant as page numbers are not well suited to the digital age, in web -publishing, changing a browser's default font or using a different browser can -mean that text will appear on a different page; and publishing in different -formats, html, landscape and portrait pdf etc. again page numbers are not -useful to cite text. Dealing with documents at an object level together with -object numbering also has implications for search that +to represent the document in many different ways, and to take advantage of the +strengths of different ways of presenting documents. The objects are numbered, +and these numbers can be used to provide a common basis for citing material +within a document across the different output format types. This is significant +as page numbers are not well suited to the digital age, in web publishing, +changing a browser's default font or using a different browser can mean that +text will appear on a different page; and publishing in different formats, +html, landscape and portrait pdf etc. again page numbers are not useful to cite +text. Dealing with documents at an object level together with object numbering +also has implications for search that .B SiSU is able to take advantage of. @@ -134,8 +134,8 @@ relies on software, the markup is uncomplicated and minimalistic which guarantees that future engines can be written to run against it. It is also easily converted to other formats, which means documents prepared in .B SiSU -can be migrated to other document formats. Further security is provided by -the fact that the software itself, +can be migrated to other document formats. Further security is provided by the +fact that the software itself, .B SiSU is available under GPL3 a licence that guarantees that the source code will always be open, and free as in libre, which means that that code base can be @@ -189,19 +189,19 @@ content prepared in .br .B SiSU -is a document publishing system, that from a simple single marked\-up -document, produces multiple output formats including: plaintext, html, xhtml, -XML, epub, odt (odf text), LaTeX, pdf, info, and SQL (PostgreSQL and SQLite), -which share text object numbers ("object citation numbering") and the same -document structure information. For more see: <http://www.jus.uio.no/sisu> +is a document publishing system, that from a simple single marked\-up document, +produces multiple output formats including: plaintext, html, xhtml, XML, epub, +odt (odf text), LaTeX, pdf, info, and SQL (PostgreSQL and SQLite), which share +text object numbers ("object citation numbering") and the same document +structure information. For more see: <http://www.jus.uio.no/sisu> .SH 2.2 DOCUMENT PROCESSING COMMAND FLAGS .TP .B \-a [filename/wildcard] -produces plaintext with Unix linefeeds and without markup, (object numbers -are omitted), has footnotes at end of each paragraph that contains them [ \ \-A -\ for \ equivalent \ dos \ (linefeed) \ output \ file] [see \ \-e \ for \ +produces plaintext with Unix linefeeds and without markup, (object numbers are +omitted), has footnotes at end of each paragraph that contains them [ \ \-A \ +for \ equivalent \ dos \ (linefeed) \ output \ file] [see \ \-e \ for \ endnotes]. (Options include: \-\-endnotes for endnotes \-\-footnotes for footnotes at the end of each paragraph \-\-unix for unix linefeed (default) \-\-msdos for msdos linefeed) @@ -212,9 +212,9 @@ see \-\-xhtml .TP .B \-\-color\-toggle [filename/wildcard] -screen toggle ansi screen colour on or off depending on default set (unless -\-c flag is used: if sisurc colour default is set to 'true', output to screen -will be with colour, if sisurc colour default is set to 'false' or is undefined +screen toggle ansi screen colour on or off depending on default set (unless \-c +flag is used: if sisurc colour default is set to 'true', output to screen will +be with colour, if sisurc colour default is set to 'false' or is undefined screen output will be without colour). Alias \-c .TP @@ -266,8 +266,7 @@ see \-\-sqlite .TP .B \-\-epub [filename/wildcard] -produces an epub document, [sisu \ version \ >=2 \ ] (filename.epub). Alias -\-e +produces an epub document, [sisu \ version \ >=2 \ ] (filename.epub). Alias \-e .TP .B \-e [filename/wildcard] @@ -391,8 +390,7 @@ see \-\-odt .TP .B \-\-odt [filename/wildcard/url] -output basic document in opendocument file format (opendocument.odt). Alias -\-o +output basic document in opendocument file format (opendocument.odt). Alias \-o .TP .B \-o [filename/wildcard/url] @@ -400,8 +398,8 @@ see \-\-odt .TP .B \-\-pdf [filename/wildcard] -produces LaTeX pdf (portrait.pdf & landscape.pdf). Default paper size is set -in config file, or document header, or provided with additional command line +produces LaTeX pdf (portrait.pdf & landscape.pdf). Default paper size is set in +config file, or document header, or provided with additional command line parameter, e.g. \-\-papersize\-a4 preset sizes include: 'A4', U.S. 'letter' and 'legal' and book sizes 'A5' and 'B5' (system defaults to A4). Alias \-p @@ -434,10 +432,18 @@ see \-\-po4a see \-\-pdf .TP +.B \-\-qrcode [filename/wildcard] +generate QR code image of metadata (used in manifest). v3 only. + +.TP .B \-\-quiet [filename/wildcard] quiet less output to screen. .TP +.B \-Q [filename/wildcard] +see \-\-qrcode + +.TP .B \-q [filename/wildcard] see \-\-quiet @@ -469,8 +475,7 @@ so it is first necessary to create them, before generating the search form) see the default port set for use by the webrick server, (otherwise the port is left blank and the system setting used, usually 80). The samples are dumped in the present work directory which must be writable, (with screen instructions given -that they be copied to the cgi\-bin directory). \-Fv (in addition to the above) -provides some information on setting up hyperestraier for sisu. Alias \-F +that they be copied to the cgi\-bin directory). Alias \-F .TP .B \-\-scp [filename/wildcard] @@ -480,9 +485,9 @@ that you have your "keys" and ssh agent in place. Also see \-\-rsync. Alias \-r .TP .B \-\-sqlite \-\-[instruction] [filename] -database type default set to sqlite, (for which \-\-sqlite may be used -instead) or to specify another database \-\-db\-[pgsql, \ sqlite] (however see -\-D) possible instructions include: \-\-createdb; \-\-create; \-\-dropall; +database type default set to sqlite, (for which \-\-sqlite may be used instead) +or to specify another database \-\-db\-[pgsql, \ sqlite] (however see \-D) +possible instructions include: \-\-createdb; \-\-create; \-\-dropall; \-\-import [filename]; \-\-update [filename]; \-\-remove [filename]; see database section below. Alias \-d @@ -496,24 +501,23 @@ option is tested only with zsh). Alias \-S .TP .B \-\-sisupod [filename/wildcard] -produces a zipped file of the prepared document specified along with -associated images, by default named sisupod.zip they may alternatively be named -with the filename extension \.ssp This provides a quick way of gathering the -relevant parts of a sisu document which can then for example be emailed. A -sisupod includes sisu markup source file, (along with associated documents if a -master file, or available in multilingual versions), together with related -images and skin. +produces a zipped file of the prepared document specified along with associated +images, by default named sisupod.zip they may alternatively be named with the +filename extension \.ssp This provides a quick way of gathering the relevant +parts of a sisu document which can then for example be emailed. A sisupod +includes sisu markup source file, (along with associated documents if a master +file, or available in multilingual versions), together with related images and +skin. .B SiSU -commands can be run directly against a sisupod contained in a local -directory, or provided as a url on a remote site. As there is a security issue -with skins provided by other users, they are not applied unless the flag -\-\-trust or \-\-trusted is added to the command instruction, it is recommended -that file that are not your own are treated as untrusted. The directory -structure of the unzipped file is understood by sisu, and sisu commands can be -run within it. Note: if you wish to send multiple files, it quickly becomes -more space efficient to zip the sisu markup directory, rather than the -individual files for sending). See the \-S option without [filename/wildcard]. -Alias \-S +commands can be run directly against a sisupod contained in a local directory, +or provided as a url on a remote site. As there is a security issue with skins +provided by other users, they are not applied unless the flag \-\-trust or +\-\-trusted is added to the command instruction, it is recommended that file +that are not your own are treated as untrusted. The directory structure of the +unzipped file is understood by sisu, and sisu commands can be run within it. +Note: if you wish to send multiple files, it quickly becomes more space +efficient to zip the sisu markup directory, rather than the individual files +for sending). See the \-S option without [filename/wildcard]. Alias \-S .TP .B \-\-source [filename/wildcard] @@ -537,9 +541,9 @@ produces texinfo and info file, (view with pinfo). Alias \-I .TP .B \-\-txt [filename/wildcard] -produces plaintext with Unix linefeeds and without markup, (object numbers -are omitted), has footnotes at end of each paragraph that contains them [ \ \-A -\ for \ equivalent \ dos \ (linefeed) \ output \ file] [see \ \-e \ for \ +produces plaintext with Unix linefeeds and without markup, (object numbers are +omitted), has footnotes at end of each paragraph that contains them [ \ \-A \ +for \ equivalent \ dos \ (linefeed) \ output \ file] [see \ \-e \ for \ endnotes]. (Options include: \-\-endnotes for endnotes \-\-footnotes for footnotes at the end of each paragraph \-\-unix for unix linefeed (default) \-\-msdos for msdos linefeed). Alias \-t @@ -578,13 +582,13 @@ normally omitted. .TP .B \-\-v3 [filename/wildcard] -invokes the sisu v3 document parser/generator. Currently under development -and incomplete, v3 requires >= ruby1.9.2p180. You may run sisu3 instead. +invokes the sisu v3 document parser/generator. Currently under development and +incomplete, v3 requires >= ruby1.9.2p180. You may run sisu3 instead. .TP .B \-\-verbose [filename/wildcard] -provides verbose output of what is being generated, where output is placed -(and error messages if any), as with \-u flag provides a url mapping of files +provides verbose output of what is being generated, where output is placed (and +error messages if any), as with \-u flag provides a url mapping of files created for each of the processing flag requests. Alias \-v .TP @@ -609,10 +613,10 @@ see \-\-verbose .TP .B \-\-webrick -starts ruby's webrick webserver points at sisu output directories, the -default port is set to 8081 and can be changed in the resource configuration -files. [tip: \ the \ webrick \ server \ requires \ link \ suffixes, \ so \ html -\ output \ should \ be \ created \ using \ the \ \-h \ option \ rather \ than \ +starts ruby's webrick webserver points at sisu output directories, the default +port is set to 8081 and can be changed in the resource configuration files. +[tip: \ the \ webrick \ server \ requires \ link \ suffixes, \ so \ html \ +output \ should \ be \ created \ using \ the \ \-h \ option \ rather \ than \ \-H \ ; \ also, \ note \ \-F \ webrick \ ]. Alias \-W .TP @@ -662,10 +666,10 @@ processing flags. .TP .B \-\-zap [filename/wildcard] -Zap, if used with other processing flags deletes output files of the type -about to be processed, prior to processing. If \-Z is used as the lone -processing related flag (or in conjunction with a combination of \-[mMvVq]), -will remove the related document output directory. Alias \-Z +Zap, if used with other processing flags deletes output files of the type about +to be processed, prior to processing. If \-Z is used as the lone processing +related flag (or in conjunction with a combination of \-[mMvVq]), will remove +the related document output directory. Alias \-Z .TP .B \-Z [filename/wildcard] @@ -716,18 +720,18 @@ where database name would be SiSU_[present \ working \ directory \ name \ .TP .B \-\-pg \-v \-\-import -[filename/wildcard] imports data specified to postgresql db (rb.dbi) [ \ \-dv -\ \-\-import \ sqlite \ equivalent] +[filename/wildcard] imports data specified to postgresql db (rb.dbi) [ \ \-dv \ +\-\-import \ sqlite \ equivalent] .TP .B \-\-pg \-v \-\-update -[filename/wildcard] updates/imports specified data to postgresql db (rb.dbi) -[ \ \-dv \ \-\-update \ sqlite \ equivalent] +[filename/wildcard] updates/imports specified data to postgresql db (rb.dbi) [ +\ \-dv \ \-\-update \ sqlite \ equivalent] .TP .B \-\-pg \-\-remove -[filename/wildcard] removes specified data to postgresql db (rb.dbi) [ \ \-d -\ \-\-remove \ sqlite \ equivalent] +[filename/wildcard] removes specified data to postgresql db (rb.dbi) [ \ \-d \ +\-\-remove \ sqlite \ equivalent] .TP .B \-\-pg \-\-dropall @@ -742,45 +746,45 @@ The \-v is for verbose output. .TP .B \-\-update [filename/wildcard] -Checks existing file output and runs the flags required to update this -output. This means that if only html and pdf output was requested on previous -runs, only the \-hp files will be applied, and only these will be generated -this time, together with the summary. This can be very convenient, if you offer +Checks existing file output and runs the flags required to update this output. +This means that if only html and pdf output was requested on previous runs, +only the \-hp files will be applied, and only these will be generated this +time, together with the summary. This can be very convenient, if you offer different outputs of different files, and just want to do the same again. .TP .B \-0 to \-5 [filename \ or \ wildcard] -Default shorthand mappings (note that the defaults can be changed/configured -in the sisurc.yml file): +Default shorthand mappings (for v3, note that the defaults can be +changed/configured in the sisurc.yml file): .TP .B \-0 -\-mNhwpAobxXyYv [this \ is \ the \ default \ action \ run \ when \ no \ +\-NQhewpotbxXyYv [this \ is \ the \ default \ action \ run \ when \ no \ options \ are \ give, \ i.e. \ on \ 'sisu \ [filename]'] .TP .B \-1 -\-mhewpy +\-Qhewpoty .TP .B \-2 -\-mhewpaoy +\-NQhewpotbxXy .TP .B \-3 -\-mhewpAobxXyY +\-NQhewpotbxXyY .TP .B \-4 -\-mhewpAobxXDyY \-\-import +\-NQhewpotbxXDyY \-\-update .TP .B \-5 -\-mhewpAobxXDyY \-\-update +\-NQhewpotbxXDyYv \-\-update .br -add \-v for verbose mode and \-c for color, e.g. sisu \-2vc [filename \ or \ -wildcard] +add \-v for verbose mode and \-c to toggle color state, e.g. sisu \-2vc +[filename \ or \ wildcard] .br consider \-u for appended url info or \-v for verbose output @@ -998,8 +1002,8 @@ an alternative presentation of markup syntax: .br With .B SiSU -installed sample skins may be found in: /usr/share/doc/sisu/markup\-samples -(or equivalent directory) and if sisu\-markup\-samples is installed also under: +installed sample skins may be found in: /usr/share/doc/sisu/markup\-samples (or +equivalent directory) and if sisu\-markup\-samples is installed also under: /usr/share/doc/sisu/markup\-samples\-non\-free .SH 8. MARKUP OF HEADERS @@ -1029,7 +1033,9 @@ to this one: % SiSU master 2.0 @title: SiSU :subtitle: Manual - @creator: :author: Amissah, Ralph + @creator: + :author: Amissah, Ralph + @publisher: \ [publisher \ name] @rights: Copyright (C) Ralph Amissah 2007, License GPL 3 @classify: :type: information @@ -1191,9 +1197,9 @@ another) .br .B :A~ [heading \ text] -Top level heading [this \ usually \ has \ similar \ content \ to \ the \ -title \ @title: \ ] NOTE: the heading levels described here are in 0.38 -notation, see heading +Top level heading [this \ usually \ has \ similar \ content \ to \ the \ title +\ @title: \ ] NOTE: the heading levels described here are in 0.38 notation, see +heading .br .B :B~ [heading \ text] @@ -1205,22 +1211,22 @@ Third level heading [this \ is \ a \ heading \ level \ divider] .br .B 1~ [heading \ text] -Top level heading preceding substantive text of document or sub\-heading 2, -the heading level that would normally be marked 1. or 2. or 3. etc. in a -document, and the level on which sisu by default would break html output into -named segments, names are provided automatically if none are given (a number), +Top level heading preceding substantive text of document or sub\-heading 2, the +heading level that would normally be marked 1. or 2. or 3. etc. in a document, +and the level on which sisu by default would break html output into named +segments, names are provided automatically if none are given (a number), otherwise takes the form 1~my_filename_for_this_segment .br .B 2~ [heading \ text] -Second level heading preceding substantive text of document or sub\-heading 3 -, the heading level that would normally be marked 1.1 or 1.2 or 1.3 or 2.1 etc. +Second level heading preceding substantive text of document or sub\-heading 3, +the heading level that would normally be marked 1.1 or 1.2 or 1.3 or 2.1 etc. in a document. .br .B 3~ [heading \ text] -Third level heading preceding substantive text of document, that would -normally be marked 1.1.1 or 1.1.2 or 1.2.1 or 2.1.1 etc. in a document +Third level heading preceding substantive text of document, that would normally +be marked 1.1.1 or 1.1.2 or 1.2.1 or 2.1.1 etc. in a document .nf 1~filename level 1 heading, @@ -1255,7 +1261,7 @@ normally be marked 1.1.1 or 1.1.2 or 1.2.1 or 2.1.1 etc. in a document .br +{inserted text}+ .br - \\-{strikethrough}\\- + \-{strikethrough}\- .br #{monospace}# .fi @@ -1268,8 +1274,8 @@ normal text, .B emphasis, .B bold text, .I italics, -.I underscore -, "citation", ^superscript^, [subscript], ++inserted text++, +.I underscore, +"citation", ^superscript^, [subscript], ++inserted text++, \-\-strikethrough\-\-, monospace .br @@ -1277,8 +1283,8 @@ normal text .br .B emphasis -[note: \ can \ be \ configured \ to \ be \ represented \ by \ bold, \ italics -\ or \ underscore] +[note: \ can \ be \ configured \ to \ be \ represented \ by \ bold, \ italics \ +or \ underscore] .br .B bold text @@ -1372,7 +1378,32 @@ Numbered List (not to be confused with headings/titles, (document structure)) _# numbered list numbered list indented a., b., c., d., etc. .fi -.SH 9.4 FOOTNOTES / ENDNOTES +.SH 9.4 HANGING INDENTS + +.br +.B markup example: + +.nf + _0_1 first line no indent, + rest of paragraph indented one step + _1_0 first line indented, + rest of paragraph no indent + in each case level may be 0\-9 +.fi + +.br +.B resulting output: + +.br + first line no indent, rest of paragraph indented one step + +.br +first line indented, rest of paragraph no indent + +.br +in each case level may be 0\-9 + +.SH 9.5 FOOTNOTES / ENDNOTES .br Footnotes and endnotes are marked up at the location where they would be @@ -1454,9 +1485,9 @@ normal text [^+2] continues .br the standard and pair notation cannot be mixed in the same document -.SH 9.5 LINKS +.SH 9.6 LINKS -.SH 9.5.1 NAKED URLS WITHIN TEXT, DEALING WITH URLS +.SH 9.6.1 NAKED URLS WITHIN TEXT, DEALING WITH URLS .br urls found within text are marked up automatically. A url within text is @@ -1511,7 +1542,7 @@ blocks are discussed later in this document deb\-src http://www.jus.uio.no/sisu/archive unstable main non\-free .fi -.SH 9.5.2 LINKING TEXT +.SH 9.6.2 LINKING TEXT .br To link text or an image to a url the markup is as follows @@ -1546,8 +1577,6 @@ automatically as a footnote .br about SiSU <http://www.sisudoc.org/> [^14] markup -.SH 9.5.3 LINKING IMAGES - .br .B markup example: @@ -1602,9 +1631,9 @@ note at a heading level the same is automatically achieved by providing names to headings 1, 2 and 3 i.e. 2~[name] and 3~[name] or in the case of auto\-heading numbering, without further intervention. -.SH 9.6 GROUPED TEXT +.SH 9.7 GROUPED TEXT -.SH 9.6.1 TABLES +.SH 9.7.1 TABLES .br Tables may be prepared in two either of two forms @@ -1645,7 +1674,7 @@ information in each column Very active contributors*** | 0| 31| 190| 692| 1,639| 3,016 No. of English language articles| 25| 16,000| 101,000| 190,000| 320,000| 630,000 No. of articles, all languages | 25| 19,000| 138,000| 490,000| 862,000|1,600,000 - \\* Contributed at least ten times; \\** at least 5 times in last month; \\*\** more than 100 times in last month. + \e* Contributed at least ten times; \e** at least 5 times in last month; \e*\e** more than 100 times in last month. .fi .br @@ -1660,7 +1689,7 @@ information in each column * Contributed at least ten times; ** at least 5 times in last month; *** more than 100 times in last month. -.SH 9.6.2 POEM +.SH 9.7.2 POEM .br .B basic markup: @@ -1816,7 +1845,7 @@ than 100 times in last month. death."' .br -.SH 9.6.3 GROUP +.SH 9.7.3 GROUP .br .B basic markup: @@ -1976,15 +2005,15 @@ than 100 times in last month. death."' .br -.SH 9.6.4 CODE +.SH 9.7.4 CODE .br Code tags code{ \... }code (used as with other group tags described above) are used to escape regular sisu markup, and have been used extensively within this document to provide examples of .B SiSU -markup. You cannot however use code tags to escape code tags. They are -however used in the same way as group or poem tags. +markup. You cannot however use code tags to escape code tags. They are however +used in the same way as group or poem tags. .br A code\-block is treated as an object and given a single object number. [an \ @@ -2044,8 +2073,8 @@ some \ later \ time] .br From .B SiSU -2.7.7 on you can number codeblocks by placing a hash after the opening code -tag code{# as demonstrated here: +2.7.7 on you can number codeblocks by placing a hash after the opening code tag +code{# as demonstrated here: .nf 1 | `Fury said to a @@ -2094,9 +2123,9 @@ tag code{# as demonstrated here: 44 | death."' .fi -.SH 9.7 ADDITIONAL BREAKS \- LINEBREAKS WITHIN OBJECTS, COLUMN AND PAGE\-BREAKS +.SH 9.8 ADDITIONAL BREAKS \- LINEBREAKS WITHIN OBJECTS, COLUMN AND PAGE\-BREAKS -.SH 9.7.1 LINE\-BREAKS +.SH 9.8.1 LINE\-BREAKS .br To break a line within a "paragraph object", two backslashes \e\e @@ -2115,7 +2144,7 @@ The html break br enclosed in angle brackets (though undocumented) is available in versions prior to 3.0.13 and 2.9.7 (it remains available for the time being, but is depreciated). -.SH 9.7.2 PAGE BREAKS +.SH 9.8.2 PAGE BREAKS .br Page breaks are only relevant and honored in some output formats. A page break @@ -2140,7 +2169,7 @@ page new <:pn> breaks the page, starts a new page. page break <:pb> breaks a column, starts a new column, if using columns, else breaks the page, starts a new page. -.SH 9.8 BOOK INDEX +.SH 9.9 BOOK INDEX .br To make an index append to paragraph the book index term relates to it, using @@ -2216,15 +2245,15 @@ easily available to be placed within another text. If the calling document is a master document (built from other documents), it should be named with the suffix .B \.ssm -Within this document you would provide information on the other documents -that should be included within the text. These may be other documents that -would be processed in a regular way, or markup bits prepared only for inclusion -within a master document +Within this document you would provide information on the other documents that +should be included within the text. These may be other documents that would be +processed in a regular way, or markup bits prepared only for inclusion within a +master document .B \.sst regular markup file, or .B \.ssi -(insert/information) A secondary file of the composite document is built -prior to processing with the same prefix and the suffix +(insert/information) A secondary file of the composite document is built prior +to processing with the same prefix and the suffix .B \._sst .br @@ -2418,8 +2447,7 @@ which numerically increments an asterisk and plus respectively .br .B SiSU -0.38 introduced alternative experimental header and heading/structure -markers, +0.38 introduced alternative experimental header and heading/structure markers, .nf @headername: and headers :A~ :B~ :C~ 1~ 2~ 3~ @@ -2470,9 +2498,9 @@ those levels this is captured by the following file 'rename' instruction: .nf - rename 's/\.s[123]$/\.sst/' *.s{1,2,3} - rename 's/\.r[123]$/\.ssm/' *.r{1,2,3} - rename 's/\.si$/\.ssi/' *.si + rename 's/\e.s[123]$/\e.sst/' *.s{1,2,3} + rename 's/\e.r[123]$/\e.ssm/' *.r{1,2,3} + rename 's/\e.si$/\e.ssi/' *.si .fi .br @@ -2500,8 +2528,8 @@ relied upon .br .B 0.16 (2005w25/2) substantial changes introduced to make markup cleaner, header -0~title type, and headings [1\-6]~ introduced, also percentage sign (%) at start -of a text line as comment marker +0~title type, and headings [1\-6]~ introduced, also percentage sign (%) at +start of a text line as comment marker .br .B SiSU @@ -2531,19 +2559,19 @@ has plaintext and binary filetypes, and can process either type of document. .B SiSU documents are prepared as plain\-text (utf\-8) files with .B SiSU -markup. They may make reference to and contain images (for example), which -are stored in the directory beneath them _sisu/image. +markup. They may make reference to and contain images (for example), which are +stored in the directory beneath them _sisu/image. .B SiSU -plaintext markup files are of three types that may be distinguished by the -file extension used: regular text \.sst; master documents, composite documents -that incorporate other text, which can be any regular text or text insert; and +plaintext markup files are of three types that may be distinguished by the file +extension used: regular text \.sst; master documents, composite documents that +incorporate other text, which can be any regular text or text insert; and inserts the contents of which are like regular text except these are marked \.ssi and are not processed. .br .B SiSU -processing can be done directly against a sisu documents; which may be -located locally or on a remote server for which a url is provided. +processing can be done directly against a sisu documents; which may be located +locally or on a remote server for which a url is provided. .br .B SiSU @@ -2556,8 +2584,8 @@ source markup can be shared with the command: .br The most common form of document in -.B SiSU -, see the section on +.B SiSU, +see the section on .B SiSU markup. @@ -2574,8 +2602,8 @@ Composite documents which incorporate other .B SiSU documents which may be either regular .B SiSU -text \.sst which may be generated independently, or inserts prepared solely -for the purpose of being incorporated into one or more master documents. +text \.sst which may be generated independently, or inserts prepared solely for +the purpose of being incorporated into one or more master documents. .br The mechanism by which master files incorporate other documents is described as @@ -2609,8 +2637,8 @@ into one or more master documents. They resemble regular .B SiSU text files except they are ignored by the .B SiSU -processor. Making a file a \.ssi file is a quick and convenient way of -flagging that it is not intended that the file should be processed on its own. +processor. Making a file a \.ssi file is a quick and convenient way of flagging +that it is not intended that the file should be processed on its own. .SH 12.2 SISUPOD, ZIPPED BINARY CONTAINER (SISUPOD.ZIP, \.SSP) @@ -2624,8 +2652,8 @@ to include sound and multimedia\-files) .br .B SiSU -plaintext files rely on a recognised directory structure to find contents -such as images associated with documents, but all images for example for all +plaintext files rely on a recognised directory structure to find contents such +as images associated with documents, but all images for example for all documents contained in a directory are located in the sub\-directory _sisu/image. Without the ability to create a sisupod it can be inconvenient to manually identify all other files associated with a document. A sisupod @@ -2654,8 +2682,8 @@ Alternatively, make a pod of the contents of a whole directory: .br .B SiSU -processing can be done directly against a sisupod; which may be located -locally or on a remote server for which a url is provided. +processing can be done directly against a sisupod; which may be located locally +or on a remote server for which a url is provided. .br <http://www.sisudoc.org/sisu/sisu_commands> @@ -2797,8 +2825,8 @@ configuration file is a yaml file, which means indentation is significant. .br .B SiSU -resource configuration is determined by looking at the following files if -they exist: +resource configuration is determined by looking at the following files if they +exist: .br ./_sisu/sisurc.yml @@ -2920,8 +2948,8 @@ list) may be found in: .br CSS files to modify the appearance of .B SiSU -html, XHTML or XML may be placed in the configuration directory: \./_sisu/css -; ~/.sisu/css or; /etc/sisu/css and these will be copied to the output +html, XHTML or XML may be placed in the configuration directory: \./_sisu/css; +~/.sisu/css or; /etc/sisu/css and these will be copied to the output directories with the command sisu \-CC. .br @@ -3081,8 +3109,8 @@ has richer text markup. .br In addition to this .B SiSU -has the ability to populate a relational sql type database with documents at -an object level, with objects numbers that are shared across different output +has the ability to populate a relational sql type database with documents at an +object level, with objects numbers that are shared across different output types, which make them searchable with that degree of granularity. Basically, your match criteria is met by these documents and at these locations within each document, which can be viewed within the database directly or in various @@ -3109,8 +3137,8 @@ four tables: subject, (the Dublin Core...); .br - * another the substantive texts by individual "paragraph" (or object) \- along - with structural information, each paragraph being identifiable by its + * another the substantive texts by individual "paragraph" (or object) \- + along with structural information, each paragraph being identifiable by its paragraph number (if it has one which almost all of them do), and the substantive text of each paragraph quite naturally being searchable (both in formatted and clean text versions for searching); and @@ -3130,10 +3158,10 @@ There is of course the possibility to add further structures. .br At this level .B SiSU -loads a relational database with documents chunked into objects, their -smallest logical structurally constituent parts, as text objects, with their -object citation number and all other structural information needed to construct -the document. Text is stored (at this text object level) with and without +loads a relational database with documents chunked into objects, their smallest +logical structurally constituent parts, as text objects, with their object +citation number and all other structural information needed to construct the +document. Text is stored (at this text object level) with and without elementary markup tagging, the stripped version being so as to facilitate ease of searching. @@ -3141,8 +3169,8 @@ of searching. Being able to search a relational database at an object level with the .B SiSU citation system is an effective way of locating content generated by -.B SiSU -. As individual text objects of a document stored (and indexed) together with +.B SiSU. +As individual text objects of a document stored (and indexed) together with object numbers, and all versions of the document have the same numbering, complex searches can be tailored to return just the locations of the search results relevant for all available output formats, with live links to the @@ -3259,7 +3287,8 @@ to populate an sqlite database, this being part of sisu \-d [instruction] [filename/wildcard \ if \ required] .br - sisu \-d \-\-(sqlite|pg) \-\-[instruction] [filename/wildcard \ if \ required] + sisu \-d \-\-(sqlite|pg) \-\-[instruction] [filename/wildcard \ if \ + required] .SH 23.4 COMMANDS @@ -3277,9 +3306,9 @@ may be used interchangeably. .TP .B \-\-sqlite \-\-createall -initial step, creates required relations (tables, indexes) in existing -(sqlite) database (a database should be created manually and given the same -name as working directory, as requested) (rb.dbi) +initial step, creates required relations (tables, indexes) in existing (sqlite) +database (a database should be created manually and given the same name as +working directory, as requested) (rb.dbi) .TP .B sisu \-d \-\-createdb @@ -3484,9 +3513,9 @@ Ralph Amissah <ralph@amissah.com> or <ralph.amissah@gmail.com> .br .B SiSU -processing instructions can be run against remote source documents by -providing the url of the documents against which the processing instructions -are to be carried out. The remote +processing instructions can be run against remote source documents by providing +the url of the documents against which the processing instructions are to be +carried out. The remote .B SiSU documents can either be sisu marked up files in plaintext \.sst or \.ssm or; zipped sisu files, sisupod.zip or filename.ssp @@ -3552,8 +3581,8 @@ machine using either rsync, or scp. .br In order to do this some ssh authentication agent and keychain or similar tool will need to be configured. Once that is done the placement on a remote host -can be done seamlessly with the \-r (for scp) or \-R (for rsync) flag, which may -be used in conjunction with other processing flags, e.g. +can be done seamlessly with the \-r (for scp) or \-R (for rsync) flag, which +may be used in conjunction with other processing flags, e.g. .nf sisu \-3R sisu_remote.sst @@ -3567,8 +3596,8 @@ copies sisu output files to remote host using rsync. This requires that sisurc.yml has been provided with information on hostname and username, and that you have your "keys" and ssh agent in place. Note the behavior of rsync different if \-R is used with other flags from if used alone. Alone the rsync -\-\-delete parameter is sent, useful for cleaning the remote directory (when \-R -is used together with other flags, it is not). Also see \-r +\-\-delete parameter is sent, useful for cleaning the remote directory (when +\-R is used together with other flags, it is not). Also see \-r .TP .B \-r [filename/wildcard] @@ -3715,11 +3744,11 @@ is only dependent on the programming language in which it is written .B Ruby, and .B SiSU -will be able to generate html, EPUB, various XMLs, including ODF (and will -also produce LaTeX). Dependencies required for further actions, though it -relies on the installation of additional dependencies which the source tarball -does not take care of, for things like using a database (postgresql or -sqlite)[^24] or converting LaTeX to pdf. +will be able to generate html, EPUB, various XMLs, including ODF (and will also +produce LaTeX). Dependencies required for further actions, though it relies on +the installation of additional dependencies which the source tarball does not +take care of, for things like using a database (postgresql or sqlite)[^24] or +converting LaTeX to pdf. .br .B setup.rb @@ -3945,9 +3974,8 @@ Additional markup samples are packaged separately in the file: .br On .B Debian -they are available in non\-free[^28] to include them it is necessary to -include non\-free in your /etc/apt/source.list or obtain them from the sisu home -site. +they are available in non\-free[^28] to include them it is necessary to include +non\-free in your /etc/apt/source.list or obtain them from the sisu home site. .SH 30. EDITOR FILES, SYNTAX HIGHLIGHTING .br @@ -3956,10 +3984,10 @@ site. The directory: .br - \./data/sisu/v2/conf/editor\-syntax\-etc/ + ./data/sisu/v2/conf/editor\-syntax\-etc/ .br - \./data/sisu/v3/conf/editor\-syntax\-etc/ + ./data/sisu/v3/conf/editor\-syntax\-etc/ .br /usr/share/sisu/v2/conf/editor\-syntax\-etc @@ -4159,8 +4187,8 @@ ways of representing documents, (or indeed to create new ones). .br .br -* sparse/minimal markup (clean utf\-8 source texts). Documents are prepared in a -single UTF\-8 file using a minimalistic mnemonic syntax. Typical literature, +* sparse/minimal markup (clean utf\-8 source texts). Documents are prepared in +a single UTF\-8 file using a minimalistic mnemonic syntax. Typical literature, documents like "War and Peace" require almost no markup, and most of the headers are optional. @@ -4177,11 +4205,11 @@ semantic information related to the document (header information, extended beyond the Dublin core and easily further extended as required); the headers may also contain processing instructions. .B SiSU -markup is primarily an abstraction of document structure and document -metadata to permit taking advantage of the basic strengths of existing -alternative practical standard ways of representing documents [be \ that \ -browser \ viewing, \ paper \ publication, \ sql \ search \ etc.] (html, epub, -xml, odf, latex, pdf, sql) +markup is primarily an abstraction of document structure and document metadata +to permit taking advantage of the basic strengths of existing alternative +practical standard ways of representing documents [be \ that \ browser \ +viewing, \ paper \ publication, \ sql \ search \ etc.] (html, epub, xml, odf, +latex, pdf, sql) .br * for output produces reasonably elegant output of established industry and @@ -4212,8 +4240,8 @@ amongst the output formats currently supported are: * pdf (via LaTeX) .br - * sql \- population of an sql database, (at the same object level that is used - to cite text within a document) + * sql \- population of an sql database, (at the same object level that is + used to cite text within a document) .br Also produces: concordance files; document content certificates (md5 or sha256 @@ -4277,8 +4305,8 @@ may be processed locally to produce the desired document outputs .br * for basic document generation, the only software dependency is -.B Ruby -, and a few standard Unix tools (this covers plaintext, HTML, EPUB, XML, ODF, +.B Ruby, +and a few standard Unix tools (this covers plaintext, HTML, EPUB, XML, ODF, LaTeX). To use a database you of course need that, and to convert the LaTeX generated to pdf, a latex processor like tetex or texlive. @@ -4292,8 +4320,8 @@ markup is available for a number of text editors. .br .B SiSU -is less about document layout than about finding a way with little markup to -be able to construct an abstract representation of a document that makes it +is less about document layout than about finding a way with little markup to be +able to construct an abstract representation of a document that makes it possible to produce multiple representations of it which may be rather different from each other and used for different purposes, whether layout and publishing, or search of content @@ -4381,8 +4409,8 @@ Note .B SiSU documentation is prepared in .B SiSU -and output is available in multiple formats including amongst others html, -pdf, odf and epub, which may be also be accessed via the html pages[^29] +and output is available in multiple formats including amongst others html, pdf, +odf and epub, which may be also be accessed via the html pages[^29] .SH 33.2.1 WWW.SISUDOC.ORG @@ -4437,111 +4465,174 @@ file:///usr/share/doc/sisu/html/sisu.1.html .br <http://www.jus.uio.no/sisu/man/sisu_webrick.1.html> -1. objects include: headings, paragraphs, verse, tables, images, but not +.TP +.BI 1. +objects include: headings, paragraphs, verse, tables, images, but not footnotes/endnotes which are numbered separately and tied to the object from which they are referenced. .br -2. i.e. the html, pdf, epub, odf outputs are each built individually and +.TP +.BI 2. +i.e. the html, pdf, epub, odf outputs are each built individually and optimised for that form of presentation, rather than for example the html being a saved version of the odf, or the pdf being a saved version of the html. .br -3. the different heading levels +.TP +.BI 3. +the different heading levels .br -4. units of text, primarily paragraphs and headings, also any tables, poems, -code\-blocks +.TP +.BI 4. +units of text, primarily paragraphs and headings, also any tables, poems, +code-blocks .br -5. Specification submitted by Adobe to ISO to become a full open ISO +.TP +.BI 5. +Specification submitted by Adobe to ISO to become a full open ISO specification -<http://www.linux\-watch.com/news/NS7542722606.html> .br -6. ISO standard ISO/IEC 26300:2006 +<http://www.linux-watch.com/news/NS7542722606.html> .br -7. An open standard format for e\-books +.TP +.BI 6. +ISO standard ISO/IEC 26300:2006 .br -*1. square brackets +.TP +.BI 7. +An open standard format for e-books .br -*2. square brackets +.TP +.BI *1. +square brackets .br -+1. square brackets +.TP +.BI *2. +square brackets .br -8. <http://www.jus.uio.no/sisu/man/> +.TP +.BI +1. +square brackets .br -9. <http://www.jus.uio.no/sisu/man/sisu.1.html> +.TP +.BI 8. +<http://www.jus.uio.no/sisu/man/> .br -10. From sometime after SiSU 0.58 it should be possible to describe SiSU -markup using SiSU, which though not an original design goal is useful. +.TP +.BI 9. +<http://www.jus.uio.no/sisu/man/sisu.1.html> .br -11. files should be prepared using UTF\-8 character encoding +.TP +.BI 10. +From sometime after SiSU 0.58 it should be possible to describe SiSU markup +using SiSU, which though not an original design goal is useful. .br -12. a footnote or endnote +.TP +.BI 11. +files should be prepared using UTF-8 character encoding .br -13. self contained endnote marker & endnote in one +.TP +.BI 12. +a footnote or endnote + +.br +.TP +.BI 13. +self contained endnote marker & endnote in one .br -* unnumbered asterisk footnote/endnote, insert multiple asterisks if -required +.TP +.BI *. +unnumbered asterisk footnote/endnote, insert multiple asterisks if required + +.br +.TP +.BI **. +another unnumbered asterisk footnote/endnote .br -** another unnumbered asterisk footnote/endnote +.TP +.BI *3. +editors notes, numbered asterisk footnote/endnote series .br -*3. editors notes, numbered asterisk footnote/endnote series +.TP +.BI +2. +editors notes, numbered asterisk footnote/endnote series .br -+2. editors notes, numbered asterisk footnote/endnote series +.TP +.BI 14. +<http://www.sisudoc.org/> .br -14 <http://www.sisudoc.org/> +.TP +.BI 15. +<http://www.ruby-lang.org/en/> .br -15. <http://www.ruby\-lang.org/en/> +.TP +.BI 16. +Table from the Wealth of Networks by Yochai Benkler .br -16. Table from the Wealth of Networks by Yochai Benkler <http://www.jus.uio.no/sisu/the_wealth_of_networks.yochai_benkler> .br -17. .ssc (for composite) is under consideration but ._sst makes clear that -this is not a regular file to be worked on, and thus less likely that people -will have \"accidents\", working on a .ssc file that is overwritten by -subsequent processing. It may be however that when the resulting file is shared -.ssc is an appropriate suffix to use. +.TP +.BI 17. +\.ssc (for composite) is under consideration but \._sst makes clear that this +is not a regular file to be worked on, and thus less likely that people will +have "accidents", working on a \.ssc file that is overwritten by subsequent +processing. It may be however that when the resulting file is shared \.ssc is an +appropriate suffix to use. .br -19. <http://www.postgresql.org/> +.TP +.BI 19. +<http://www.postgresql.org/> + .br <http://advocacy.postgresql.org/> .br <http://en.wikipedia.org/wiki/Postgresql> .br -20. <http://www.hwaci.com/sw/sqlite/> +.TP +.BI 20. +<http://www.hwaci.com/sw/sqlite/> + .br <http://en.wikipedia.org/wiki/Sqlite> .br -21. <http://search.sisudoc.org> +.TP +.BI 21. +<http://search.sisudoc.org> .br -22. (which could be extended further with current back\-end). As regards -scaling of the database, it is as scalable as the database (here Postgresql) -and hardware allow. +.TP +.BI 22. +(which could be extended further with current back-end). As regards scaling +of the database, it is as scalable as the database (here Postgresql) and +hardware allow. .br -23. of this feature when demonstrated to an IBM software innovations evaluator +.TP +.BI 23. +of this feature when demonstrated to an IBM software innovations evaluator in 2004 he said to paraphrase: this could be of interest to us. We have large document management systems, you can search hundreds of thousands of documents and we can tell you which documents meet your search criteria, but there is no @@ -4549,16 +4640,24 @@ way we can tell you without opening each document where within each your matches are found. .br -24. There is nothing to stop MySQL support being added in future. +.TP +.BI 24. +There is nothing to stop MySQL support being added in future. .br -25. <http://www.jus.uio.no/sisu/man/sisu.1.html> +.TP +.BI 25. +<http://www.jus.uio.no/sisu/man/sisu.1.html> .br -26. <http://www.jus.uio.no/sisu/man/sisu.8.html> +.TP +.BI 26. +<http://www.jus.uio.no/sisu/man/sisu.8.html> .br -27. <http://www.jus.uio.no/sisu/man> +.TP +.BI 27. +<http://www.jus.uio.no/sisu/man> .br 28. the |