diff options
author | Karl Berry <karl@freefriends.org> | 2010-01-28 01:16:34 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-01-28 01:16:34 +0000 |
commit | 86de9599eba062dde26d84887ba0d6c13e4bf6da (patch) | |
tree | f2517fa535448b3e970e305985f999b176e213c5 | |
parent | db2715bbed9637c68e7761c488a68b2112c372f4 (diff) |
new context package context-ruby (26jan10)
git-svn-id: svn://tug.org/texlive/trunk@16847 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/context/third/ruby/README | 43 | ||||
-rw-r--r-- | Master/texmf-dist/tex/context/third/ruby/t-ruby.tex | 323 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 2 | ||||
-rwxr-xr-x | Master/tlpkg/libexec/ctan2tds | 5 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-context.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/context-ruby.tlpsrc | 1 |
6 files changed, 372 insertions, 3 deletions
diff --git a/Master/texmf-dist/doc/context/third/ruby/README b/Master/texmf-dist/doc/context/third/ruby/README new file mode 100644 index 00000000000..6e6fcd4ad6b --- /dev/null +++ b/Master/texmf-dist/doc/context/third/ruby/README @@ -0,0 +1,43 @@ +Modulename : t-ruby +Author : Wolfgang Schuster +License : Public Domain + + +Description +----------- + +The 'ruby' module allows users to write ruby annotations in ConTeXt. + + +Usage +----- + +The module is loaded with the command: + + \usemodule[ruby] + +Ruby text can be set with the command: + + \ruby{base text}{ruy text} + +The layout of the base and ruby text could be changed with: + + \setupruby + [basestyle=..., + basecolor=..., + textstyle=..., + textcolor=...] + +Whether ruby text overlaps with the surrounding text or not can be configured with: + + \setupruby + [overhang=auto|start|end|none] % default: yes + +The last option is the distance between the ruby and the base text: + + \setupruby + [inbetween=...] % default: \blank[small] + +All of these parameters can also be changed for a single ruby command: + + \ruby[..,..=..,..]{...}{...} diff --git a/Master/texmf-dist/tex/context/third/ruby/t-ruby.tex b/Master/texmf-dist/tex/context/third/ruby/t-ruby.tex new file mode 100644 index 00000000000..99321922d9b --- /dev/null +++ b/Master/texmf-dist/tex/context/third/ruby/t-ruby.tex @@ -0,0 +1,323 @@ +%D \module +%D [ file=t-ruby, +%D version=2010.01.26, +%D title=\CONTEXT\ User Module, +%D subtitle=Ruby Markup, +%D author=Wolfgang Schuster, +%D date=\currentdate, +%D copyright=Wolfgang Schuster, +%D email=schuster.wolfgang@googlemail.com, +%D license=Public Domain] + +\writestatus{loading}{ConTeXt User Module / Ruby Markup} + +\unprotect + +%D simple ruby: +%D +%D \starttyping +%D <ruby> +%D <rb>WWW</rb> +%D <rt>World Wide Web</rt> +%D </ruby> +%D \stoptyping +%D +%D complex ruby: +%D +%D \starttyping +%D <ruby> +%D <rbc> +%D <rb>10</rb> +%D <rb>31</rb> +%D <rb>2002</rb> +%D </rbc> +%D <rtc> +%D <rt>Month</rt> +%D <rt>Day</rt> +%D <rt>Year</rt> +%D </rtc> +%D <rtc> +%D <rt rbspan="3">Expiration Date</rt> +%D </rtc> +%D </ruby> +%D \stoptyping + +%D Constants + +\startinterface all + \setinterfaceconstant {basestyle} {basestyle} + \setinterfaceconstant {basecolor} {basecolor} + \setinterfaceconstant {overhang} {overhang} +\stopinterface + +\startinterface all + \setinterfacevariable {letter} {letter} + \setinterfacevariable {end} {end} + \setinterfacevariable {inline} {inline} +\stopinterface + +%D Namespace + +\def\????rb{@@@@rb} + +%D Additional registers + +\newdimen \!!rubywidth +\newdimen \!!rubyleftmargin +\newdimen \!!rubyrightmargin +\newsignal\!!rubysignal +\newcount \!!rubycount +\newtoks \!!rubybase +\newtoks \!!rubytext + +%D Helpers + +\newif\ifideograph + +\long\def\doifelseideograph#1% + {\global\ideographtrue + \handletokens#1\with\checkideograph + \ifideograph + \expandafter\firstoftwoarguments + \else + \expandafter\secondoftwoarguments + \fi} + +\def\doifinrangeelse#1#2#3% + {\unless\ifnum#1<#2 + \unless\ifnum#1>#3 + \expandafter\expandafter\expandafter\firstoftwoarguments + \else + \expandafter\expandafter\expandafter\secondoftwoarguments + \fi + \else + \expandafter\secondoftwoarguments + \fi} + +\def\checkideograph#1% + {\doifinrangeelse{`#1}{"3040}{"309F}\donothing + {\doifinrangeelse{`#1}{"30A0}{"30FF}\donothing + {\doifinrangeelse{`#1}{"31F0}{"31FF}\donothing + {\doifinrangeelse{`#1}{"3400}{"4DFF}\donothing + {\doifinrangeelse{`#1}{"4E00}{"9FFF}\donothing + {\doifinrangeelse{`#1}{"AC00}{"D7A3}\donothing + {\doifinrangeelse{`#1}{"F900}{"FAFF}\donothing + {\doifinrangeelse{`#1}{"FF00}{"FFEF}\donothing + {\doifinrangeelse{`#1}{"20000}{"2A6DF}\donothing + {\doifinrangeelse{`#1}{"2F800}{"2FA1F}\donothing + {\ideographfalse}}}}}}}}}}} + +%D \macros +%D {setupruby} + +\def\setupruby + {\dodoubleargument\getparameters[\????rb]} + +\def\rubyparameter#1{\csname\????rb#1\endcsname} + +%D \macros +%D {pdfactualtext} + +\ifx\pdfactualtext\undefined \let\pdfactualtext\secondoftwoarguments \fi + +%D \macros +%D {bRUBY,eRUBY,bRB,eRB,bRT,eRT} + +\def\bRUBY + {\dosingleempty\dobRUBY} + +\def\dobRUBY[#1]% + {\begingroup + \iffirstargument + \setupruby[#1]% + \fi + \scratchdimen\lastskip + \ifdim\scratchdimen=\!!rubysignal\else\global\!!rubywidth\!!zeropoint\fi + \global\advance\!!rubycount\plusone + \xypos{rubyposition:\number\!!rubycount}% + \doifmodeelse\v!first + {\edef\rubyposition{\the\onepoint}}% + {\edef\rubyposition{\the\dimexpr\MPx{rubyposition:\number\!!rubycount}-\MPx{text:\the\realpageno}\relax}}} + +\def\eRUBY + {\setbox\scratchboxone\hbox{\redoconvertfont\doattributes\????rb\c!basestyle\c!basecolor{\the\!!rubybase}}% + \setbox\scratchboxtwo\hbox{\redoconvertfont\doattributes\????rb\c!textstyle\c!textcolor{\the\!!rubytext}}% + \scratchdimenone\wd\scratchboxone + \scratchdimentwo\wd\scratchboxtwo + %\scratchdimenthree\ifdim\scratchdimenone<\scratchdimentwo\space\scratchdimenone\else\scratchdimentwo\fi + \scratchdimenthree\scratchdimenone + \executeifdefined{\????rb:\c!align :\rubyparameter\c!align }{\getvalue{\????rb:\c!align :\v!auto }}% + \executeifdefined{\????rb:\c!position:\rubyparameter\c!position}{\getvalue{\????rb:\c!position:\v!before}}% + \executeifdefined{\????rb:\c!overhang:\rubyparameter\c!overhang}{\getvalue{\????rb:\c!overhang:\v!auto }}% + \hskip\!!rubysignal\relax + \endgroup} + +\def\bRB{\dodoubleempty\dobRB} +\def\bRT{\dodoubleempty\dobRT} + +\def\dobRB[#1][#2]#3\eRB{\!!rubybase{#3}} +\def\dobRT[#1][#2]#3\eRT{\!!rubytext{#3}} + +\def\placerubystrut{\doif{\rubyparameter\c!strut}\v!yes{\setstrut\strut}} + +%D Alignment + +\def\RUBYdistributespace #1{\doifelseideograph{#1}{\processtokens{\hss }{\hss\hss}{\hss }{\hss\hss}{#1}}{\hss#1\hss}} +\def\RUBYdistributeletter#1{\doifelseideograph{#1}{\processtokens{\relax}{\hss }{\relax}{\hss\hss}{#1}}{\hss#1\hss}} + +\setvalue{\????rb:\c!align:\v!space}% + {\!!rubyleftmargin \zeropoint + \!!rubyrightmargin\zeropoint + \ifdim\scratchdimenone>\scratchdimentwo + \setbox\scratchboxone\hbox to \scratchdimenone{\hss\box\scratchboxone\hss}% + \setbox\scratchboxtwo\hbox to \scratchdimenone{\redoconvertfont\doattributes\????rb\c!textstyle\c!textcolor{\@EA\RUBYdistributespace\@EA{\the\!!rubytext}}}% + \else + \setbox\scratchboxone\hbox to \scratchdimentwo{\redoconvertfont\doattributes\????rb\c!basestyle\c!basecolor{\@EA\RUBYdistributespace\@EA{\the\!!rubybase}}}% + \setbox\scratchboxtwo\hbox to \scratchdimentwo{\hss\box\scratchboxtwo\hss}% + \fi} + +\setvalue{\????rb:\c!align:\v!letter}% + {\!!rubyleftmargin \zeropoint + \!!rubyrightmargin\zeropoint + \ifdim\scratchdimenone>\scratchdimentwo + \setbox\scratchboxone\hbox to \scratchdimenone{\hss\box\scratchboxone\hss}% + \setbox\scratchboxtwo\hbox to \scratchdimenone{\redoconvertfont\doattributes\????rb\c!textstyle\c!textcolor{\@EA\RUBYdistributeletter\@EA{\the\!!rubytext}}}% + \else + \setbox\scratchboxone\hbox to \scratchdimentwo{\redoconvertfont\doattributes\????rb\c!basestyle\c!basecolor{\@EA\RUBYdistributeletter\@EA{\the\!!rubybase}}}% + \setbox\scratchboxtwo\hbox to \scratchdimentwo{\hss\box\scratchboxtwo\hss}% + \fi} + +\setvalue{\????rb:\c!align:\v!auto}% I need special alignments for the begin/end of the line!!! + {\ifdim\scratchdimenone>\scratchdimentwo + \getvalue{\????rb:\c!align:\v!space}% + \else + \ifdim\rubyposition=\!!zeropoint % begin of the line + \getvalue{\????rb:\c!align:\v!left}% + \else\ifdim\rubyposition=\the\dimexpr\textwidth-\scratchdimenthree\relax % end of the line + \getvalue{\????rb:\c!align:\v!right}% + \else + \getvalue{\????rb:\c!align:\v!space}% + \fi\fi + \fi} + +\setvalue{\????rb:\c!align:\v!left}% + {\ifdim\scratchdimenone>\scratchdimentwo + \!!rubyleftmargin \zeropoint + \!!rubyrightmargin\zeropoint + \else + \!!rubyleftmargin \zeropoint + \!!rubyrightmargin\dimexpr\scratchdimentwo-\scratchdimenone\relax + \fi + \setbox\scratchboxone\hbox to \scratchdimenthree{\box\scratchboxone\hss}% + \setbox\scratchboxtwo\hbox to \scratchdimenthree{\box\scratchboxtwo\hss}} + +\setvalue{\????rb:\c!align:\v!start}% + {\getvalue{\????rb:\c!align:\v!left}} + +\setvalue{\????rb:\c!align:\v!center}% + {\ifdim\scratchdimenone>\scratchdimentwo + \!!rubyleftmargin \zeropoint + \!!rubyrightmargin\zeropoint + \else + \!!rubyleftmargin \dimexpr(\scratchdimentwo-\scratchdimenone)/2\relax + \!!rubyrightmargin\dimexpr(\scratchdimentwo-\scratchdimenone)/2\relax + \fi + \setbox\scratchboxone\hbox to \scratchdimenthree{\hss\box\scratchboxone\hss}% + \setbox\scratchboxtwo\hbox to \scratchdimenthree{\hss\box\scratchboxtwo\hss}} + +\setvalue{\????rb:\c!align:\v!right}% + {\ifdim\scratchdimenone>\scratchdimentwo + \!!rubyleftmargin \zeropoint + \!!rubyrightmargin\zeropoint + \else + \!!rubyleftmargin \dimexpr\scratchdimentwo-\scratchdimenone\relax + \!!rubyrightmargin\zeropoint + \fi + \setbox\scratchboxone\hbox to \scratchdimenthree{\hss\box\scratchboxone}% + \setbox\scratchboxtwo\hbox to \scratchdimenthree{\hss\box\scratchboxtwo}} + +\setvalue{\????rb:\c!align:\v!end}% + {\getvalue{\v!ruby:\c!align:\v!right}} + +\setvalue{\????rb:\c!align:\v!edge}% modify to take care of overlap etc. + {\ifdim\rubyposition=\zeropoint + \getvalue{\????rb:\c!align:\v!left}% + \else\ifdim\rubyposition=\the\dimexpr\textwidth-\scratchdimenthree\relax + \getvalue{\????rb:\c!align:\v!right}% + \else + \getvalue{\????rb:\c!align:\v!center}% + \fi\fi} + +%D Positioning + +\setvalue{\????rb:\c!position:\v!before}% + {\setbox\scratchboxthree\vbox + {\offinterlineskip + \hbox{\undepthed{\placerubystrut\box\scratchboxtwo}} + \rubyparameter\c!inbetween + \hbox{\placerubystrut\box\scratchboxone}}} + +\setvalue{\????rb:\c!position:\v!after}% + {\setbox\scratchboxthree\vtop + {\offinterlineskip + \hbox{\undepthed{\placerubystrut\box\scratchboxone}} + \rubyparameter\c!inbetween + \hbox{\placerubystrut\box\scratchboxtwo}}} + +\setvalue{\????rb:\c!position:\v!inline}% pure text to allow line breaks in the text + {\setbox\scratchboxthree\box\voidbox + \!!rubyleftmargin \zeropoint + \!!rubyrightmargin\zeropoint + \the\!!rubybase + \rubyparameter\c!separator + \rubyparameter\c!lefttext\the\!!rubytext\rubyparameter\c!righttext} + +%D Overhang + +\setvalue{\????rb:\c!overhang:\v!auto}% + {\ifdim\!!rubywidth>\!!zeropoint + \kern\dimexpr\!!rubyleftmargin+\!!rubywidth\relax + \fi + \box\scratchboxthree + \global\!!rubywidth\!!rubyrightmargin} + +\setvalue{\????rb:\c!overhang:\v!start}% + {\box\scratchboxthree\kern\!!rubyrightmargin + \global\!!rubywidth\!!rubyrightmargin} + +\setvalue{\????rb:\c!overhang:\v!end}% + {\ifdim\!!rubywidth>\!!zeropoint + \kern\dimexpr\!!rubyleftmargin+\!!rubywidth\relax + \else + \kern\!!rubyleftmargin + \fi + \box\scratchboxthree + \global\!!rubywidth\!!zeropoint} + +\setvalue{\????rb:\c!overhang:\v!none}% + {\kern\!!rubyleftmargin\box\scratchboxthree\kern\!!rubyrightmargin + \global\!!rubywidth\!!zeropoint} + +%D \macros +%D {ruby} + +\def\ruby + {\dosingleempty\doruby} + +\def\doruby[#1]#2#3% + {\dobRUBY[#1]\bRB#2\eRB\bRT#3\eRT\eRUBY} + +%D Default values + +\setupruby + [\c!position=\v!before, % before|after|inline + \c!align=\v!auto, % auto|start|left|center|end|right|distribute-letter|distribute-space|line-edge + \c!overhang=\v!auto, % auto|start|end|none + \c!separator={ }, + \c!lefttext=(, + \c!righttext=), + \c!strut=\v!no, + \c!inbetween={\blank[\v!small]}, + \c!textstyle=\txx] + +\protect \endinput diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 904d1744552..792d35e8bcf 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -66,7 +66,7 @@ my @WorkingTLP = qw( context-construction-plan context-degrade context-fixme context-french context-games context-gnuplot context-letter context-lettrine context-lilypond context-mathsets - context-notes-zh-cn + context-notes-zh-cn context-ruby context-simplefonts context-simpleslides context-top-ten context-typearea context-typescripts context-vim diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 311a5ff062f..49078328a06 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -168,12 +168,13 @@ $Master = "$mydir/../.."; 'context-lettrine', "&MAKEcopy", 'context-lilypond', "&MAKEcopy", 'context-mathsets', "&MAKEcopy", + 'context-ruby', "&MAKEcopy", 'context-simplefonts', "&MAKEcopy", 'context-simpleslides', "&MAKEcopy", - 'context-taspresent',"&MAKEcopy", + 'context-taspresent', "&MAKEcopy", 'context-typearea', "&MAKEcopy", 'context-typescripts', "&MAKEcopy", - 'context-vim', "&MAKEcopy", + 'context-vim', "&MAKEcopy", 'coptic', "die 'skipping, replaced by cbcoptic'", 'corridx', "die 'skipping, Pascal source'", 'count1to', "die 'skipping, use ms'", diff --git a/Master/tlpkg/tlpsrc/collection-context.tlpsrc b/Master/tlpkg/tlpsrc/collection-context.tlpsrc index 214fa96faf0..0a622acbdb9 100644 --- a/Master/tlpkg/tlpsrc/collection-context.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-context.tlpsrc @@ -20,6 +20,7 @@ depend context-lettrine depend context-lilypond depend context-mathsets depend context-notes-zh-cn +depend context-ruby depend context-simplefonts depend context-simpleslides depend context-top-ten diff --git a/Master/tlpkg/tlpsrc/context-ruby.tlpsrc b/Master/tlpkg/tlpsrc/context-ruby.tlpsrc new file mode 100644 index 00000000000..8e194d47208 --- /dev/null +++ b/Master/tlpkg/tlpsrc/context-ruby.tlpsrc @@ -0,0 +1 @@ +category ConTeXt |