diff options
author | Karl Berry <karl@freefriends.org> | 2022-04-04 20:54:49 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-04-04 20:54:49 +0000 |
commit | 656055251bead88e4d7e7d685722255033367f49 (patch) | |
tree | 6c5f28eb221ee4213fc5ef8b6211eb464f5992a2 /Master/texmf-dist/source/latex | |
parent | 4ca1cb3da46997c41eff1ae88aad0d090f717b3c (diff) |
jxu (4apr22)
git-svn-id: svn://tug.org/texlive/trunk@62900 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r-- | Master/texmf-dist/source/latex/projlib/ProjLib.dtx | 305 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/projlib/ProjLib.ins | 2 |
2 files changed, 237 insertions, 70 deletions
diff --git a/Master/texmf-dist/source/latex/projlib/ProjLib.dtx b/Master/texmf-dist/source/latex/projlib/ProjLib.dtx index 32903be29bf..03de30a0d0b 100644 --- a/Master/texmf-dist/source/latex/projlib/ProjLib.dtx +++ b/Master/texmf-dist/source/latex/projlib/ProjLib.dtx @@ -20,72 +20,79 @@ %<*ProjLib> \ProvidesExplPackage {ProjLib} - {2022/03/21} {} + {2022/04/03} {} {Collective interface of the ProjLib toolkit} %</ProjLib> % %<*projlib-author> \ProvidesExplPackage {projlib-author} - {2022/03/21} {} + {2022/04/03} {} {Enhanced author information block} %</projlib-author> % %<*projlib-datetime> \ProvidesExplPackage {projlib-datetime} - {2022/03/21} {} + {2022/04/03} {} {Convert numeric date-time string to natural language} %</projlib-datetime> % %<*projlib-draft> \ProvidesExplPackage {projlib-draft} - {2022/03/21} {} + {2022/04/03} {} {Useful commands during draft stage} %</projlib-draft> % %<*projlib-font> \ProvidesExplPackage {projlib-font} - {2022/03/21} {} + {2022/04/03} {} {Font selection and configuration} %</projlib-font> % %<*projlib-language> \ProvidesExplPackage {projlib-language} - {2022/03/21} {} + {2022/04/03} {} {Multi-language configuration} %</projlib-language> % %<*projlib-logo> \ProvidesExplPackage {projlib-logo} - {2022/03/21} {} + {2022/04/03} {} {The ProjLib logo} %</projlib-logo> % %<*projlib-math> \ProvidesExplPackage {projlib-math} - {2022/03/21} {} + {2022/04/03} {} {Efficient math setup} %</projlib-math> % %<*projlib-paper> \ProvidesExplPackage {projlib-paper} - {2022/03/21} {} + {2022/04/03} {} {Configuration of the paper style} %</projlib-paper> % %<*projlib-theorem> \ProvidesExplPackage {projlib-theorem} - {2022/03/21} {} + {2022/04/03} {} {Configuration of theorem-like environments} %</projlib-theorem> +% +%<*projlib-titlepage> +\ProvidesExplPackage + {projlib-titlepage} + {2022/04/03} {} + {Commands for rendering the title page} +%</projlib-titlepage> %<*ProjLib> \keys_define:nn { ProjLib } @@ -99,6 +106,10 @@ , ams-fashion .initial:n = { false } , ams~fashion .bool_set:N = \l__projlib_main_amsfashion_bool , ams fashion .bool_set:N = \l__projlib_main_amsfashion_bool + , title-page .bool_set:N = \l__projlib_main_titlepage_bool + , title-page .initial:n = { false } + , title~page .bool_set:N = \l__projlib_main_titlepage_bool + , title page .bool_set:N = \l__projlib_main_titlepage_bool , unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { projlib-language } \PassOptionsToPackage { \CurrentOption } { projlib-author } @@ -132,6 +143,11 @@ \RequirePackage { projlib-math } \RequirePackage { projlib-paper } +\bool_if:NT \l__projlib_main_titlepage_bool + { + \RequirePackage { projlib-titlepage } + } + \RequirePackage { projlib-theorem } %</ProjLib> % @@ -483,10 +499,20 @@ , month-year .code:n = { \tl_set:Nn \g__projlib_datetime_input_format_tl { day-month-year } } , day-month .code:n = { \tl_set:Nn \g__projlib_datetime_input_format_tl { day-month-year } } , only-year-month .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-year-month } } - , only-month-day .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month-day } } - , only-year .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-year } } - , only-month .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month } } - , only-day .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-day } } + , only~year~month .meta:n = { only-year-month } + , only year month .meta:n = { only-year-month } + , only-month-day .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month-day } } + , only~month~day .meta:n = { only-month-day } + , only month day .meta:n = { only-month-day } + , only-year .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-year } } + , only~year .meta:n = { only-year } + , only year .meta:n = { only-year } + , only-month .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month } } + , only~month .meta:n = { only-month } + , only month .meta:n = { only-month } + , only-day .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-day } } + , only~day .meta:n = { only-day } + , only day .meta:n = { only-day } , unknown .code:n = {} } @@ -2160,72 +2186,73 @@ } -\projlib_langauge_define_multilingual_text:Nn \projlib_draft_dnf_text +\projlib_langauge_define_multilingual_text:Nn \projlib_draft_DNF_text { - EN = To\ be\ finished , - FR = Pas\ encore\ fini , - DE = Nicht\ beendet , - IT = Per\ essere\ finito , - PT = Não\ terminou , - BR = Não\ terminou , - ES = Estar\ terminado , - CN = 这里尚未完成 , - TC = 這裡尚未完成 , - JP = 終わってない , - RU = Не\ закончен , + EN = To ~ be ~ finished , + FR = Pas ~ encore ~ fini , + DE = Nicht ~ beendet , + IT = Per ~ essere ~ finito , + PT = Não ~ terminou , + BR = Não ~ terminou , + ES = Estar ~ terminado , + CN = 这里尚未完成 , + TC = 這裡尚未完成 , + JP = 終わってない , + RU = Не ~ закончен , } -\projlib_langauge_define_multilingual_text:Nn \projlib_draft_dnf_report_text +\projlib_langauge_define_multilingual_text:Nn \projlib_draft_DNF_report_text { - EN = { Below\ is\ a\ list\ of\ outstanding\ items, - \ followed\ by\ the\ corresponding\ page\ numbers. } , - FR = { Voici\ la\ liste\ des\ éléments\ en\ suspens, - \ suivie\ des\ numéros\ de\ page\ correspondants. } , - DE = { Unten\ ist\ eine\ Liste\ der\ ausstehenden\ Posten, - \ gefolgt\ von\ den\ entsprechenden\ Seitenzahlen. } , - IT = { Qui\ sotto\ c'è\ una\ lista\ di\ voci\ in\ sospeso, - \ seguita\ dai\ numeri\ di\ pagina\ corrispondenti. } , - PT = { Abaixo\ está\ uma\ lista\ de\ itens\ pendentes, - \ seguida\ dos\ números\ de\ página\ correspondentes. } , - BR = { Abaixo\ está\ uma\ lista\ de\ itens\ pendentes, - \ seguida\ dos\ números\ de\ página\ correspondentes. } , - ES = { Aquí está\ la\ lista\ de\ elementos\ pendientes, - \ seguida\ de\ los\ números\ de\ página\ correspondientes. } , - CN = { 以下是未完成事项列表,括号内注明了对应的页码。 } , - TC = { 以下是未完成事項的列表,括號內註明了對應頁碼。 } , - JP = { 以下は、未解決の項目とそれに対応するページ番号の一覧です。 } , - RU = { Ниже\ приведен\ список\ невыполненных\ пунктов - \ с\ соответствующими\ номерами\ страниц\ в\ скобках. } , + EN = { Below ~ is ~ a ~ list ~ of ~ outstanding ~ items, ~ + followed ~ by ~ the ~ corresponding ~ page ~ numbers. } , + FR = { Voici ~ la ~ liste ~ des ~ éléments ~ en ~ suspens, ~ + suivie ~ des ~ numéros ~ de ~ page ~ correspondants. } , + DE = { Unten ~ ist ~ eine ~ Liste ~ der ~ ausstehenden ~ Posten, ~ + gefolgt ~ von ~ den ~ entsprechenden ~ Seitenzahlen. } , + IT = { Qui ~ sotto ~ c'è ~ una ~ lista ~ di ~ voci ~ in ~ sospeso, ~ + seguita ~ dai ~ numeri ~ di ~ pagina ~ corrispondenti. } , + PT = { Abaixo ~ está ~ uma ~ lista ~ de ~ itens ~ pendentes, ~ + seguida ~ dos ~ números ~ de ~ página ~ correspondentes. } , + BR = { Abaixo ~ está ~ uma ~ lista ~ de ~ itens ~ pendentes, ~ + seguida ~ dos ~ números ~ de ~ página ~ correspondentes. } , + ES = { Aquí está ~ la ~ lista ~ de ~ elementos ~ pendientes, ~ + seguida ~ de ~ los ~ números ~ de ~ página ~ correspondientes. } , + CN = { 以下是未完成事项列表,括号内注明了对应的页码。 } , + TC = { 以下是未完成事項的列表,括號內註明了對應頁碼。 } , + JP = { 以下は、未解決の項目とそれに対応するページ番号の一覧です。 } , + RU = { Ниже ~ приведен ~ список ~ невыполненных ~ пунктов ~ + с ~ соответствующими ~ номерами ~ страниц ~ в ~ скобках. } , } -\tl_new:c { projlib_draft_dnf_font } -\tl_gset:cn { projlib_draft_dnf_font } { \normalfont \ttfamily \bfseries \small } +\tl_new:c { projlib_draft_DNF_font } +\tl_gset:cn { projlib_draft_DNF_font } { \small \normalfont \bfseries \ttfamily \hyphenchar\font=`\-\spaceskip=.5em ~ plus ~ .5em\xspaceskip=.5em } -\definecolor { projlib_draft_dnf_color } { RGB } { 21, 122, 20 } +\definecolor { projlib_draft_DNF_color } { RGB } { 21, 122, 20 } -\newcounter { projlib_draft_dnf_counter } +\newcounter { projlib_draft_DNF_counter } -\tl_new:N \g__projlib_draft_dnf_report_tl +\tl_new:N \g__projlib_draft_DNF_report_tl -\NewDocumentCommand \dnf { D<>{} } +\NewDocumentCommand \DNF { D<>{} } { \noindent \group_begin: - \projlib_draft_dnf_font - \stepcounter { projlib_draft_dnf_counter } - \projlib_draft_plain_box:nn { projlib_draft_dnf_color } + \projlib_draft_DNF_font + \stepcounter { projlib_draft_DNF_counter } + \projlib_draft_plain_box:nn { projlib_draft_DNF_color } { - \projlib_draft_dnf_text + \projlib_draft_DNF_text \nobreakspace - \# \theprojlib_draft_dnf_counter + \# \theprojlib_draft_DNF_counter \tl_if_blank:nF { #1 } { \, : ~ } - #1 + \tl_trim_spaces:n { #1 } } \group_end: - \tl_gput_right:Nx \g__projlib_draft_dnf_report_tl + \tl_gput_right:Nx \g__projlib_draft_DNF_report_tl { + \noindent \# \, - \int_value:w \theprojlib_draft_dnf_counter + \int_value:w \theprojlib_draft_DNF_counter \c_space_tl \c_space_tl $\langle$ \skip_horizontal:n { 0.1em } @@ -2239,8 +2266,10 @@ \skip_horizontal:n { 0.1em } $\rangle$ \nobreakspace - \IfNoValueF { #1 } { : ~ } - #1 \\ + \exp_not:n { \tl_if_blank:nF { #1 } { : ~ } } + \exp_not:n { \tl_trim_spaces:n { #1 } } + \par \skip_vertical:n { -\parskip } + \skip_vertical:n { .15\baselineskip } } } @@ -2248,15 +2277,16 @@ { \hook_gput_code:nnn { enddocument } { projlib-draft } { - \tl_if_blank:VF \g__projlib_draft_dnf_report_tl + \tl_if_blank:VF \g__projlib_draft_DNF_report_tl { \clearpage - \pagestyle{empty} + \pagestyle { empty } + \color { projlib_draft_DNF_color } \noindent - \color { projlib_draft_dnf_color } - \projlib_draft_dnf_font - \projlib_draft_dnf_report_text \\[0.75\baselineskip] - \g__projlib_draft_dnf_report_tl + \projlib_draft_DNF_font + \projlib_draft_DNF_report_text + \par \bigskip + \g__projlib_draft_DNF_report_tl } } } @@ -3002,7 +3032,7 @@ { % #1 = command name (with backslash) % #2 = key-value name configuration \keyval_parse:nnn - {} + { \use_none:n } { \__projlib_langauge_define_multilingual_text_do:nnn { \cs_to_str:N #1 } } { #2 } \tl_gset:Nn #1 @@ -3025,6 +3055,14 @@ { \projlib_langauge_define_multilingual_text:Nn #1 { #2 } } + + +\PassOptionsToPackage { autostyle } { csquotes } +\RequirePackage { csquotes } + +\DeclareQuoteStyle { schinese } {“} {”} {‘} {’} +\DeclareQuoteStyle { tchinese } {“} {”} {‘} {’} +\DeclareQuoteStyle { japanese } {「} {」} {『} {』} %</projlib-language> % %<*projlib-logo> @@ -3363,6 +3401,42 @@ \projlib_math_define_shortcut:nnn { #1 } { #3 } { #2 } } } + + +\cs_new:Nn \__projlib_math_list_of_symbols_entry:nnnn + % #1 = column one width + % #2 = column two width + % #3 = symbol + % #4 = description + { + \noindent + \begin { tabular } { p{#1} p{#2} } + \parbox [t] { #1 } { #3 } & \parbox [t] { #2 } { #4 } + \end { tabular } + \par + \skip_vertical:n { -\parskip } + } + +\cs_new:Nn \projlib_math_list_of_symbols:nnn + % #1 = column one width + % #2 = column two width + % #3 = key-val list + { + \keyval_parse:nnn + { \use_none:n } + { \__projlib_math_list_of_symbols_entry:nnnn { #1 } { #2 } } + { #3 } + } + +\NewDocumentCommand \ProjLibListOfSymbols { O{0.17\textwidth} O{0.75\textwidth} m } + { + \projlib_math_list_of_symbols:nnn { #1 } { #2 } { #3 } + } + +\ProvideDocumentCommand \ListOfSymbols { O{0.17\textwidth} O{0.75\textwidth} m } + { + \projlib_math_list_of_symbols:nnn { #1 } { #2 } { #3 } + } %</projlib-math> % %<*projlib-paper> @@ -3578,7 +3652,7 @@ \cs_generate_variant:Nn \keyval_parse:nnn { nno } \keyval_parse:nno - { } + { \use_none:n } { \projlib_theorem_preset_theorem_style:nn } { \l__projlib_theorem_theorem_style_tl } @@ -4750,5 +4824,96 @@ } } %</projlib-theorem> +% +%<*projlib-titlepage> +\keys_define:nn { projlib-titlepage } + { + , unknown .code:n = {} + } +\ProcessKeysOptions { projlib-titlepage } + +\RequirePackage { projlib-paper } + +\RequirePackage { tikz } +\ExplSyntaxOff +\usetikzlibrary { calc } +\ExplSyntaxOn + +\tl_new:N \l_projlib_titlepage_logo_tl +\tl_new:N \l_projlib_titlepage_title_tl +\tl_new:N \l_projlib_titlepage_subtitle_tl +\tl_new:N \l_projlib_titlepage_author_tl +\tl_new:N \l_projlib_titlepage_date_tl +\tl_new:N \l_projlib_titlepage_style_tl + +\NewDocumentCommand \ProjLibTitlePage { O{} m } + { + \keys_set:nn { projlib-titlepage-config } { #1 } + \projlib_titlepage_render:n { #2 } + } +\ProvideDocumentCommand \TitlePage { O{} m } + { + \ProjLibTitlePage [ #1 ] { #2 } + } + +\cs_new_protected:Nn \projlib_titlepage_set_color:nn + { + \colorlet { titlepage- #1 } { #2 } + } + +\keys_define:nn { projlib-titlepage-config } + { + , logo .tl_set:N = \l_projlib_titlepage_logo_tl + , logo .initial:n = { \scalebox { 2 } { \ProjLib } } + , title .tl_set:N = \l_projlib_titlepage_title_tl + , subtitle .tl_set:N = \l_projlib_titlepage_subtitle_tl + , author .tl_set:N = \l_projlib_titlepage_author_tl + , date .tl_set:N = \l_projlib_titlepage_date_tl + , style .tl_set:N = \l_projlib_titlepage_style_tl + , style .initial:n = { default } + , color .code:n = { + \keyval_parse:nnn + { \use_none:n } + { \projlib_titlepage_set_color:nn } + { #1 } + } + , unknown .code:n = {} + } + +\colorlet { titlepage-main } { blue!50!cyan!50!black } +\colorlet { titlepage-back } { blue!50!cyan!10!yellow!30 } + +\cs_new_protected:Nn \projlib_titlepage_render:n + { + \keys_set:nn { projlib-titlepage-config } { #1 } + \begin { titlepage } + \cs_if_exist_use:c { projlib_titlepage_render_with_style_ \l_projlib_titlepage_style_tl : } + \end { titlepage } + \setcounter { page } { 0 } + } + +\cs_new_protected:Nn \projlib_titlepage_render_with_style_default: + { + \begin{tikzpicture}[overlay,remember~picture] + \fill [color=titlepage-main] ($(current~page.south~west)$) rectangle ($(current~page.north~east)+(0,-.3\paperheight)$); + \fill [color=titlepage-back] ($(current~page.south~west)$) rectangle ($(current~page.north~west)+(.125\paperwidth,-.3\paperheight)$); + \fill [color=titlepage-main] ($(current~page.north~west)$) rectangle ($(current~page.north~west)+(.125\paperwidth,-.3\paperheight)$); + \fill [color=titlepage-back] ($(current~page.north~east)$) rectangle ($(current~page.north~west)+(.125\paperwidth,-.3\paperheight)$); + \node[text~width=.3\paperwidth,text~height=.2\paperheight] at ($(current~page.north~west)+(.32\paperwidth,-.17\paperheight)$) { \l_projlib_titlepage_logo_tl }; + \node[text~width=.4\paperwidth,text~height=.3\paperheight,scale=2.5] at ($(current~page.north~west)+(.67\paperwidth,-.15\paperheight)$) {\textcolor{titlepage-back}{\sffamily\textsc{ \l_projlib_titlepage_title_tl }\\[.5em]\footnotesize{ \l_projlib_titlepage_subtitle_tl }}}; + \node[text~width=.3\paperwidth,text~height=.3\paperheight] at ($(current~page.south)+(.2\paperwidth,.3\paperheight)$) {\color{titlepage-back}\begin{flushright}\fontsize{16pt}{0pt}\selectfont\textsc{ \l_projlib_titlepage_author_tl }\\[1em]\fontsize{12pt}{0pt}\selectfont \l_projlib_titlepage_date_tl \end{flushright} }; + \end{tikzpicture} + } + +\cs_new_protected:Nn \projlib_titlepage_render_with_style_simple: + { + \begin{tikzpicture}[overlay,remember~picture] + \fill[color=titlepage-main] ($(current~page.south~west)$) rectangle ($(current~page.north~east)+(0,-.3\paperheight)$); + \node[text~width=.3\paperwidth,text~height=.2\paperheight] at ($(current~page.north~west)+(.28\paperwidth,-.15\paperheight)$) { \l_projlib_titlepage_logo_tl }; + \node[text~width=.4\paperwidth,text~height=.3\paperheight,scale=2.5] at ($(current~page.north~west)+(.63\paperwidth,-.15\paperheight)$) {\textcolor{paper}{\sffamily\textsc{ \l_projlib_titlepage_title_tl }\\[.5em]\footnotesize{ \l_projlib_titlepage_subtitle_tl }}}; + \node[text~width=.3\paperwidth,text~height=.3\paperheight] at ($(current~page.south)+(.2\paperwidth,.3\paperheight)$) {\color{paper}\begin{flushright}\fontsize{16pt}{0pt}\selectfont\textsc{ \l_projlib_titlepage_author_tl }\\[1em]\fontsize{12pt}{0pt}\selectfont \l_projlib_titlepage_date_tl \end{flushright} }; + \end{tikzpicture} + } +%</projlib-titlepage> \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/source/latex/projlib/ProjLib.ins b/Master/texmf-dist/source/latex/projlib/ProjLib.ins index ca73cff4465..6aac97bf776 100644 --- a/Master/texmf-dist/source/latex/projlib/ProjLib.ins +++ b/Master/texmf-dist/source/latex/projlib/ProjLib.ins @@ -49,6 +49,7 @@ and version 1.3c or later is part of all distributions of LaTeX version \generate{\file{projlib-math.sty}{\from{ProjLib.dtx}{projlib-math}}} \generate{\file{projlib-paper.sty}{\from{ProjLib.dtx}{projlib-paper}}} \generate{\file{projlib-theorem.sty}{\from{ProjLib.dtx}{projlib-theorem}}} +\generate{\file{projlib-titlepage.sty}{\from{ProjLib.dtx}{projlib-titlepage}}} \obeyspaces \Msg{*************************************************************} @@ -66,6 +67,7 @@ and version 1.3c or later is part of all distributions of LaTeX version \Msg{* projlib-math.sty *} \Msg{* projlib-paper.sty *} \Msg{* projlib-theorem.sty *} +\Msg{* projlib-titlepage.sty *} \Msg{* *} \Msg{* Happy TeXing! *} \Msg{* *} |