summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-04-27 01:01:05 +0000
committerKarl Berry <karl@freefriends.org>2010-04-27 01:01:05 +0000
commit2a02b4779d0acc1e6bfd719c6c19e12940617bec (patch)
treecd84dfbfa5bbed35e60b5a31d28ff46a5efd0273 /Master/texmf-dist/tex/latex
parent61d5522194a84bc8c81973ff2fd8901e5ce10de0 (diff)
xpackages update (26apr10)
git-svn-id: svn://tug.org/texlive/trunk@18019 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty73
-rw-r--r--Master/texmf-dist/tex/latex/xpackages/xbase/xtemplate.sty46
-rw-r--r--Master/texmf-dist/tex/latex/xpackages/xhead/xhead.sty376
3 files changed, 459 insertions, 36 deletions
diff --git a/Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty b/Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty
index a5204eeef15..18e704e88cd 100644
--- a/Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty
+++ b/Master/texmf-dist/tex/latex/xpackages/xbase/xparse.sty
@@ -57,7 +57,7 @@
%% -----------------------------------------------------------------------
%%
\RequirePackage{l3names}
-\GetIdInfo$Id: xparse.dtx 1876 2010-03-27 07:20:51Z joseph $
+\GetIdInfo$Id: xparse.dtx 1897 2010-04-26 05:56:56Z joseph $
{Generic document command parser}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -654,16 +654,60 @@
\tl_to_str:n {#1}
}
}
-\cs_new:Npn \xparse_process_comma_split:n #1 {
- \tl_if_in:nnTF {#1} { , } {
- \xparse_process_comma_split_aux:w #1 \q_stop
- }{
- \tl_set:Nn \ProcessedArgument { {#1} { \NoValue } }
- }
-}
-\cs_new:Npn \xparse_process_comma_split_aux:w #1 , #2 \q_stop {
- \tl_set:Nn \ProcessedArgument { {#1} {#2} }
+\cs_new_protected:Npn \_xparse_bool_reverse:N #1 {
+ \bool_if:NTF #1
+ { \tl_set:Nn \ProcessedArgument { \c_false_bool } }
+ { \tl_set:Nn \ProcessedArgument { \c_true_bool } }
}
+\tl_new:N \_l_xparse_split_argument_tl
+\group_begin:
+ \char_make_active:N \@
+ \cs_gset_protected:Npn \_xparse_split_argument:nnn #1#2#3
+ {
+ \tl_set:Nn \_l_xparse_split_argument_tl {#3}
+ \group_begin:
+ \char_set_lccode:nn { `\@ } { `#2}
+ \tl_to_lowercase:n
+ {
+ \group_end:
+ \tl_replace_all_in:Nnn \_l_xparse_split_argument_tl { @ } {#2}
+ }
+ \cs_set_protected:Npn \_xparse_split_argument_aux_i:w
+ ##1 \q_nil ##2 #2 ##3 \q_stop
+ {
+ \tl_put_right:Nn \ProcessedArgument { {##2} }
+ ##1 \q_nil ##3 \q_stop
+ }
+ \cs_set_protected:Npn \_xparse_split_argument_aux_iii:w
+ ##1 #2 ##2 \q_stop
+ {
+ \IfNoValueF {##1}
+ {
+ \msg_kernel_error:nnxxx { xparse } { split-excess-tokens }
+ { \exp_not:n {#2} } {#1} { \exp_not:n {#3} }
+ }
+ }
+ \tl_set:Nx \_l_xparse_tmp_tl
+ {
+ \prg_replicate:nn { #1 + 1 }
+ { \_xparse_split_argument_aux_i:w }
+ \_xparse_split_argument_aux_ii:w
+ \exp_not:N \q_nil
+ \exp_not:V \_l_xparse_split_argument_tl
+ \prg_replicate:nn {#1} { \exp_not:n {#2} \NoValue }
+ \exp_not:n { #2 \q_stop }
+ }
+ \_l_xparse_tmp_tl
+ }
+\group_end:
+\cs_set_protected:Npn \_xparse_split_argument_aux_i:w { }
+\cs_set_protected:Npn \_xparse_split_argument_aux_ii:w
+ #1 \q_nil #2 \q_stop
+ {
+ \tl_if_empty:nF {#2}
+ { \_xparse_split_argument_aux_iii:w #2 \q_stop }
+ }
+\cs_set_protected:Npn \_xparse_split_argument_aux_iii:w { }
\cs_new:Npn \xparse_exp_add_type_d:w #1#2 {
\xparse_exp_add_type_D:w #1 #2 { \NoValue }
}
@@ -938,6 +982,13 @@
Argument~specification~'#1'~contains~a~processor~function:\\
this~is~only~supported~for~standard~robust~functions.
}
+\msg_kernel_set:nnnn { xparse } { split-excess-tokens }
+ { Too~many~'#1'~tokens~when~trying~to~split~argument. }
+ {
+ LaTeX~was~asked~to~split~the~input~'#3'\\
+ at~each~occurrence~of~the~token~'#1',~up~to~a~maximum~of~#2~tokens.\\
+ There~were~too~many~'#1'~tokens.
+ }
\msg_kernel_new:nnnn { xparse } { unknown-argument-type }
{ Unknown~argument~type~'#1'~replaced~by~'m'.~Fingers~crossed~... }
{
@@ -1036,6 +1087,8 @@
}
\cs_new_protected:Npn \NoValue { -NoValue- }
\cs_new:Npn \ProcessedArgument { }
+\cs_new_eq:NN \ReverseBoolean \_xparse_bool_reverse:N
+\cs_new_eq:NN \SplitArgument \_xparse_split_argument:nnn
\endinput
%%
%% End of file `xparse.sty'.
diff --git a/Master/texmf-dist/tex/latex/xpackages/xbase/xtemplate.sty b/Master/texmf-dist/tex/latex/xpackages/xbase/xtemplate.sty
index b2dbada94c7..6ff224fff23 100644
--- a/Master/texmf-dist/tex/latex/xpackages/xbase/xtemplate.sty
+++ b/Master/texmf-dist/tex/latex/xpackages/xbase/xtemplate.sty
@@ -54,7 +54,7 @@
%% -----------------------------------------------------------------------
%%
\RequirePackage{l3names}
-\GetIdInfo$Id: xtemplate.dtx 1879 2010-03-29 17:48:38Z mittelba $
+\GetIdInfo$Id: xtemplate.dtx 1896 2010-04-14 17:40:38Z joseph $
{Prototype document functions}
@@ -332,7 +332,7 @@
\cs_new:Npn \xtemplate_split_keytype:n #1 {
\bool_set_false:N \l_xtemplate_error_bool
\tl_set:Nn \l_xtemplate_tmp_tl {#1}
- \tl_replace_all_in:Nnn \l_xtemplate_tmp_tl { ~ } { }
+ \tl_remove_all_in:Nn \l_xtemplate_tmp_tl { ~ }
\tl_replace_all_in:Nnn \l_xtemplate_tmp_tl { : } { @ }
\tl_if_in:VnTF \l_xtemplate_tmp_tl { @ } {
\exp_after:wN \xtemplate_split_keytype_aux:w \l_xtemplate_tmp_tl
@@ -802,9 +802,9 @@
}
\cs_new_nopar:Npn \xtemplate_assign_code: {
\tl_put_left:Nx \l_xtemplate_assignments_tl {
- \exp_not:N \cs_set:Npn \exp_not:N \xtemplate_assign_code:n ##1 {
- \exp_not:V \l_xtemplate_var_tl
- }
+ \exp_not:N \cs_set:Npn \exp_not:N \xtemplate_assign_code:n
+ \exp_not:n {##1}
+ { \exp_not:V \l_xtemplate_var_tl }
\exp_not:N \xtemplate_assign_code:n
{ \exp_not:V \l_xtemplate_value_tl }
}
@@ -986,7 +986,7 @@
}
}
\msg_kernel_new:nnnn { xtemplate } { argument-number-mismatch }
- { Object~type~'#1'~takes~'#2' ~not~'#3'~argument(s). }
+ { Object~type~'#1'~takes~'#2'~not~'#3'~argument(s). }
{
Objects~of~type~'#1'~require~'#2'~arguments.\\
You~have~tried~to~make~a~template~for~'#1'\\
@@ -1020,7 +1020,7 @@
{ The~choice~'unknown'~cannot~be~given~for~a~template~key.}
{
The~'unknown'~choice~is~automatically~checked~by~template~when \\
- a~choice~key~is~given with~an~unknown~value.~It~should~not~be \\
+ a~choice~key~is~given~with~an~unknown~value.~It~should~not~be \\
included~in~the~list~of~named~choices~for~a~key,~and~is~always \\
given~last~in~the~implementation~of~choices.
}
@@ -1047,24 +1047,23 @@
\msg_kernel_new:nnnn { xtemplate } { key-no-variable }
{ The~key~'#1'~requires~implementation~details~\msg_line_context:. }
{
- When~creating~template~code~using~
- \token_to_str:N \DeclareTemplateCode,\\
+ When~creating~template~code~using~\DeclareTemplateCode,\\
each~key~name~must~have~an~associated~implementation.\\
This~should~be~given~after~a~'='~sign:~I~did~not~find~one.
}
\msg_kernel_new:nnnn { xtemplate } { key-not-implemented }
{ Key~'#1'~has~no~implementation~\msg_line_context:. }
{
- The~definition~of key implementations~for~template~'#2'\\
+ The~definition~of~key~implementations~for~template~'#2'\\
of~object~type~'#3'~does not~include~any~details~for~key~'#1'.\\
- The~key was declared~in~the~interface definition,\\
+ The~key~was~declared~in~the~interface~definition,\\
and~so~an~implementation~is~required.
}
\msg_kernel_new:nnnn { xtemplate } { keytype-requires-argument }
{ The~keytype~'#1'~requires~an~argument~\msg_line_context:. }
{
You~should~have~put:\\
- \c_space_tl \c_space_tl <key-name>~:~#1
+ \c_space_tl \c_space_tl <key-name>~:~#1~
\token_to_str:N {~<argument>~\token_to_str:N } \\
but~I~did~not~find~an~<argument>.
}
@@ -1081,21 +1080,17 @@
or~has~no~implementation.
}
{
- You~need~to~declare~a~templat~with
- \token_to_str:N \DeclareTemplateInterface \\
- and~its~code~with
- \token_to_str:N \DeclareTemplateCode \c_space_tl
- prior~to~using~it.
+ You~need~to~declare~a~template~with~\DeclareTemplateInterface \\
+ and~its~code~with~\DeclareTemplateCode prior~to~using~it.
}
\msg_kernel_new:nnnn { xtemplate } { type-mismatch }
{ Object~types~'#1'~and~'#2'~do~not~agree. }
{
- You~are~trying~to~use~a~template~directly~with
- \token_to_str:N \UseInstance \\
+ You~are~trying~to~use~a~template~directly~with~\UseInstance \\
(or~a~similar~function),~but~the~object~types~do~not~match.
}
\msg_kernel_new:nnnn { xtemplate } { undeclared-variable }
- {The~variable~#1~has~not~been~declared. }
+ { The~variable~#1~has~not~been~declared. }
{
Before~declaring~an~instance,~all~of~the~required~variables\\
used~in~template~keys~must~be~created.
@@ -1111,13 +1106,13 @@
\msg_kernel_new:nnnn { xtemplate } { unknown-choice }
{ The~choice~'#1'~was~not~declared~for~key~'#2'~\msg_line_context:. }
{
- The~key '#2'~takes~a~fixed~number~of~choices:\\
+ The~key~'#2'~takes~a~fixed~number~of~choices:\\
\clist_map_function:NN #3 \xtemplate_unknown_choice_aux:n
and~this~list~does~not~include~'#1'.
}
\cs_new:Npn \xtemplate_unknown_choice_aux:n #1 { -~ #1 ;\\}
\msg_kernel_new:nnnn { xtemplate } { unknown-keytype }
- { The~keytype '#1'~is~unknown~\msg_line_context:. }
+ { The~keytype~'#1'~is~unknown~\msg_line_context:. }
{
Valid~keytypes~are:\\
-~boolean;\\
@@ -1132,11 +1127,10 @@
-~tokenlist.
}
\msg_kernel_new:nnnn { xtemplate } { unknown-object-type }
- { The ~object~type~'#1'~is~unknown~\msg_line_context:. }
+ { The~object~type~'#1'~is~unknown~\msg_line_context:. }
{
- An~object~type~needs~to~be~declared~with
- \token_to_str:N \DeclareObjectType \c_space_tl
- prior~to~using~it.
+ An~object~type~needs~to~be~declared~with~
+ \DeclareObjectType prior~to~using~it.
}
\msg_kernel_new:nnnn { xtemplate } { unknown-instance }
{ The~instance~'#2'~of~type~'#1'~is~unknown. }
diff --git a/Master/texmf-dist/tex/latex/xpackages/xhead/xhead.sty b/Master/texmf-dist/tex/latex/xpackages/xhead/xhead.sty
new file mode 100644
index 00000000000..1e80bf977d2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/xpackages/xhead/xhead.sty
@@ -0,0 +1,376 @@
+%%
+%% This is file `xhead.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xhead.dtx (with options: `package,trace')
+%%
+%% (C) Copyright The LaTeX3 Project and any individual authors
+%% listed elsewhere in this file.
+%%
+%% This is a generated file.
+%%
+%% This file was generated from file(s) of the xhead bundle.
+%% -----------------------------------------------------------
+%%
+%% This file may only be distributed together with a copy of this bundle.
+%% You may however distribute the bundle without such generated files.
+%%
+%% ======================================================================
+%%
+%% File xhead.dtx (C) Copyright 2010 Frank Mittelbach, LaTeX3 Project
+%%
+%% It may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3c of this
+%% license or (at your option) any later version. The latest version
+%% of this license is in the file
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the ``xhead bundle'' (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% The released version of this bundle is available from CTAN.
+%%
+%% -----------------------------------------------------------------------
+%%
+%% The development version of the bundle can be found at
+%%
+%% http://www.latex-project.org/svnroot/experimental/trunk/
+%%
+%% for those people who are interested.
+%%
+%%%%%%%%%%%
+%% NOTE: %%
+%%%%%%%%%%%
+%%
+%% Snapshots taken from the repository represent work in progress and may
+%% not work or may contain conflicting material! We therefore ask
+%% people _not_ to put them into distributions, archives, etc. without
+%% prior consultation with the LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+%%
+\RequirePackage{expl3}
+\GetIdInfo$Id: xhead.dtx 1686 2009-11-03 08:19:19Z joseph $
+ {Templates heading commands}
+\RequirePackage{expl3,xtemplate}
+\GetIdInfo$Id: xhead.dtx 1771 2010-02-05 20:51:22Z frank $
+ {heading module}
+\ProvidesExplPackage
+ {\filename}{\filedate}{\fileversion}{\filedescription}
+\DeclareObjectType {heading} {7}
+\cs_new:Npn \xhead_generate_toc:NNNNN #1#2#3#4#5 {
+ \typeout{xhead_generate_toc:NNNNN=#1:#2:#3:#4:#5}
+ \bool_if:nT
+ { #2 || ! #1 }
+ {
+ \group_begin:
+ \cs_set_eq:NN \@mkboth \use_none:nn
+ \cs_set_eq:NN \markboth \use_none:nn
+ \cs_set_eq:NN \markright \use_none:n
+ \addcontentsline{toc}{#3}
+ {
+ \tl_if_empty:NF #4
+ { \protect\numberline{ #4 } }
+ #5
+ }
+ \group_end:
+ }
+}
+\cs_generate_variant:Nn \xhead_generate_toc:NNNNN {NNNNo}
+\cs_new:Npn \xhead_generate_mark:NNNNN #1#2#3#4#5 {
+ \typeout{xhead_generate_mark:NNNNN=#1:#2:#3:#4:#5}
+ \bool_if:nT
+ { #2 || ! #1 }
+ {
+ \group_begin:
+ \cs_set_eq:NN \@mkboth \use_none:nn
+ \use:c {#3 mark} {#5}
+ \group_end:
+ }
+}
+\cs_generate_variant:Nn \xhead_generate_mark:NNNNN {NNNNo}
+\cs_new:Npn \xhead_generate_toc_and_mark:NNNNNNN #1#2#3#4#5#6#7 {
+ \xhead_generate_toc:NNNNo
+ #1 #2 #4 #5 #6
+ \xhead_generate_mark:NNNNo
+ #1 #3 #4 #5 #7
+}
+
+\cs_new:Npn \xhead_update_prepare_number:N #1 {
+ \bool_if:nTF
+ { #1 || \intexpr_compare_p:n { \l_xhead_level_int > \c@secnumdepth } }
+ { \tl_clear:N \l_xhead_number_tl }
+ {
+ \refstepcounter \l_xhead_name_tl
+ \tl_set:Nx \l_xhead_number_tl { \use:c {the \l_xhead_name_tl} }
+ }
+}
+\cs_new:Npn \xhead_set_after_indention:N #1 {
+ \bool_if:NTF #1 \@afterindenttrue \@afterindentfalse
+}
+\cs_new:Npn \xhead_set_titles:nnn #1#2#3 {
+ \IfNoValueTF{#1}
+ { \tl_set:Nn \l_xhead_toc_title_tl {#3} }
+ { \tl_if_empty:nTF {#1}
+ { \tl_set:Nn \l_xhead_toc_title_tl {#3} }
+ { \tl_set:Nn \l_xhead_toc_title_tl {#1} }
+ }
+ \IfNoValueTF{#2}
+ { \tl_set_eq:NN \l_xhead_mark_title_tl \l_xhead_toc_title_tl }
+ { \tl_if_empty:nTF {#2}
+ { \tl_set:Nn \l_xhead_mark_title_tl {#3} }
+ { \tl_set:Nn \l_xhead_mark_title_tl {#2} }
+ }
+}
+\dim_new:N \l_xhead_indent_dim
+\skip_new:N \l_xhead_above_skip
+\skip_new:N \l_xhead_below_skip
+\int_new:N \l_xhead_level_int
+\int_new:N \l_xhead_break_penalty_int
+\tl_new:N \l_xhead_name_tl
+\tl_new:N \l_xhead_number_tl
+\tl_new:N \l_xhead_toc_title_tl
+\tl_new:N \l_xhead_mark_title_tl
+\bool_new:N \l_xhead_indent_after_bool
+
+\cs_new:Npn \xhead_title_decl: {}
+
+\cs_new:Npn \xhead_number_format:n #1 {}
+
+\cs_new:Npn \xhead_default_number_format:n #1 { #1 \quad}
+\DeclareTemplateInterface {heading} {2e-vertical} {7}
+ {
+ name : tokenlist = ??? ,
+ level : integer = 0 ,
+ break-penalty: integer = -300 ,
+ indent : length = 0pt ,
+ above-skip : skip = 0pt ,
+ below-skip : skip = 0pt ,
+ title-decl : function {0} = ,
+ number-format: function {1} = \xhead_default_number_format:n {#1} ,
+ indent-after : boolean = false ,
+ }
+\DeclareTemplateCode {heading} {2e-vertical} {7}
+ {
+ name = \l_xhead_name_tl ,
+ level = \l_xhead_level_int ,
+ break-penalty = \l_xhead_break_penalty_int ,
+ indent = \l_xhead_indent_dim ,
+ above-skip = \l_xhead_above_skip ,
+ below-skip = \l_xhead_below_skip ,
+ title-decl = \xhead_title_decl: ,
+ number-format = \xhead_number_format:n ,
+ indent-after = \l_xhead_indent_after_bool ,
+ }
+ {
+ \AssignTemplateKeys
+ \bool_if:NF #1
+ {
+ \IfNoValueTF{#2}
+ { \tl_set:Nn \l_xhead_toc_title_tl {#6} }
+ { \tl_set:Nn \l_xhead_toc_title_tl {#2} }
+ \tl_set_eq:NN \l_xhead_mark_title_tl \l_xhead_toc_title_tl
+ }
+ \xhead_update_prepare_number:N #1
+ \xhead_set_after_indention:N \l_xhead_indent_after_bool
+ \if@noskipsec \leavevmode \fi
+ \par
+ \if@nobreak
+ \everypar{}
+ \else:
+ \addpenalty \l_xhead_break_penalty_int
+ \addvspace \l_xhead_above_skip
+ \fi:
+ \group_begin:
+ \xhead_title_decl:
+ {
+ \@hangfrom{\hskip \l_xhead_indent_dim \scan_stop:
+ \tl_if_empty:NF \l_xhead_number_tl
+ { \xhead_number_format:n \l_xhead_number_tl }
+ }
+ \interlinepenalty \@M #6\@@par
+ }
+ \group_end:
+ \xhead_generate_toc_and_mark:NNNNNNN
+ #1 \BooleanFalse \BooleanFalse % no forcing in 2e
+ \l_xhead_name_tl
+ \l_xhead_number_tl
+ \l_xhead_toc_title_tl
+ \l_xhead_mark_title_tl
+ \par \nobreak
+ \vspace \l_xhead_below_skip
+ \@afterheading
+ \ignorespaces
+ }
+\DeclareTemplateInterface {heading} {3a-vertical} {7}
+ {
+ name : tokenlist = ??? ,
+ level : integer = 0 ,
+ break-penalty : integer = -300 ,
+ indent : length = 0pt ,
+ above-skip : skip = 0pt ,
+ below-skip : skip = 0pt ,
+ format : tokenlist = indent-by-number ,
+ parshape : instance {parshape} = plain ,
+ justification : instance {justification} = flush-left ,
+ font : tokenlist = ,
+ number-format : function {1} = \xhead_default_number_format:n {#1} ,
+ indent-after : boolean = false ,
+ }
+
+\tl_new:N \l_xhead_title_format_tl
+\tl_new:N \l_xhead_title_font_tl
+
+\cs_new:Npn \xhead_title_parshape: {}
+\cs_new:Npn \xhead_title_justification: {}
+
+\DeclareTemplateCode {heading} {3a-vertical} {7}
+ {
+ name = \l_xhead_name_tl ,
+ level = \l_xhead_level_int ,
+ break-penalty = \l_xhead_break_penalty_int ,
+ indent = \l_xhead_indent_dim ,
+ above-skip = \l_xhead_above_skip ,
+ below-skip = \l_xhead_below_skip ,
+ format = \l_xhead_title_format_tl ,
+ parshape = \xhead_title_parshape: ,
+ justification = \xhead_title_justification: ,
+ font = \l_xhead_title_font_tl ,
+ number-format = \xhead_number_format:n ,
+ indent-after = \l_xhead_indent_after_bool ,
+ }
+ {
+ \AssignTemplateKeys
+ \xhead_set_titles:nnn {#2} {#4} {#6}
+ \xhead_update_prepare_number:N #1
+ \xhead_set_after_indention:N \l_xhead_indent_after_bool
+ \if@noskipsec \leavevmode \fi
+ \par
+ \if@nobreak
+ \everypar{}
+ \else:
+ \addpenalty \l_xhead_break_penalty_int
+ \addvspace \l_xhead_above_skip
+ \fi:
+ \xhead_use_title_format:nn \l_xhead_title_format_tl {#6}
+
+ \xhead_generate_toc_and_mark:NNNNNNN
+ #1 #3 #5
+ \l_xhead_name_tl
+ \l_xhead_number_tl
+ \l_xhead_toc_title_tl
+ \l_xhead_mark_title_tl
+ \par \nobreak
+ \vspace \l_xhead_below_skip
+ \@afterheading
+ \ignorespaces
+ }
+\cs_new:Npn \xhead_use_title_format:nn #1 {
+ \cs_if_exist:cTF {xhead_format_ #1:n}
+ { \use:c{xhead_format_ #1:n} }
+ { \ERROR xhead format not defined }
+}
+\cs_new:cpn {xhead_format_indent-by-number:n} #1 {
+ \group_begin:
+ \l_xhead_title_font_tl
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \tl_if_empty:NF \l_xhead_number_tl
+ { \xhead_number_format:n \l_xhead_number_tl }
+ }
+
+ \UseInstance{measure}{fullwidth}
+ {\l_xhead_indent_dim + \box_wd:N \l_tmpa_box }
+
+ \xhead_title_parshape:
+ \xhead_title_justification:
+ \interlinepenalty \@M
+
+ \noindent \hbox_overlap_left:n { \box_use:N \l_tmpa_box }
+ #1\@@par
+ \group_end:
+}
+\cs_new:cpn {xhead_format_number-above-text:n} #1 {
+ \group_begin:
+ \l_xhead_title_font_tl
+ \xhead_title_parshape:
+ \xhead_title_justification:
+ \interlinepenalty \@M
+
+ \tl_if_empty:NF \l_xhead_number_tl
+ {
+ \xhead_number_format:n \l_xhead_number_tl
+ }
+
+ #1\@@par
+ \group_end:
+}
+
+\input{xtextblock.sty}
+
+\DeclareTemplateInterface {heading} {3b-vertical} {7}
+ {
+ name : tokenlist = ??? ,
+ level : integer = 0 ,
+ break-penalty : integer = -300 ,
+ indent : length = 0pt ,
+ above-skip : skip = 0pt ,
+ below-skip : skip = 0pt ,
+ title-format : instance {textblock-2} = heading ,
+ number-format : function {1} = \xhead_default_number_format:n {#1} ,
+ indent-after : boolean = false ,
+ }
+
+\cs_new:Npn \xhead_title_format:nn #1#2 {}
+
+\DeclareTemplateCode {heading} {3b-vertical} {7}
+ {
+ name = \l_xhead_name_tl ,
+ level = \l_xhead_level_int ,
+ break-penalty = \l_xhead_break_penalty_int ,
+ indent = \l_xhead_indent_dim ,
+ above-skip = \l_xhead_above_skip ,
+ below-skip = \l_xhead_below_skip ,
+ title-format = \xhead_title_format:nn ,
+ number-format = \xhead_number_format:n ,
+ indent-after = \l_xhead_indent_after_bool ,
+ }
+ {
+ \AssignTemplateKeys
+
+ \xhead_set_titles:nnn {#2} {#4} {#6}
+
+ \xhead_update_prepare_number:N #1
+
+ \xhead_set_after_indention:N \l_xhead_indent_after_bool
+
+ \if@noskipsec \leavevmode \fi
+ \par
+ \if@nobreak
+ \everypar{}
+ \else:
+ \addpenalty \l_xhead_break_penalty_int
+ \addvspace \l_xhead_above_skip
+ \fi:
+
+ \xhead_title_format:nn \l_xhead_number_tl {#6}
+
+ \xhead_generate_toc_and_mark:NNNNNNN
+ #1 #3 #5
+ \l_xhead_name_tl
+ \l_xhead_number_tl
+ \l_xhead_toc_title_tl
+ \l_xhead_mark_title_tl
+
+ \par \nobreak
+ \vspace \l_xhead_below_skip
+ \@afterheading
+ \ignorespaces
+ }
+
+\endinput
+%%
+%% End of file `xhead.sty'.