% \iffalse meta-comment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Copyright 2023-2025 Clea F. Rees % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c % of this license or (at your option) any later version. % The latest version of this license is in % https://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of LaTeX % version 2008-05-04 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Clea F. Rees. % % This file may only be distributed together with a copy of the package % chronos. You may however distribute the package chronos without % such generated files. % % This work consists of all files listed in manifest.txt. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \fi % % \iffalse %<*driver> \pdfminorversion=7 \RequirePackage{svn-prov} %^^A ref. ateb Max Chernoff: https://tex.stackexchange.com/a/723294/ \def\MyMakePrivateLetters{\makeatletter\ExplSyntaxOn\endlinechar13} \ExplSyntaxOff \ProvidesFileSVN{$Id: chronos.dtx 10925 2025-03-07 15:07:59Z cfrees $}[v0.9.1 \revinfo][\filebase\ DTX] \DefineFileInfoSVN[chronosdoc] \GetFileInfoSVN* \let\chronosdocversion\fileversion \let\chronosdocrev\filerev \let\chronosdocbase\filebase \let\chronosdocinfo\fileinfo \let\chronosdocdate\filedate \let\chronosdocfilename\filename %^^A BEGIN preamble <<< \documentclass[10pt,british,a4paper]{ltxdoc} \usepackage[extract=python]{memoize} \mmzset{% prefix=memos/, auto=\cref{multiref}, auto=\Cref{multiref}, auto=\labelcref{multiref}, auto=\cpageref{multiref}, auto=\labelcpageref{multiref}, auto=\namecref{ref}, auto=\nameCref{ref}, auto=\namecrefs{ref}, auto=\nameCrefs{ref}, auto=\lcnamecrefs{ref}, auto=\lcnamecrefs{ref}, auto=\crefrange{refrange}, auto=\cpagerefrange{refrange}, auto=\Cpagerefrange{refrange}, % deactivate csname=pgfsys@getposition, } \usepackage{chronos} \GetFileInfoSVN{chronos} \let\chronosfileversion\fileversion \let\chronosfilerev\filerev \let\chronosfilebase\filebase \let\chronosfileinfo\fileinfo \let\chronosfiledate\filedate \let\chronosfilename\filename \EnableCrossrefs \CodelineIndex \RecordChanges %^^A \PageIndex \usetikzlibrary{arrows.meta,ext.paths.ortho,tikzmark,decorations.pathreplacing} \usepackage{babel} \usepackage{geometry} \usepackage{fancyhdr} \usepackage{enumitem} \usepackage{calc} \usepackage{rotating} \usepackage{floatpag} \usepackage{etoolbox} \usepackage{verbatim} \usepackage{parskip} \usepackage{changepage} ^^A\usepackage{titling}% GWALL!! \usepackage{makeidx} \usepackage{pifont} \usepackage{amstext} \usepackage{amssymb} \usepackage{booktabs} \usepackage{tabularx} \usepackage{array} \usepackage{subcaption} \usepackage{csquotes} \MakeAutoQuote{‘}{’} \MakeAutoQuote*{“}{”} \usepackage[rm={lining},sf={lining},tt={tabular,lining,monowidth}]{cfr-lm} \usepackage{microtype} %^^A caption manual 21 \DeclareCaptionLabelFormat{continued}{Continued #1 #2} \captionsetup[ContinuedFloat]{labelformat=continued} \newcommand*{\cywir}{\marginpar{\raggedleft\mbox{ }\bigskip\par\textcolor{green}{\ding{52}}}} \newcommand*{\anghywir}{\marginpar{\raggedleft\mbox{ }\bigskip\par\textcolor{red}{\ding{56}~}}} \newcommand*{\fycheck}{\checkmark} \newcommand*{\fycross}{--} \newcommand* \sqarrow {\reflectbox{\Pisymbol{psy}{191}}} \let\chronosdocmacrocode\macrocode \let\endchronosdocmacrocode\endmacrocode \let\chronosdocenvironment\environment \let\endchronosdocenvironment\endenvironment \usepackage[% loadHyperref=true, createIndexEntries=false, ]{doctools} %^^A sicrhau hyperindex=false: llwytho CYN bookmark \usepackage{hypdoc}% ateb Ulrike Fischer: https://tex.stackexchange.com/a/695555/ \usepackage{bookmark} \hypersetup{% colorlinks=true, citecolor={moss}, extension=pdf, linkcolor={strawberry}, linktocpage=true, pdfcreator={TeX}, pdfproducer={pdfeTeX}, urlcolor={blueberry}% } \usepackage{cleveref} \crefname{paragraph}{note}{notes} \crefname{subparagraph}{note}{notes} \makeatletter \ExplSyntaxOn %^^A BEGIN booleans <<< \bool_new:N \g__chronosdoc_describe_bool \bool_gset_false:N \g__chronosdoc_describe_bool \bool_new:N \l__chronosdoc_vfit_bool \bool_new:N \l__chronosdoc_hfit_bool \bool_set_true:N \l__chronosdoc_vfit_bool \bool_set_true:N \l__chronosdoc_hfit_bool \bool_new:N \l__chronosdoc_show_targets_bool %^^A \bool_set_true:N \l__chronosdoc_show_targets_bool \bool_set_false:N \l__chronosdoc_show_targets_bool \bool_new:N \l__chronosdoc_show_links_bool \bool_set_false:N \l__chronosdoc_show_links_bool \bool_new:N \l__chronosdoc_uc_bool \bool_set_false:N \l__chronosdoc_uc_bool %^^A END booleans >>> %^^A BEGIN boxes <<< \box_new:N \l__chronosdoc_bocs_box %^^A END boxes >>> %^^A BEGIN clists <<< \clist_new:N \l__chronosdoc_vals_clist %^^A END clists >>> %^^A BEGIN dims <<< \dim_new:N \l__chronosdoc_width_dim %^^A END dims >>> %^^A BEGIN fps <<< \fp_new:N \l__chronosdoc_troibocs_fp %^^A END fps >>> %^^A BEGIN regexes <<< \regex_const:Nn \c__chronosdoc_cs_regex { \c{cs} \s* \cB\{ ([^\}]*) \cE\} } \regex_const:Nn \c__chronosdoc_idx_regex { [^A-Za-z0-9\c{textquotesingle}\/\:\-+\s\<\>] } \regex_const:Nn \c__chronosdoc_meta_regex { \c{meta} \s* \cB\{ ([^\}]*) \cE\} } \regex_const:Nn \c__chronosdoc_prime_regex { \c{textquotesingle} } \regex_const:Nn \c__chronosdoc_all_regex { ^( .* )\Z } \regex_const:Nn \c__chronosdoc_commaspace_regex { ,\s* } %^^A END regexes >>> %^^A BEGIN sequences <<< \seq_new:N \l__chronosdoc_enwau_seq \seq_new:N \l__chronosdoc_tmpa_seq \seq_new:N \l__chronosdoc_tmpb_seq %^^A END sequences >>> %^^A BEGIN token lists <<< \tl_new:N \g__chronosdoc_fn_tl \tl_new:N \l__chronosdoc_tmpa_tl \tl_new:N \l__chronosdoc_tmpb_tl \tl_new:N \l__chronosdoc_tmpc_tl %^^A END token lists >>> %^^A BEGIN keys <<< \keys_define:nn { chronos doc / name } { bagpuss .bool_set:N = \l__chronosdoc_bagpuss_bool, bagpuss .default:n = true, bagpuss .initial:n = false, conj .tl_set:N = \l__chronosdoc_conj_tl, conj .initial:n = and, first ~ only .bool_set:N = \l__chronosdoc_firstonly_bool, first ~ only .default:n = true, first ~ only .initial:n = false, font .tl_set:N = \l__chronosdoc_font_tl, font .initial:n = \KeyFont, idx .bool_set:N = \l__chronosdoc_idx_bool, idx .default:n = true, idx .initial:n = true, idx ~ as .clist_set:N = \l__chronosdoc_idx_as_clist, idx ~ font ~ post .tl_set:N = \l__chronosdoc_idx_font_post_tl, idx ~ font ~ post .value_required:n = true, idx ~ font ~ post .initial:n = {\normalfont}, idx ~ font ~ pre .tl_set:N = \l__chronosdoc_idx_font_pre_tl, idx ~ font ~ pre .value_required:n = true, idx ~ font ~ pre .initial:n = {\normalfont}, idx ~ pre .tl_set:N = \l__chronosdoc_idx_pre_tl, idx ~ pre .initial:V = \c_empty_tl, idx ~ prefix .tl_set:N = \l__chronosdoc_idx_pre_tl, idx ~ post .tl_set:N = \l__chronosdoc_idx_post_tl, idx ~ post .initial:V = \c_empty_tl, %^^A idx ~ sort .tl_set:N = \l__chronosdoc_idx_sort_tl, %^^A idx ~ sort .initial:V = \c_empty_tl, link .bool_set:N = \l__chronosdoc_link_bool, link .default:n = true, link .initial:n = false, link ~ pre .tl_set:N = \l__chronosdoc_link_pre_tl, link ~ prefix .tl_set:N = \l__chronosdoc_link_pre_tl, link ~ prefix .initial:V = \c_empty_tl, link ~ to .tl_set:N = \l__chronosdoc_link_to_tl, link ~ to .initial:V = \c_empty_tl, lluosog .bool_gset:N = \g__chronosdoc_enwau_ll_bool, lluosog .default:n = true, lluosog .initial:n = false, pre .meta:n = { idx ~ pre = #1, link ~ prefix = #1, target ~ prefix = #1 }, prefix .meta:n = { idx ~ pre = #1, link ~ prefix = #1, target ~ prefix = #1 }, names .clist_set:N = \l__chronosdoc_names_clist, names .initial:V = \c_empty_clist, no ~ idx .bool_set_inverse:N = \l__chronosdoc_idx_bool, no ~ idx .default:n = true, no ~ link .bool_set_inverse:N = \l__chronosdoc_link_bool, no ~ link .default:n = true, no ~ target .bool_set_inverse:N = \l__chronosdoc_target_bool, no ~ target .default:n = true, symbol .tl_set:N = \l__chronosdoc_symbol_tl, symbol .initial:V = \c_empty_tl, target .bool_set:N = \l__chronosdoc_target_bool, target .default:n = true, target .initial:n = false, target ~ as .tl_set:N = \l__chronosdoc_target_as_tl, target ~ as .initial:V = \c_empty_tl, target ~ pre .tl_set:N = \l__chronosdoc_target_pre_tl, target ~ prefix .tl_set:N = \l__chronosdoc_target_pre_tl, target ~ prefix .initial:V = \c_empty_tl, type .tl_set:N = \l__chronosdoc_type_tl, type .initial:n = key, unknown .code:n = { \tl_set:No \l__chronosdoc_tmpc_tl { \l_keys_key_str } \keys_set:nn { chronos doc / name }{ type=\l__chronosdoc_tmpc_tl } }, } %^^A END keys >>> %^^A BEGIN fns <<< \cs_new_protected_nopar:Nn \__chronosdoc_arg_spacer: { \bool_if:NT \g__chronosdoc_describe_bool { \c_space_tl } \bool_gset_false:N \g__chronosdoc_describe_bool } \cs_generate_variant:Nn \text_titlecase:n { o,v,V } \cs_new_protected_nopar:Nn \__chronosdoc_NewDocElement_aux:nn { \NewDocElement[% macrolike = false, toplevel = false, idxtype = #2, idxgroup = #2 s\actualchar\textsc{ \text_titlecase:o {#2 s} }, printtype = #2 ]{\text_titlecase:n { #1 } }{ #1 } } \cs_generate_variant:Nn \__chronosdoc_NewDocElement_aux:nn { VV } \cs_new_protected_nopar:Nn \__chronosdoc_PrintDescribe_renew:nn %^^A <<< {% addaswyd o doctools t18 \strut \MacroFont \color{doctools@ColorCodeNames} \tl_set:Nv \l__chronosdoc_tmpa_tl { #1 labelname } \clist_map_inline:nn { #2 } { \tl_set:Nn \l_tmpa_tl { #1 : ##1 } \regex_match:NnF \c__chronosdoc_cs_regex { ##1 } { \regex_replace_all:nnN { \s+ } { \- } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_prime_regex { ' } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_meta_regex { \<\1\> } \l_tmpa_tl } \__chronosdoc_hypertarget:Vn \l_tmpa_tl { ##1 } \bool_if:NT \l__chronosdoc_show_targets_bool { \par \textcolor{chronosWildStrawberry}{\l_tmpa_tl} } \par } \PrintLabelName[\macrolabelfont] { \cs:w #1 labelname\cs_end:} % = \csname / \endcsname ? (o \Usename) \bool_gset_true:N \g__chronosdoc_describe_bool } \cs_new_protected_nopar:Nn \__chronosdoc_PrintDescribe_aux:n { %%^^A gweler ateb David Carlisle: https://tex.stackexchange.com/a/659828/ i gwestiwn rhywun arall am rhywbeth arall \ExpandArgs {c} \RenewDocumentCommand { PrintDescribe \text_titlecase:n {#1} } { m } { \__chronosdoc_PrintDescribe_renew:nn { #1 } { ##1 } } } \cs_generate_variant:Nn \__chronosdoc_PrintDescribe_aux:n { V } %^^A >>> \cs_new_protected_nopar:Nn \__chronosdoc_PrintName_aux:n %^^A <<< { \exp_args:Nc \RenewDocumentCommand { Print \text_titlecase:n {#1} Name } { m } { \strut \MacroFont \color{doctools@ColorCodeNames} \string ##1 } } \cs_generate_variant:Nn \__chronosdoc_PrintName_aux:n { V } %^^A >>> \cs_new_nopar:Nn \__chronosdoc_hypertarget:nn %^^A <<< { \bool_if:NTF \g__chronosdoc_enwau_ll_bool { \hypertarget { #1 }{ #2 s } }{ \hypertarget { #1 }{ #2 } } \PackageInfo{chronosdoc}{Hypertarget ~ #1 ~ set} } \cs_generate_variant:Nn \__chronosdoc_hypertarget:nn { Vn } % ^^A >>> \cs_new_nopar:Nn \__chronosdoc_hyperlink:nn %^^A <<< { \bool_if:NTF \g__chronosdoc_enwau_ll_bool { \hyperlink { #1 }{ #2 s } }{ \hyperlink { #1 }{ #2 } } \PackageInfo{chronosdoc}{Hyperlinking ~ #2 ~ to ~ #1} } \cs_generate_variant:Nn \__chronosdoc_hyperlink:nn { Vn } %^^A >>> \cs_new_protected_nopar:Nn \__chronosdoc_hyperlink:n %^^A <<< { \group_begin: \tl_set:Nn \l__chronosdoc_tmpa_tl { #1 } \regex_replace_all:nnN { \s+ } { \- } \l__chronosdoc_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_meta_regex { \<\1\> } \l__chronosdoc_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_prime_regex { ' } \l__chronosdoc_tmpa_tl \__chronosdoc_hyperlink:Vn \l__chronosdoc_tmpa_tl { #1 } \group_end: } %^^A >>> \cs_new_protected_nopar:Nn \__chronosdoc_hypertargets:nnnN %^^A <<< {%^^A #1 type #2 list of prefixes (possibly empty) #3 list of key names #4 text font command \group_begin: \bool_set_false:N \l_tmpb_bool \bool_if:NTF \g__chronosdoc_enwau_ll_bool { \tl_set:Ne \l__chronosdoc_tmpc_tl { s } }{ \tl_clear:N \l__chronosdoc_tmpc_tl } \clist_if_empty:nTF { #2 } { \clist_map_inline:nn { #3 } { \tl_if_empty:nTF { #1 } { \tl_set:Nn \l_tmpa_tl { ##1 } }{ \tl_set:Nn \l_tmpa_tl { #1 : ##1 } } \regex_replace_all:nnN { \s+ } { \- } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_meta_regex { \<\1\> } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_prime_regex { ' } \l_tmpa_tl \bool_if:NTF \l_tmpb_bool { \bool_if:NTF \l__chronosdoc_firstonly_bool { \__chronosdoc_hypertarget:Vn \l_tmpa_tl {} }{ , ~ \__chronosdoc_hypertarget:Vn \l_tmpa_tl { #4 {##1} \l__chronosdoc_tmpc_tl } } }{ \__chronosdoc_hypertarget:Vn \l_tmpa_tl { #4 {##1} \l__chronosdoc_tmpc_tl } \bool_set_true:N \l_tmpb_bool } } }{ \clist_map_inline:nn { #2 } { \clist_map_inline:nn { #3 } { \tl_if_empty:nTF { #1 } { \tl_set:Nn \l_tmpa_tl { ##1 / ####1 } }{ \tl_set:Nn \l_tmpa_tl { #1 : ##1 / ####1 } } \regex_replace_all:nnN { \s+ } { \- } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_meta_regex { \<\1\> } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_prime_regex { ' } \l_tmpa_tl \bool_if:NTF \l_tmpb_bool { \bool_if:NTF \l__chronosdoc_firstonly_bool { \__chronosdoc_hypertarget:Vn \l_tmpa_tl {} }{ , ~ \__chronosdoc_hypertarget:Vn \l_tmpa_tl { #4 {####1} \l__chronosdoc_tmpc_tl } } }{ \__chronosdoc_hypertarget:Vn \l_tmpa_tl { #4 {####1} \l__chronosdoc_tmpc_tl } \bool_set_true:N \l_tmpb_bool } } } } \bool_gset_false:N \g__chronosdoc_enwau_ll_bool \group_end: } %^^A >>> \cs_new_protected_nopar:Nn \__chronosdoc_hypertargets:nnn %^^A <<< {%^^A #1 type #2 list of prefixes (possibly empty) #3 list of key names \group_begin: \clist_if_empty:nTF { #2 } { \clist_map_inline:nn { #3 } { \tl_if_empty:nTF { #1 } { \tl_set:Nn \l_tmpa_tl { ##1 } }{ \tl_set:Nn \l_tmpa_tl { #1 : ##1 } } \regex_replace_all:nnN { \s+ } { \- } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_meta_regex { \<\1\> } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_prime_regex { ' } \l_tmpa_tl \__chronosdoc_hypertarget:Vn \l_tmpa_tl {} } }{ \clist_map_inline:nn { #2 } { \clist_map_inline:nn { #3 } { \tl_if_empty:nTF { #1 } { \tl_set:Nn \l_tmpa_tl { ##1 / ####1 } }{ \tl_set:Nn \l_tmpa_tl { #1 : ##1 / ####1 } } \regex_replace_all:nnN { \s+ } { \- } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_meta_regex { \<\1\> } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_prime_regex { ' } \l_tmpa_tl \__chronosdoc_hypertarget:Vn \l_tmpa_tl {} } } } \group_end: } \cs_generate_variant:Nn \__chronosdoc_hypertargets:nnn { VVV , VnV } %^^A >>> \cs_generate_variant:Nn \text_titlecase:n { V } \cs_new_protected_nopar:Nn \__chronosdoc_enwau_typeset:n %^^A <<< {%^^A #1 conjunction \seq_use:Nnnn \l__chronosdoc_enwau_seq { ~ #1 ~ } { , ~ } { ~ #1 ~ } \bool_gset_false:N \g__chronosdoc_enwau_ll_bool } %^^A >>> \cs_new_protected_nopar:Nn \__chronosdoc_enwau_aux:nn %^^A <<< {%^^A #1 rhestr allweddau/cydsyniadau #2 conjunction \seq_set_from_clist:Nn \l_tmpa_seq { #1 } \__chronosdoc_seq_titlecase:N \l_tmpa_seq \bool_if:NTF \g__chronosdoc_enwau_ll_bool { \seq_set_map:NNn \l__chronosdoc_enwau_seq \l_tmpa_seq { { \l__chronosdoc_font_tl ##1 s } } }{ \seq_set_map:NNn \l__chronosdoc_enwau_seq \l_tmpa_seq { { \l__chronosdoc_font_tl ##1 } } } \bool_gset_false:N \g__chronosdoc_enwau_ll_bool \__chronosdoc_enwau_typeset:n { #2 } } %^^A >>> \cs_new_protected:Nn \__chronosdoc_seq_titlecase:N { \bool_if:NT \l__chronosdoc_uc_bool { \seq_pop_left:NN #1 \l_tmpa_tl \tl_set:Nn \l_tmpb_tl { \text_titlecase:V \l_tmpa_tl } \seq_put_left:NV #1 \l_tmpb_tl } } \cs_new_protected_nopar:Nn \__chronosdoc_enwau_hyperlink:nnnn %^^A <<< {%^^A #1 rhestr allweddau/cydsyniadau #2 conjunction #3 label e.e. boolkey #4 prefix e.e. empty \seq_set_from_clist:Nn \l_tmpa_seq { #1 } \bool_set_true:N \l_tmpb_bool \seq_set_map:NNn \l__chronosdoc_enwau_seq \l_tmpa_seq { \regex_match:NnTF \c__chronosdoc_cs_regex { ##1 } { \tl_set:Nn \l_tmpa_tl { #3 : #4 ##1 } \regex_replace_all:NnN \c__chronosdoc_cs_regex { \c{string} \c{\1} } \l_tmpa_tl }{ \tl_if_empty:NTF \l__chronosdoc_link_to_tl { \tl_set:Nn \l_tmpa_tl { #3 : #4 ##1 } }{ \regex_replace_all:nnN { \s+ } { \- } \l__chronosdoc_link_to_tl \regex_replace_all:NnN \c__chronosdoc_meta_regex { \<\1\> } \l__chronosdoc_link_to_tl \regex_replace_all:NnN \c__chronosdoc_idx_regex { } \l__chronosdoc_link_to_tl \tl_set:Ne \l_tmpa_tl { #3 : #4 \l__chronosdoc_link_to_tl } } \regex_replace_all:nnN { \s+ } { \- } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_meta_regex { \<\1\> } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_idx_regex { } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_prime_regex { ' } \l_tmpa_tl } \bool_lazy_and:nnTF { \l__chronosdoc_uc_bool } { \l_tmpb_bool } { \__chronosdoc_hyperlink:Vn \l_tmpa_tl { \l__chronosdoc_font_tl \text_titlecase:n { ##1 } } }{ \__chronosdoc_hyperlink:Vn \l_tmpa_tl { \l__chronosdoc_font_tl ##1 } } \bool_set_false:N \l_tmpb_bool \bool_if:NT \l__chronosdoc_show_links_bool { \textcolor{ForestGreen}{\l_tmpa_tl} } } \__chronosdoc_enwau_typeset:n { #2 } } %^^A >>> \cs_new_protected_nopar:Nn \__chronosdoc_enwau_hypertarget:nnnn %^^A <<< {%^^A #1 rhestr allweddau/cydsyniadau #2 conjunction #3 label e.e. boolkey #4 prefix e.e. empty \seq_set_from_clist:Nn \l_tmpa_seq { #1 } \bool_if:NTF \l__chronosdoc_uc_bool { \bool_set_true:N \l_tmpb_bool }{ \bool_set_false:N \l_tmpb_bool } \seq_set_map:NNn \l__chronosdoc_enwau_seq \l_tmpa_seq { \tl_if_empty:nTF { #3 } { \tl_set:Nn \l_tmpa_tl { #4 ##1 } }{ \tl_set:Nn \l_tmpa_tl { #3 : #4 ##1 } } \regex_match:NnTF \c__chronosdoc_cs_regex { ##1 } { \regex_replace_all:NnN \c__chronosdoc_cs_regex { \c{string} \c{\1} } \l_tmpa_tl }{ \regex_replace_all:nnN { \s+ } { \- } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_meta_regex { \<\1\> } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_idx_regex { } \l_tmpa_tl \regex_replace_all:NnN \c__chronosdoc_prime_regex { ' } \l_tmpa_tl } \bool_if:NTF \l_tmpb_bool { \__chronosdoc_hypertarget:Vn \l_tmpa_tl { \l__chronosdoc_font_tl \text_titlecase:n { ##1 } } }{ \__chronosdoc_hypertarget:Vn \l_tmpa_tl { \l__chronosdoc_font_tl ##1 } } } \__chronosdoc_enwau_typeset:n { #2 } } %^^A >>> \cs_new_protected_nopar:Nn \__chronosdoc_enwau_idx_aux:Nn %^^A <<< { \tl_set:Nx \l_tmpa_tl { \text_titlecase:v { #2slabelname } } \tl_set:Nv \l_tmpb_tl { #2slabelname } \bool_set_true:N \l_tmpa_bool \tl_if_empty:NF \l__chronosdoc_idx_pre_tl { \regex_replace_all:NnN \c__chronosdoc_commaspace_regex { , \c{space} } \l__chronosdoc_idx_pre_tl \regex_replace_once:NnN \c__chronosdoc_all_regex { \1 \c{actualchar} \cB\{ \c{string} \u{l\_\_chronosdoc\_idx\_font\_pre\_tl} \c{space} \1 \cE\} } \l__chronosdoc_idx_pre_tl \bool_set_false:N \l_tmpa_bool } \tl_if_empty:NF \l__chronosdoc_idx_post_tl { %% makeindex only supports subsubentries; this may be the second so don't go further %% dyw y rheol ddim yn lot o gymorth o gwbl ar ôl i mi fod yn llwyddianias gosod y pethau tu mewn yn y lle cyntaf! \regex_replace_all:NnN \c__chronosdoc_commaspace_regex { , \c{space} } \l__chronosdoc_idx_post_tl \regex_replace_once:NnN \c__chronosdoc_all_regex { \c{levelchar} \1 \c{actualchar} \cB\{ \c{string} \u{l\_\_chronosdoc\_idx\_font\_post\_tl} \c{space} \1 \cE\} } \l__chronosdoc_idx_post_tl \bool_if:NF \l_tmpa_bool { \PackageWarning{chronosdoc}{You ~ cannot ~ use ~ idx ~ pre ~ and ~ idx ~ post. ~ Prioritising ~ post ~ } } \bool_set_true:N \l_tmpa_bool } \tl_if_empty:NF \l__chronosdoc_symbol_tl { \regex_replace_once:NnN \c__chronosdoc_all_regex { \c{string} \c{ idx \1 } } \l__chronosdoc_symbol_tl } \seq_map_inline:Nn #1 { \tl_set:Nn \l__chronosdoc_tmpa_tl { ##1 } \regex_replace_all:NnN \c__chronosdoc_idx_regex { } \l__chronosdoc_tmpa_tl \regex_match:NnTF \c__chronosdoc_cs_regex { ##1 } { \tl_set:Nn \l__chronosdoc_tmpb_tl { ##1 } \regex_replace_all:NnN \c__chronosdoc_cs_regex { \c{string} \c{verb} \! \* \+ \c{string} \c{\1} \+ } \l__chronosdoc_tmpb_tl \bool_if:NTF \l_tmpa_bool { \__chronosdoc_index_post_macro:VVVVV \l_tmpb_tl \l_tmpa_tl \l__chronosdoc_tmpa_tl \l__chronosdoc_tmpb_tl \l__chronosdoc_idx_post_tl }{ \__chronosdoc_index_pre_macro:VVVVVV \l_tmpb_tl \l_tmpa_tl \l__chronosdoc_tmpa_tl \l__chronosdoc_font_tl \l__chronosdoc_tmpb_tl \l__chronosdoc_idx_pre_tl } }{ \bool_if:NTF \l_tmpa_bool { \__chronosdoc_index_post:VVVVnV \l_tmpb_tl \l_tmpa_tl \l__chronosdoc_tmpa_tl \l__chronosdoc_font_tl { ##1 \l__chronosdoc_symbol_tl } \l__chronosdoc_idx_post_tl }{ \__chronosdoc_index_pre:VVVVnV \l_tmpb_tl \l_tmpa_tl \l__chronosdoc_tmpa_tl \l__chronosdoc_font_tl { ##1 \l__chronosdoc_symbol_tl } \l__chronosdoc_idx_pre_tl } } } } %^^A >>> %^^A based on code courtesy of egreg: http://tex.stackexchange.com/a/240687/ %^^A mangling is my own... (addaswyd - bron copïo-gludo - o cfr-coursepacket.cls) %^^A like trying to crochet with a chainsaw, but only needed a couple of times \cs_new_protected:Npn \__chronosdoc_troibocs:nnnn #1 #2 #3 #4 %^^A angle % h dim % v dim % cynnwys y bocs %^^A <<< { \fp_set:Nn \l__chronosdoc_troibocs_fp { #1 } \hbox_set:Nn \l__chronosdoc_bocs_box { #4 } \fp_compare:nF { \l__chronosdoc_troibocs_fp = \c_zero_fp } { \box_rotate:Nn \l__chronosdoc_bocs_box { \l__chronosdoc_troibocs_fp } } \hbox_set:Nn \l__chronosdoc_bocs_box { \box_move_up:nn { \box_dp:N \l__chronosdoc_bocs_box } { \box_use:N \l__chronosdoc_bocs_box } } \bool_if:NT \l__chronosdoc_hfit_bool { \hbox_set_to_wd:Nnn \l__chronosdoc_bocs_box { #2 } { \hss \box_use:N \l__chronosdoc_bocs_box \hss } } \tl_set:Nx \l_tmpa_tl {*} \tl_set:Nx \l_tmpb_tl {#3} \tl_if_eq:NNF \l_tmpa_tl \l_tmpb_tl { \bool_if:NT \l__chronosdoc_vfit_bool { \dim_set:Nn \l__chronosdoc_width_dim { \box_ht:N \l__chronosdoc_bocs_box } \dim_sub:Nn \l__chronosdoc_width_dim { #3 } \dim_compare:nNnT {0pt} < \l__chronosdoc_width_dim { \vbox_set_to_ht:Nnn \l__chronosdoc_bocs_box { #3 + .5\l__chronosdoc_width_dim } { \vss \box_use:N \l__chronosdoc_bocs_box \vss } } } } \leavevmode\box_use:N \l__chronosdoc_bocs_box } \cs_new_eq:NN \chronosdoctroibocs \__chronosdoc_troibocs:nnnn %^^A >>> %^^A <<< indexing \cs_new_protected_nopar:Nn \__chronosdoc_index_post_macro:nnnnn {%^^A #1 idxtype #2 idxgroup #3 sanitised entry #4 idx entry #6 additional sub-level (with \levelchar) or empty \mbox{}% \doc@providetarget %%^^A ateb Heiko Oberdiek https://tex.stackexchange.com/a/412521/ \@bsphack \begingroup \@sanitize \@wrindex{#1\actualchar\doctools@indexHeadFont{#2}:\levelchar#3\actualchar#4#5\doc@handleencap{discussion}}%^^A sylwad Ulrike Fischer: https://tex.stackexchange.com/questions/695800/how-can-i-get-exactly-one-space-in-idx-i-know-how-to-get-two-or-none-but-not?noredirect=1#comment1727576_695800 } \cs_new_protected_nopar:Nn \__chronosdoc_index_pre_macro:nnnnnn {%^^A #1 idxtype #2 idxgroup #3 sanitised entry #4 ffont #5 idx entry #6 intermediate level \mbox{}% \doc@providetarget %%^^A ateb Heiko Oberdiek https://tex.stackexchange.com/a/412521/ \@bsphack \begingroup \@sanitize \@wrindex{#1\actualchar\doctools@indexHeadFont{#2}:\levelchar#6\levelchar#3\actualchar{\string#4\space #5}\doc@handleencap{discussion}}%^^A sylwad Ulrike Fischer: https://tex.stackexchange.com/questions/695800/how-can-i-get-exactly-one-space-in-idx-i-know-how-to-get-two-or-none-but-not?noredirect=1#comment1727576_695800 } \cs_new_protected_nopar:Nn \__chronosdoc_index_pre:nnnnnn {%^^A #1 idxtype #2 idxgroup #3 sanitised entry #4 ffont #5 idx entry #6 intermediate level \mbox{}% \doc@providetarget %%^^A ateb Heiko Oberdiek https://tex.stackexchange.com/a/412521/ \@bsphack \begingroup \@sanitize \@wrindex{#1\actualchar\doctools@indexHeadFont{#2}:\levelchar#6\levelchar#3\actualchar{\string#4\space #5}\doc@handleencap{discussion}}%^^A sylwad Ulrike Fischer: https://tex.stackexchange.com/questions/695800/how-can-i-get-exactly-one-space-in-idx-i-know-how-to-get-two-or-none-but-not?noredirect=1#comment1727576_695800 } \cs_new_protected_nopar:Nn \__chronosdoc_index_post:nnnnnn {%^^A #1 idxtype #2 idxgroup #3 sanitised entry #4 ffont #5 idx entry #6 additional sub-level (with \levelchar) or empty \mbox{}% \doc@providetarget %%^^A ateb Heiko Oberdiek https://tex.stackexchange.com/a/412521/ \@bsphack \begingroup \@sanitize \@wrindex{#1\actualchar\doctools@indexHeadFont{#2}:\levelchar#3\actualchar{\string#4\space #5}#6\doc@handleencap{discussion}}%^^A sylwad Ulrike Fischer: https://tex.stackexchange.com/questions/695800/how-can-i-get-exactly-one-space-in-idx-i-know-how-to-get-two-or-none-but-not?noredirect=1#comment1727576_695800 } \cs_new_protected_nopar:Nn \__chronosdoc_index:nnnnn {%^^A #1 idxtype #2 idxgroup #3 entry \doc@providetarget %%^^A ateb Heiko Oberdiek https://tex.stackexchange.com/a/412521/ \@bsphack \begingroup \@sanitize \@wrindex{#1\actualchar\doctools@indexHeadFont{#2}:\levelchar#3\actualchar{\string#4\space #5}\doc@handleencap{discussion}}%^^A sylwad Ulrike Fischer: https://tex.stackexchange.com/questions/695800/how-can-i-get-exactly-one-space-in-idx-i-know-how-to-get-two-or-none-but-not?noredirect=1#comment1727576_695800 } \cs_new_protected_nopar:Nn \__chronosdoc_index:nn {%^^A #1 idxtype #2 idxgroup #3 entry \doc@providetarget %%^^A ateb Heiko Oberdiek https://tex.stackexchange.com/a/412521/ \@bsphack \begingroup \@sanitize \@wrindex{#2\actualchar{\string#1\space #2}\doc@handleencap{discussion}}%^^A sylwad Ulrike Fischer: https://tex.stackexchange.com/questions/695800/how-can-i-get-exactly-one-space-in-idx-i-know-how-to-get-two-or-none-but-not?noredirect=1#comment1727576_695800 } \cs_generate_variant:Nn \__chronosdoc_index:nn { Vn } \cs_generate_variant:Nn \__chronosdoc_index:nnnnn { VVVVn } \cs_generate_variant:Nn \__chronosdoc_index_pre:nnnnnn { VVVVnV } \cs_generate_variant:Nn \__chronosdoc_index_pre_macro:nnnnnn { VVVVVV } \cs_generate_variant:Nn \__chronosdoc_index_post_macro:nnnnn { VVVVV } \cs_generate_variant:Nn \__chronosdoc_index_post:nnnnnn { VVVVnV } \cs_generate_variant:Nn \__chronosdoc_enwau_hyperlink:nnnn { nVVV } \cs_generate_variant:Nn \__chronosdoc_enwau_hypertarget:nnnn { nVVV } \cs_generate_variant:Nn \__chronosdoc_enwau_aux:nn { nV } \cs_generate_variant:Nn \__chronosdoc_enwau_idx_aux:Nn { NV } %^^A >>> \cs_generate_variant:Nn \text_titlecase:n { V } \cs_generate_variant:Nn \seq_set_from_clist:Nn { NV } \cs_new_protected_nopar:Nn \__chronosdoc_name:nn %^^A <<< { \keys_set:nn { chronos doc / name } { #1 } \clist_if_empty:NT \l__chronosdoc_idx_as_clist { \clist_set:Nn \l__chronosdoc_idx_as_clist { #2 } } \bool_if:NTF \l__chronosdoc_link_bool { \__chronosdoc_enwau_hyperlink:nVVV { #2 } \l__chronosdoc_conj_tl \l__chronosdoc_type_tl \l__chronosdoc_link_pre_tl }{ \bool_if:NTF \l__chronosdoc_target_bool { \tl_if_empty:NTF \l__chronosdoc_target_as_tl { \__chronosdoc_enwau_hypertarget:nVVV { #2 } \l__chronosdoc_conj_tl \l__chronosdoc_type_tl \l__chronosdoc_target_pre_tl }{ \__chronosdoc_enwau_aux:nV { #2 } \l__chronosdoc_conj_tl %% #1 type #2 list of prefixes (possibly empty) # list of key names \__chronosdoc_hypertargets:VVV \l__chronosdoc_type_tl \l__chronosdoc_target_pre_tl \l__chronosdoc_target_as_tl } }{ \__chronosdoc_enwau_aux:nV { #2 } \l__chronosdoc_conj_tl } } \bool_if:NT \l__chronosdoc_idx_bool { \seq_set_from_clist:NN \l__chronosdoc_enwau_seq \l__chronosdoc_idx_as_clist \__chronosdoc_enwau_idx_aux:NV \l__chronosdoc_enwau_seq \l__chronosdoc_type_tl } }%^^A >>> \NewDocumentCommand \chronosdocidxfn { m } { \footnotemark \tl_gset:No \g__chronosdoc_fn_tl { #1 } } \NewDocumentCommand \chronosdocrestorefn {} { \footnotetext{\g__chronosdoc_fn_tl} } %^^A END fns >>> %^^A BEGIN document fns <<< \NewDocumentCommand \vals { m } { \group_begin: \clist_set:Nn \l__chronosdoc_vals_clist { #1 } \ttfamily = \__chronosdoc_arg_spacer: \clist_use:Nn \l__chronosdoc_vals_clist { \textbar } \group_end: } \NewDocumentCommand \opts { O {and} m } { \group_begin: \seq_set_from_clist:Nn \l_tmpa_seq { #2 } \seq_set_map:NNn \l_tmpb_seq \l_tmpa_seq { \option{ ##1} } \seq_use:Nnnn \l_tmpb_seq { ~ #1 ~ } { ,~ } { ~ #1 ~} \group_end: } \NewDocumentCommand \cvals { m } { \group_begin: \seq_set_from_clist:Nn \l_tmpa_seq { #1 } \seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl \seq_set_map:NNn \l_tmpb_seq \l_tmpa_seq { \meta{ ##1} } \seq_put_left:Nn \l_tmpb_seq { \val { \l_tmpa_tl} } \seq_use:Nn \l_tmpb_seq { \texttt{:} } \group_end: } \NewDocumentCommand \cvalsmarg { m } { \group_begin: \seq_set_from_clist:Nn \l_tmpa_seq { #1 } \seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl \seq_set_map:NNn \l_tmpb_seq \l_tmpa_seq { \marg{ ##1} } \seq_put_left:Nn \l_tmpb_seq { \valmarg { \l_tmpa_tl} } \seq_use:Nn \l_tmpb_seq { \texttt{:} } \group_end: } \NewDocumentCommand \tuplelistvalsmarg { O { / } m } % ee 1a/1b/1c,2a2b/2c,... -> {<1a>/<1b><1c>,...} { \group_begin: \seq_set_from_clist:Nn \l_tmpa_seq { #2 } \seq_clear:N \l__chronosdoc_tmpb_seq \seq_map_inline:Nn \l_tmpa_seq { \seq_set_split:Nnn \l_tmpb_seq { #1 } { ##1 } \int_compare:nNnTF { \seq_count:N \l_tmpb_seq } = { 1 } { \seq_put_right:No \l__chronosdoc_tmpb_seq { ##1 } }{ \seq_set_map:NNn \l__chronosdoc_tmpa_seq \l_tmpb_seq { \meta{####1} } \seq_put_right:Nx \l__chronosdoc_tmpb_seq { \seq_use:Nn \l__chronosdoc_tmpa_seq { \texttt {#1} } } } } \texttt{= \__chronosdoc_arg_spacer: \{ } { \seq_use:Nn \l__chronosdoc_tmpb_seq { \texttt{ , } } } \texttt { \} } \group_end: } \NewDocumentCommand \NewDocElements { s m } { \clist_set:Nn \l__chronosdoc_vals_clist { #2 } \clist_map_inline:Nn \l__chronosdoc_vals_clist { \seq_set_split:Nnn \l_tmpa_seq { | } { ##1 } \seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl \seq_pop_left:NNF \l_tmpa_seq \l_tmpb_tl { \tl_set_eq:NN \l_tmpb_tl \l_tmpa_tl } \__chronosdoc_NewDocElement_aux:VV \l_tmpa_tl \l_tmpb_tl \IfBooleanF { #1 } { \cs_if_free:cTF { \l_tmpa_tl labelname } { \expandafter\xdef\csname \l_tmpa_tl labelname \endcsname{ \l_tmpb_tl } }{ \edef\tempa{Label~already~defined~for~\l_tmpa_tl}\PackageError{chronos}{\tempa}% } \cs_if_free:cTF { \l_tmpa_tl slabelname } { \expandafter\xdef\csname \l_tmpa_tl slabelname \endcsname{ \l_tmpb_tl s} }{ \edef\tempa{Label~already~defined~for~\l_tmpa_tl s}\PackageError{chronos}{\tempa}% } \tl_set:Nx \l__chronosdoc_tmpa_tl { \text_titlecase:n { \l_tmpa_tl } } \tl_set:Nx \l__chronosdoc_tmpb_tl { \text_titlecase:n { \l_tmpb_tl } } \cs_if_free:cTF { \l__chronosdoc_tmpa_tl labelname } { \expandafter\xdef\csname \l__chronosdoc_tmpa_tl labelname \endcsname{ \l__chronosdoc_tmpb_tl } }{ \edef\tempa{Label~already~defined~for~\l__chronosdoc_tmpa_tl}\PackageError{chronos}{\tempa}% } \cs_if_free:cTF { \l__chronosdoc_tmpa_tl slabelname } { \expandafter\xdef\csname \l__chronosdoc_tmpa_tl slabelname \endcsname{ \l__chronosdoc_tmpb_tl s} }{ \edef\tempa{Label~already~defined~for~\l__chronosdoc_tmpa_tl s}\PackageError{chronos}{\tempa}% } } \__chronosdoc_PrintDescribe_aux:V \l_tmpa_tl \__chronosdoc_PrintName_aux:V \l_tmpa_tl } } \NewDocumentCommand \chronosdocidx { O {} m } % XXX {% idx as gets used for everything inc target \group_begin: \clist_set:Nn \l__chronosdoc_idx_as_clist { #2 } \keys_set:nn { chronos doc / name } { type=, #1 } \seq_set_from_clist:NN \l__chronosdoc_enwau_seq \l__chronosdoc_idx_as_clist \tl_if_empty:NTF \l__chronosdoc_type_tl { \seq_map_inline:Nn \l__chronosdoc_enwau_seq { \__chronosdoc_index:Vn \l__chronosdoc_font_tl { ##1 } } }{ \__chronosdoc_enwau_idx_aux:NV \l__chronosdoc_enwau_seq \l__chronosdoc_type_tl } \bool_if:NT \l__chronosdoc_target_bool { \seq_map_inline:Nn \l__chronosdoc_enwau_seq { \tl_set:Nn \l_tmpb_tl { ##1 } \tl_put_left:NV \l_tmpb_tl \l__chronosdoc_target_pre_tl \tl_if_empty:NF \l__chronosdoc_type_tl { \tl_put_left:Nn \l_tmpb_tl { : } \tl_put_left:NV \l_tmpb_tl \l__chronosdoc_type_tl } \regex_replace_all:nnN { \s+ } { \- } \l_tmpb_tl \regex_replace_all:NnN \c__chronosdoc_meta_regex { \<\1\> } \l_tmpb_tl \regex_replace_all:NnN \c__chronosdoc_idx_regex { } \l_tmpb_tl \regex_replace_all:NnN \c__chronosdoc_prime_regex { ' } \l_tmpb_tl \__chronosdoc_hypertarget:Vn \l_tmpb_tl {} } } \group_end: } %^^A from doctools (t18) % \hook_gput_code:nnn {begindocument/before} {chronosdoc} \AtBeginDocument { %% doctools overwirtes doc's definitions of the environment/macros for documenting environments %% \env dim ond shorthand -> \environment %% cadw \environment -> \enviro CYN eu ail-ysgrifennu nhw unwaith eto isod \IfFreeTF \enviro {\let\enviro\environment}{\PackageError{chronosdoc}{\bslash enviro already taken!}}% \RenewDocElement[% doc.pdf v3 t15 macrolike = true , toplevel = false, idxtype = macro, idxgroup = macros\actualchar\textsc{Macros}, printtype = \macrolabelname{} ]{Macro}{macro}% \RenewDocElement[% doc.pdf v3 t15 macrolike = false, toplevel = false, idxtype = environment, idxgroup = environments\actualchar\textsc{Environments}, printtype = \envlabelname{} ]{Env}{environment}% \RenewDocumentCommand \PrintDescribeMacro { m } {%^^A addaswyd o doctools t18 \__chronosdoc_PrintDescribe_renew:nn { macro } { \string #1 } } \__chronosdoc_PrintDescribe_aux:n { env } \__chronosdoc_PrintName_aux:n { env } \__chronosdoc_PrintName_aux:n { macro } } \NewDocumentCommand \chronosdoccreulabel { s O {#3} m }% creu lluosog ; enw llawn ; tag {% \ifcsundef {#3labelname} {% \expandafter\edef\csname #3labelname\endcsname {#2}% }{% \edef\tempa{\cs{#3labelname}}\PackageError{chronosdoc}{\tempa{} ~ already ~ defined.}% }% \IfBooleanF {#1} {% \ifcsundef {#3slabelname} {% \expandafter\edef\csname #3slabelname\endcsname {#2s}% }{% \edef\tempa{\cs{#3slabelname}}\PackageError{chronosdoc}{\tempa{} ~ already ~ defined.}% }% }% } \NewDocumentCommand \keyname { O {} m } { \group_begin: \bool_set_false:N \l__chronosdoc_uc_bool \__chronosdoc_name:nn { font=\KeyFont, link, #1 } { #2 } \group_end: } \NewDocumentCommand \keysname { O {} m } { \group_begin: \bool_set_false:N \l__chronosdoc_uc_bool \__chronosdoc_name:nn { font=\KeyFont, lluosog, link, #1 } { #2 } \group_end: } \NewDocumentCommand \conceptname { O {} m } { \group_begin: \bool_set_false:N \l__chronosdoc_uc_bool \__chronosdoc_name:nn { font=\ConceptFont, type=element, #1 } { #2 } \group_end: } \NewDocumentCommand \conceptsname { O {} m } { \group_begin: \bool_set_false:N \l__chronosdoc_uc_bool \__chronosdoc_name:nn { font=\ConceptFont, type=element, lluosog, #1 } { #2 } \group_end: } \NewDocumentCommand \pkgname { O {} m } { \group_begin: \bool_set_false:N \l__chronosdoc_uc_bool \__chronosdoc_name:nn { font=\PkgFont, no link, type=pkg, #1 } { #2 } \group_end: } \NewDocumentCommand \Keyname { O {} m } { \group_begin: \bool_set_true:N \l__chronosdoc_uc_bool \__chronosdoc_name:nn { font=\KeyFont, link, #1 } { #2 } \group_end: } \NewDocumentCommand \Conceptsname { O {} m } % { s t {+} O {element} D () { and } D <> {#6} m } { \group_begin: \bool_set_true:N \l__chronosdoc_uc_bool \__chronosdoc_name:nn { font=\ConceptFont, type=element, lluosog, #1 } { #2 } \group_end: } \NewDocumentCommand \Keysname { O {} m } { \group_begin: \bool_set_true:N \l__chronosdoc_uc_bool \__chronosdoc_name:nn { font=\KeyFont, link, lluosog, link, #1 } { #2 } \group_end: } \NewDocumentCommand \Conceptname { O {} m } % { s t {+} O {element} D () { and } D <> {#6} m } { \group_begin: \bool_set_true:N \l__chronosdoc_uc_bool \__chronosdoc_name:nn { font=\ConceptFont, type=element, #1 } { #2 } \group_end: } \NewDocumentCommand \Pkgname { O {} m } % { s t {+} O {element} D () { and } D <> {#6} m } { \group_begin: \bool_set_true:N \l__chronosdoc_uc_bool \__chronosdoc_name:nn { font=\PkgFont, no link, type=pkg, #1 } { #2 } \group_end: } \NewDocumentCommand \fortags { s o m }{ \group_begin: \hfill ~ { \macrolabelfont \clist_use:nn { #3 } { , ~ } } \IfBooleanT { #1 } { \clist_map_inline:nn { #3 } { \@nameuse{Special\Taglabelname Index}{\string\sffamily\space ##1}% } } \IfValueT { #2 } {% #1 type #2 list of prefixes (possibly empty) #3 list of key names \keys_set:nn { chronos doc / name }{ #2 } \__chronosdoc_hypertargets:VnV \l__chronosdoc_type_tl { #3 } \l__chronosdoc_names_clist } \group_end: } \NewDocumentCommand \chronosdocindex { m } { \doc@providetarget{\HD@target} \@bsphack \begingroup \@sanitize \@wrindex{#1\doc@handleencap{discussion}}% sylwad Ulrike Fischer: https://tex.stackexchange.com/questions/695800/how-can-i-get-exactly-one-space-in-idx-i-know-how-to-get-two-or-none-but-not?noredirect=1#comment1727576_695800 } %^^A addaswyd o doc.sty - usage \@ifundefined{discussion}{\def\discussion#1{\textup{#1}}}{} \def\usage#1{\textit{\textbf{#1}}} \patchcmd{\@doc@describe}{\@nameuse{Special#1Index}{#2}}{ \clist_map_inline:nn { #2 } { \@nameuse{Special#1Index}{##1} } }{\PackageInfo{chronosdoc}{Patched ~ \textbackslash @doc@describe.}}{\PackageWarning{chronosdoc}{Patching ~ \textbackslash doc@describe ~ failed ~ on }} \NewDocumentCommand \keysx { O {Keys} m}{\par #1:~ {\raggedright #2\par}} \NewDocumentCommand \loadlist { O {Packages} +m } { \group_begin: \par \noindent \seq_set_from_clist:Nn \l_tmpa_seq { #2 } #1: \begin {itemize} \item \seq_use:Nn \l_tmpa_seq { \item } \end{itemize} \group_end: } \newcommand*\val[1]{{\ttfamily = \__chronosdoc_arg_spacer: \meta{#1}}} %^^A \newcommand*\valcy[1]{{\ttfamily = \meta{\cymraeg{#1}}}} \newcommand*\valmarg[1]{{\ttfamily = \__chronosdoc_arg_spacer: \marg{#1}}} \newcommand*\valsmarg[1]{{\ttfamily = \__chronosdoc_arg_spacer: \marg{\vals{#1}}}} \newcommand*\valmargcy[1]{{\ttfamily =\marg{\cymraeg{#1}}}} \NewDocumentCommand \chronosdochyperlink { m } { \group_begin: \__chronosdoc_hyperlink:n { #1 } \group_end: } \NewDocumentCommand \chronosdochypertargets { s t{+} O { \texttt } mmm } { %% #1 - for 'invisible' target or * for typeset %% #2 + typeset all targets (if *) or - typeset only the first (if *) %% #3 text font command %% #4 type e.g. key (empty OK) %% #5 list of prefixes (empty OK) e.g. life,event,period %% #6 list of key names e.g. at,place below,tag anchor \group_begin: \IfBooleanTF { #2 } { \bool_set_false:N \l__chronosdoc_firstonly_bool }{ \bool_set_true:N \l__chronosdoc_firstonly_bool } \IfBooleanTF { #1 } {% #1 type #2 list of prefixes (possibly empty) # list of key names #4 text font command \__chronosdoc_hypertargets:nnnN { #4 } { #5 } { #6 } #3 }{ \__chronosdoc_hypertargets:nnn { #4 } { #5 } { #6 } } \group_end: } \NewDocumentCommand \idxeg { } {\textrm{\textdagger}}% \string\textrm{(e.g.) \cs_new_eq:NN \IfTLEqualF \tl_if_eq:eeF \ExplSyntaxOff \DeclareRobustCommand \ConceptFont {% \not@math@alphabet\ConceptFont\relax \normalfont\sffamily\normalcolor} \DeclareRobustCommand \PkgFont {% \not@math@alphabet\PkgFont\relax \normalfont\sffamily\normalcolor} \DeclareRobustCommand \KeyFont {% \not@math@alphabet\KeyFont\relax \normalfont\ttfamily\normalcolor} \DeclareRobustCommand \macrolabelfont{\not@math@alphabet\macrolabelfont\relax\normalfont\footnotesize\em\normalcolor} \DeclareTextFontCommand \textconcept {\ConceptFont} \DeclareTextFontCommand \textpkg {\PkgFont} \DeclareTextFontCommand \textkey {\KeyFont} \DeclareTextFontCommand \textmacrolabel{\macrolabelfont} \newcommand*\pkg[1]{\textpkg{#1}} \newcommand*\Pkg[1]{\textpkg{\MakeUppercase#1}} \newcommand*\lib[1]{\textpkg{#1}}%\expandafter\chronos@index{\liblabelname a}{\liblabelname}{#1}} %^^A END document fns >>> \chronosdoccreulabel{macro} \chronosdoccreulabel[environment]{env} \chronosdoccreulabel[package]{pkg} \chronosdoccreulabel[package option]{pkgopt} \chronosdoccreulabel[dimension]{dimen} \chronosdoccreulabel*[class]{cls} \chronosdoccreulabel*[classes]{clss} \chronosdoccreulabel[colour list]{collist} \chronosdoccreulabel[colour scheme key]{colschemekey} \chronosdoccreulabel{concept} \chronosdoccreulabel[bool]{boolean} \chronosdoccreulabel{label} \newcommand*\PrintLabelName[2][\normalfont\normalsize\normalcolor]{#1#2} \newcommand*\liblabelname{pgf/ti\string\emph{k}z library} \newcommand*\libslabelname{pgf/ti\string\emph{k}z libraries} \newcommand*\pgfkeylabelname{pgf/ti\string\emph{k}z key} \newcommand*\keyval[1]{\texttt{#1}} \NewDocElements{% boolkey|boolean key,% choice|choice key,chronosstyle|chronos style,colour,clistkey|comma-separated list key,colkey|colour key,collistkey|colour list key,colscheme|colour scheme,coord|coordinate,% datekey|date key,dateformat|date format key,dimkey|dimension key,% element,% key,keyhandler|key handler,keytype|key type,% layer,% node, prog|programme,% style,% tag% } \renewenvironment{theindex} {% \twocolumn[\section*{\indexname} \addcontentsline{toc}{section}{\indexname}% \emph{% Features are sorted by kind. Numbers written in bold italics refer to the pages containing the main descriptions of the corresponding entries. Numbers underlined refer to the code lines where the entries are defined. Upright numbers refer to pages containing additional comments, discussion or examples of usage or to line numbers for usage in the code\texsethanks*[help with indexing]{David Carlisle and Ulrike Fischer}{695555}. \textup{\textdagger} indicates an example of usage.% }\bigskip ]\chronosdocrestorefn \markboth{\indexname}{}% %^^A {\indexname}% \pagestyle{fancy}% \thispagestyle{fancy}% \parindent\z@ \parskip\z@ \@plus .3\p@\relax \let\item\@idxitem} {} \renewcommand\glossary@prologue{% \section *{{\changehistoryname}}\markboth {{\changehistoryname}}{}% } \lstdefinestyle{lstchronos}{% modified from style used by doctools.sty for the latexcode environment style=lstDemoStyleLaTeXCode,%lstDemoStyleLaTeXCode,%lstDocStyleBase, gobble=2, texcsstyle=\color{doc@keywordcolor}, moretexcs={chronoslife,chronosevent,chronosperiod,chronostheory,chronostheorycircle,chronosinfo,chronosmaintitle,chronosset,chronosnewcolourscheme,chronosnewcolorscheme,draw,chronosshowpreset,chronosshowcolour,chronosshowcolor,chronosshowfeatures}, %^^A morekeywords={% %^^A timeline,border, %^^A colours,colour,color,colors, %^^A levels, %^^A major,minor,step, %^^A date,dates,year,years,era,eras, %^^A mark,marks,bare, %^^A frame, %^^A foreground,overlay,background,main, %^^A life,event,period,theory,info, %^^A connect,connection,connections,connectors,connector, %^^A line,lines, %^^A tag, %^^A name, %^^A at, %^^A birth,death,start,%end, %^^A sizes, %^^A labels, %^^A placeholder, %^^A placeholders, %^^A }, %^^A morekeywords={text tag,text tags,tag anchor,as is,{place above},place below,connections on,lines on,middle ground,border on,timeline on,timeline width,timeline height,timeline margin,timeline inner margin,frame,only years,no connections,event years on line,event year on line,step major year,step minor year,step year,step from year,bce year label,bce label,ce label,ce year label,step divisions,step minor years,step major years,step years,outer colour,outer color,inner colour,inner color,middle colour,middle color,dates content,name content,text content,circle texts,colour rotation,color rotation,no colour rotation,no color rotation,rotate all colours,rotate all colors,colours above,colours below,colors above,colors below,without eras,full dates,only years,only text,default colour,default color}, numbers=none, stringstyle=\color{doc@stringcolor}, keywordstyle=\color{chronosWildStrawberry}\bfseries,%\color{doc@keywordcolor} commentstyle=\color{doc@commentcolor}, backgroundcolor=\color{doc@demo@backcolor}, rulecolor=\color{doc@rulecolor}, frame=none, } \lstdefinestyle{lstchronosframe}{% modified from style used by doctools.sty for the latexcode environment style=lstchronos,%lstDemoStyleLaTeXCode,%lstDocStyleBase, frame=single, % none, leftline, topline, bottomline, lines %% single, shadowbox framesep=3pt, rulesep=2pt, % control the space between frame and listing %% and between double rules. framerule=0.4pt, % controls the width of the rules. } \lstloadlanguages{[LaTeX]TeX} \lstnewenvironment{chronoscode}[1][]{\lstset{style=lstchronosframe,morekeywords={#1}}}{} \lstnewenvironment{codchronos}[1][]{\lstset{style=lstchronos,morekeywords={#1}}}{} \lstnewenvironment{codlatex}[1][]{\lstset{style=lstDemoStyleLaTeXCode,gobble=2,frame=none,morekeywords={#1}}}{} \lstnewenvironment{latexcode}[1][]{\lstset{style=lstDemoStyleLaTeXCode,gobble=2,morekeywords={#1}}}{}% \RenewDocumentCommand \lstnewenvironment { moomm }{\relax} \IfFreeT \chronosdocidxheadfont {\let\chronosdocidxheadfont\doctools@indexHeadFont}% %^^A GWALL!! %^^A\newif\ifchronosdoctemp %^^A\chronosdoctempfalse \AtBeginDocument{% \RenewDocumentCommand {\Default} { s o g }{% addaswyd o doctools.sty \IfValueTF {#2} {% \edef\tempa{empty}\edef\tempb{#2}% byddai'n well i brofi #3 ond dw i ddim yn sicr sut i wneud felly \ifx\tempa\tempb\def\tempc{empty}\let\tempd\@empty\else\def\tempd{ (#2)}\def\tempc{dependent on other options}\fi }{\def\tempc{dependent on other options}\def\tempd{}}% \par Default: % \IfValueTF {#3} {% \texttt{#3}% }{% \tempc }% \tempd \IfBooleanF {#1} {\par}% }% } \NewDocumentCommand {\Initial} { s o g }{% addaswyd o doctools.sty \IfValueTF {#2} {% \edef\tempa{empty}\edef\tempb{#2}% byddai'n well i brofi #3 ond dw i ddim yn sicr sut i wneud felly \ifx\tempa\tempb\def\tempc{empty}\let\tempd\@empty\else\def\tempd{ (#2)}\def\tempc{dependent on other options}\fi }{\def\tempc{dependent on other options}\def\tempd{}}% \par Initially: % \IfValueTF {#3} {% \texttt{#3}% }{% \tempc }% \tempd \IfBooleanF {#1} {\par}% } \NewDocumentCommand \texsethanks { s +O {providing the code implementing this} m m } {% \begingroup \IfBooleanTF { #1 }{% \chronosdocidxfn{I am grateful to #3 for #2 at \protect\href{https://tex.stackexchange.com/a/#4/}{\protect\TeX{} StackExchange: #4}.}% }{% \footnote{I am grateful to #3 for #2 at \href{https://tex.stackexchange.com/a/#4/}{\TeX{} StackExchange: #4}.}% }% \endgroup } \NewDocumentCommand \texseans { s +O {Based on} +D () {my} m } {% \IfBooleanTF {#1} {% \href{https://tex.stackexchange.com/a/#4/}{\TeX{} SE: #4}% }{% \footnote{#2 #3 answer at \href{https://tex.stackexchange.com/a/#4/}{\TeX{} StackExchange: #4}.}% }% } \geometry{headheight=12pt,marginparwidth=45mm,hmarginratio=4:1,vscale=.8,hscale=.7,verbose} \newlength\tewadjust \setlength\tewadjust{\marginparwidth+\marginparsep-\paperwidth+\textwidth+\oddsidemargin+1in} \newlength\chronosdoctemplgth \setlength\chronosdoctemplgth{0pt} \newcommand*\TikZ{Ti\emph{k}Z} \newcommand*\PGF{PGF} \newcommand*\pgf{PGF} \fancypagestyle{fancy}{% \fancyhf{}% \fancyhf[lh]{\textit{\leftmark}}% \fancyhf[rh]{% %^^A \IfTLEqualF { \leftmark } { \rightmark } {\textit{\rightmark}}% \ifx\leftmark\rightmark\relax \else \textit{\rightmark}% \fi }% \fancyhf[cf]{\textit{--- \thepage{} of \lastpage{} ---}}% \let\headrulewidth\chronosdocheadrulewidth } \fancypagestyle{fancyplain}{% \fancyhf{}% \fancyhf[lh]{\textit{\leftmark}}% \fancyhf[rh]{\textit{\rightmark}}% %^^A \renewcommand*\headrulewidth{0pt}% \let\headrulewidth\chronosdocheadrulewidth \fancyhf[cf]{\textit{--- \thepage{} of \lastpage{} ---}}} \fancypagestyle{plain}{% \fancyhf{}% \renewcommand*\headrulewidth{0pt}% \fancyhf[cf]{\textit{--- \thepage{} of \lastpage{} ---}}} \fancypagestyle{fancyempty}{% \fancyhf{}% \renewcommand*\headrulewidth{0pt}} \AddToHookNext{begindocument/end} {% \let\chronosdocheadrulewidth\headrulewidth \pagestyle{fancy}% \thispagestyle{plain}% } \setcounter{secnumdepth}{5} \patchcmd{\sectionmark}{\MakeUppercase}{}{\typeout{sectionmark patched OK!}}{\typeout{sectionmark patch failed!}} \patchcmd{\HDorg@tableofcontents}{\MakeUppercase}{}{\typeout{sectionmark patched OK!}}{\typeout{sectionmark patch failed!}} \patchcmd{\HDorg@tableofcontents}{\MakeUppercase\contentsname}{}{\typeout{sectionmark patched OK!}}{\typeout{sectionmark patch failed!}} %^^A addaswyd o pethau-cfr.sty, cleveref.cfg \newlist{chronosmethod}{enumerate}{2} \setlist[chronosmethod,1]{label=\textbf{Method \arabic*:},ref=\arabic*,wide} \setlist[chronosmethod,2]{label=\textbf{(\alph*)},ref=\thechronosmethodi(\alph*),wide} \crefname{chronosmethodi}{method}{methods} \crefname{chronosmethodii}{method}{methods} %^^A why does floatpag insist on doing this? \floatpagestyle{fancy} \rotfloatpagestyle{fancy} \ExplSyntaxOn \hook_gput_code:nnn {shipout/lastpage} {.} { \property_record:nn {t:lastpage}{abspage,page,pagenum} } \cs_new_protected_nopar:Npn \lastpage { \property_ref:nn {t:lastpage}{page} } \keys_define:nn { chronos / doc } { unknown .code:n = { \cs_if_free:cT { \l_keys_key_str } { \tl_gset:cn { \l_keys_key_str } { #1 } } }, } \NewDocumentCommand \chronosdocset { +m } { \keys_set:nn { chronos / doc } { #1 } } %^^A PAID â defnyddio \pkg yma!! %^^A neu \let\lpack\textsf neu ... \hook_gput_code:nnn { begindocument/end } { chronosdoc } {%^^A \ExplSyntaxOn \NewCommandCopy \lpack \textsf \text_declare_purify_equivalent:Nn \lpack { \use:n } \pdfstringdefDisableCommands{ \let\lpack\@firstofone } \ExplSyntaxOff } \ExplSyntaxOff \chronosdocset{% bug={\href{https://codeberg.org/cfr/chronos/issues}{\textsc{bugtracker}}}, codeberg={\href{https://codeberg.org/cfr/chronos}{\textsc{codeberg}}}, github={\href{https://github.com/cfr42/chronos}{\textsc{github}}}, ctan={\href{https://ctan.org/}{\textsc{ctan}}}, } \definecolor{strawberry}{rgb}{1.000,0.000,0.502} \definecolor{blueberry}{rgb}{0.000,0.000,1.000} \definecolor{moss}{rgb}{0.000,0.502,0.251} \def\@xobeysp{\leavevmode\penalty100\ } \makeatother \errorcontextlines=10 %^^A END preamble >>> \begin{document} %^^A paid â defnyddio'r llinell nesaf - lladdu gwagiau mewn enwau pethau yn \PrintDescribe pan i'r macro wedi cael ei greu gyda \NwwDocElements yn lle \NewDocElement ... %^^A \let\MakePrivateLetters\MyMakePrivateLetters \DocInput{\chronosdocfilename} %^^A\DocInput{\chronosdocbase-code.dtx} \ifchronoscodetoo %^^A \def\mybasename#1.#2\nil{#1}% %^^A \ExpandArgs {e} \DocInput{\expandafter\mybasename\filename.a\nil-code.dtx} \DocInput{\chronosfilebase-code.dtx} \fi \end{document} % % \fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \newgeometry{headheight=12pt,scale=.8,marginparwidth=0pt,marginparsep=0pt}% % \savegeometry{safonol}% % \setlength\tewadjust{\marginparwidth+\marginparsep}% % \fancyheadoffset[lh]{0pt}%^^A REQUIRED - do NOT remove this line!! % \pagenumbering{arabic}% % \title{\lpack{\chronosfilebase}} % \author{Clea F. Rees\thanks{% % Bug tracker: % \href{https://codeberg.org/cfr/chronos/issues}{\url{codeberg.org/cfr/chronos/issues}} % \textbar{} Code: % \href{https://codeberg.org/cfr/chronos}{\url{codeberg.org/cfr/chronos}} % \textbar{} Mirror: % \href{https://github.com/cfr42/chronos}{\url{github.com/cfr42/chronos}}% % }} % \date{\chronosfileversion\ (\textsc{svn} \chronosfilerev)}% %^^A \title{\chronosdocbase}% % \maketitle % \bigskip % \IfFreeT\bce{\let\bce\bceyearlabel}% % \IfFreeT\ce{\let\ce\ceyearlabel}% % % \begin{abstract} % \noindent \pkgname[link=false]{chronos} is a \LaTeXe{} package, based on \keyname[type=pkg,idx as=PGF,no link]{\PGF{}}/\keyname[type=pkg,idx as=TikZ,no link]{\TikZ{}}, for typesetting timelines or chronologies. % Externalisation is supported out-of-the-box with \pkg{memoize}. % The package developed from two sources: first, the creation of a timeline for use in teaching\footnote{See \href{https://tex.stackexchange.com/a/215082/}{this answer on \TeX{} StackExchange} or \href{https://cfrees.files.wordpress.com/2014/10/timeline-orig.pdf}{view the PDF}.} and, second, questions on \href{https://tex.stackexchange.com/}{tex.stackexchange.com} concerning obstacles encountered in using existing packages. % This package might be considered an attempt to use the former to partially remedy the latter. % It also means both the code and the user-interface contain strange and tangled regions where the wild errors may grow. % \end{abstract} % \bigskip % %^^A \iffalse % \begin{figure}[!b] %^^A <<< % \edef\tempa{0000/00/00}\edef\tempb{\chronosdocdate} % \ifx\tempa\tempb\relax % \else % \setlength\chronosdoctemplgth{\textwidth}%^^A % \def\tempa#1/#2/#3\nil{#1}%^^A % \edef\chronosdocyear{\expandafter\tempa\chronosdocdate\nil}%^^A % \def\tempa#1/#2/#3\nil{#2}%^^A % \edef\chronosdocmonth{\expandafter\tempa\chronosdocdate\nil}%^^A % \def\tempa#1/#2/#3\nil{#3}%^^A % \edef\chronosdocday{\expandafter\tempa\chronosdocdate\nil}%^^A % \begin{adjustwidth}{-3em}{-3em} % \centering % \hypersetup{urlcolor=chronos current tag colour!75!black}%^^A % \mmzset{disable}%^^A galluogi hyperlinks % \begin{chronos} % [ % blues below, % timeline={%^^A % dates={2014-07-01}:{\year-\month-\day}, % width=\chronosdoctemplgth+35pt, % step major years=1, % step minor years=0, % step divisions=4, % }, % text tags+={align=left,font=\sffamily}, % every text tag connectors+={fill=##1,circle,minimum size=2.5pt,inner sep=0pt,anchor=center}, % every main text tag connectors+={yshift=-\chronosbaselineskip}, % levels=0:11, % tag right/.chronos key maker={tag right}{style 2 args}{%^^A % at/.expand once=level -##1.south -| ##2, % tag anchor=north west, % anchor=south west, % xshift=5pt, % connectors=east, % }, % tag left/.chronos key maker={tag left}{style 2 args}{%^^A % at/.expand once=level -##1.south -| ##2, % tag anchor=north east, % anchor=south east, % xshift=-5pt, % text tag+={align=right}, % }, % tag post/.chronos key maker={tag post}{style}{%^^A % at=level -##1.south -| chronos end, % tag anchor=north west, % anchor=south east, % connect=false, % connectors=east, % }, % without eras, % event/full dates, % ] % \chronosevent{%^^A % date={2014-07-13}, % name=wphilcommit, % name content={Begin Philosophy Timeline}, % tag right={11}{wphilcommit}, % } % \chronosperiod{%^^A % dates={2014-07-13}:{2014-11-16}, % name=wphildev, % name content={Western Philosophy Timeline Development}, % tag right={10}{wphildev}, % } % \chronosevent{%^^A % tag right={9}{wphil}, % date={2014-11-16}, % name=wphil, % name content={\href{https://cfrees.files.wordpress.com/2014/10/timeline-orig.pdf}{Western Philosophy} \href{https://cfrees.files.wordpress.com/2014/10/timeline-orig.pdf}{Timeline} Finalised: \texseans*{215082}}, % } % \chronosevent{ % date={2016-03-26}, % name=first, % name content={Not-\pkgname[no link]{chronosys}: \texseans*{300910}}, % tag right={8}{first} % } % \chronosevent{ % date={2016-06-02}, % name=second, % name content={Second not-\pkgname[no link,no idx]{chronosys}: \texseans*{312735}}, % tag right={7}{second}, % } % \chronosevent{ % date={2016-08-10}, % name=siml, % name content={\keyname[type=chronosstyle,idx post=development]{off line simple}: \texseans*{324106}}, % tag right={6}{siml}, % } % \chronosevent{ % name content={\keyname[type=chronosstyle,idx post=development]{date centric}: \texseans*{324448}}, % date={2016-08-12}, % name=dcentric, % tag right={5}{dcentric}, % } % \chronosevent{ % name content={\keyname[type=chronosstyle,idx post=development]{lines on line}: \texseans*{324453}}, % name=lol, % date={2016-08-12}, % tag right={4}{lol}, % } % \chronosevent{ % date={2016-08-12}, % name=dformats, % name content={Date Formats: \texseans*{324454}}, % tag right={3}{dformats}, % } % \chronosevent{ % date={2016-08-15}, % name=zero, % name content={No Year Zero: \texseans*{324857}}, % tag right={2}{zero}, % } % \chronosevent{ % date={2016-08-21}, % name=split, % name content={\keyname[type=chronosstyle,idx post=development]{event splitter}: \texseans*{325890}}, % tag post=10, % } % \chronosevent{ % date={2016-12-06}, % name=dformats2, % name content={Date Formats: \texseans*{342699}}, % tag post=9, % xshift=-5pt, % } % \chronosevent{ % date={2016-12-16}, % name=noeth, % name content={Bare Marks: \texseans*{349236}}, % tag anchor=north west, % at=text tag dformats2.west |- i8.south, % anchor=south west, % connect=false, % connectors=east, % xshift=5pt, % } % \chronosevent{ % date={2016-12-26}, % name=hol, % name content={\keyname[type=cls,no link]{\cls{happyholidays.cls}}:\\\texseans*{345673}\\\texseans*{345674}}, % tag anchor=north west, % at=text tag dformats2.west |- i7.south, % anchor=south west, % connect=false, % connectors=east, % xshift=10pt, % } % \foreach \i/\j/\k in {split/27.5pt/5pt,dformats2/32.5pt/10pt,noeth/37.5pt/15pt,hol/42.5pt/20pt} % { % \coordinate (a) at ([xshift=\j]chronos year 2020); % \coordinate (b) at ([yshift=\k]level -1.south); % \draw [chronos connect=event:\i] (chronos connector \i) |- (b -| a) |- (text tag connector \i); % } % \chronosevent{ % date={{\chronosdocyear}-{\chronosdocmonth}-{\chronosdocday}}, % name content={First CTAN Release}, % name=ctan, % tag left={1}{ctan}, % font=\sffamily\bfseries, % connectors={west,south}, % } % \draw [chronos connect=event:hol] (connector hol1) -| ([xshift=5pt,yshift=5pt]tag hol.north east) coordinate (g) -| ([xshift=-5pt]tag hol.west |- connector ctan1.90) coordinate [midway] (h) -- (connector ctan1); % \foreach \i/\j/\n in {%^^A % noeth/5pt/112,%^^A % dformats2/5pt/135, % split/2.5pt/157%^^A % } {%^^A % \draw [chronos connect=event:\i] (connector \i1) -- ++(\j,0pt) |- ([xshift=2.5pt,yshift=2.5pt]h) coordinate [midway] (g) coordinate (h) -- (h |- connector ctan1.\n) -- (connector ctan1); % } % \foreach \i/\j/\k/\l/\m in {%^^A % zero/20pt/5pt/5pt/180,%^^A % dformats/18pt/7.5pt/7pt/202, % lol/16pt/10pt/9pt/225, % dcentric/14pt/12.5pt/11pt/247, % siml/12pt/15pt/13pt/270%^^A % } % { % \coordinate (a) at ([xshift=\j]chronos year 2020); % \coordinate (b) at ([yshift=-\k]level -11.north); % \coordinate (c) at ([xshift=\l]chronos end); % \draw [chronos connect=event:\i] (connector \i1) -| (a |- b) -| ([yshift=2.5pt]h -| c) -- ([xshift=2.5pt,yshift=2.5pt]h) coordinate (h) -- (h |- connector ctan1.\m) -- (connector ctan1); % } % \foreach \i/\j/\k/\l in {%^^A % second/10pt/17.5pt/west, % first/8pt/20pt/south west, % wphil/6pt/22.5pt/south, % wphildev/4pt/25pt/south east, % wphilcommit/2pt/27.5pt/east%^^A % } % { % \coordinate (a) at ([xshift=\j]chronos year 2020); % \coordinate (b) at ([yshift=-\k]level -11.north); % \draw [chronos connect=event:\i] (connector \i1) -| (a |- b) -| ([yshift=2.5pt,xshift=2pt]c |- h) coordinate (c) coordinate (h) -- (h -| connector ctan2.\l) -- (connector ctan2); % } % \coordinate (a) at ($(first)!.5!(wphil)$); % \chronosmaintitle{%^^A % name=chronos main title, % name content=C\\H\\R\\O\\N\\O\\S, % at=a |- i1, % anchor=north, % font=\LARGE\bfseries, % draw=chronos timeline foreground colour, % double=chronos timeline background colour, % } % \chronoscopyright{%^^A % at=current bounding box.south west, % tag anchor=north west, % } % \end{chronos} % \caption{\Pkg{chronos} development: a \pkg{chronos} \conceptname{timeline} (\cref{sec:anatomy,subsec:llinell-amser}) with \chronosstylelabelname{} \keyname[type=chronosstyle,no link,idx post=example of]{blues below} (\cref{subsubsec:chronos-styles-off-line}) and custom \styleslabelname{} \keyname[type=style,no link,idx pre=custom,symbol=eg]{tag left,tag post,tag right} (\cref{subsec:element-style-creation}).}\label{fig:chronos-dev} % \end{adjustwidth} % \fi % \end{figure}%^^A >>> %^^A \fi % \clearpage % % \tableofcontents % % \section{Raison d'être}\label{sec:raisondetre} %^^A BEGIN raisondetre % % \Pkg{chronos} aims to make it easy % \begin{itemize} % \item to specify \conceptname[idx as=timeline,idx post=types drawn by \string\pkg{chronos}]{timelines} covering from days to centuries; % \item to customise a \conceptname[no idx]{timeline}'s appearance using the standard key-value syntax familiar to users of \TikZ{}; % \item to define new \conceptname[no idx]{timeline} styles in a straightforward manner; % \item to utilise a range of \conceptname[no idx]{timeline} styles provided out-of-the-box, including some based on those offered by other packages and/or featured on \url{tex.stackexchange.com}. % \end{itemize} % %^^A END sec:raisondetre %^^A \clearpage % % \section{Caveats, Assumptions \& Limitations}\label{sec:ass} %^^A BEGIN sec:ass % % \subparagraph*{First,} the caveats \dots{} % % \Pkg{chronos} is \emph{experimental}. % Future releases will not make significant backwards-incompatible changes to documented features of the user interface without good reason. % If such changes are made, a compatibility option will be offered, unless there is extremely good reason not to do so. % \emph{This applies \emph{only} to documented features. % It applies to \emph{neither} undocumented features \emph{nor} the implementation details of those documented.} % % \Pkg{chronos} makes some use of undocumented internal \pgf{}/\TikZ{} commands. % % \Pkg{chronos} uses \pkg{etoolbox} to patch certain internal \pgf{}/\TikZ{} commands. % While some of these changes, such as modifications to \texttt{rectangle}\texsethanks{Symbol 1}{385953} are applied only locally, others, including changes to the \enviro{tikzpicture} initialisation code\texsethanks[for this]{Martin Scharrer}{56405}, are made globally. % % \Pkg{chronos} has known incompatibilities with certain standard \pgf{}/\TikZ{} libraries (\cref{sec:compat}). % % \Pkg{chronos} has unknown incompatibilities with other standard and non-standard \pgf{}/\TikZ{} libraries and packages. % These will be documented when discovered. % % \Pkg{chronos} differs substantially from code previously published as \pkg{chronos} on \href{https://tex.stackexchange.com}{\TeX{} StackExchange}. % In particular, the user interface has changed: \pkg{chronos} now uses a key-value interface rather than multiple arguments when adding things to the \conceptname[no idx]{timeline} and the \conceptname[idx post=construction]{timeline} itself is now created by the environment \keyname[type=env,link,idx post=cf.~code posted on \string\TeX ~SE]{chronos}\footnote{Early versions on \TeX{} SE actually used an \envlabelname{}, so this difference applies only to some \pkg{chronos}-based answers there.}. % See \cref{subsec:compat-texse} for guidance on converting existing \conceptname[idx as=timeline,no idx]{timelines}. % % \textbf{\textui{Caveat emptor \dots{}}} % % % \subparagraph*{Second,} (some of) the assumptions \dots{} % % Within the \enviro{chronos} \envlabelname{}, \pkg{chronos} assumes control over \pgf{}/\TikZ{} \conceptname[type=layer,idx as=control over,font=\normalfont]{layers}, disregarding any configuration setup by the user or other packages (\cref{subsec:haenau}). % This means you cannot use additional, custom \conceptname[type=layer,idx as=layer,no idx]{layers} in \enviro{chronos} environments unless you integrate them appropriately with \pkg{chronos}'s changes. % These changes are made locally and do not affect the use of whatever \conceptname[type=layer,idx as=layer,no idx]{layers} you please in a non-\pkg{chronos} environment, such as a regular \enviro{tikzpicture}. % % \textbf{\textui{Caveat emptor \dots{}}} % % \subparagraph*{Third,} (some of) the limitations \dots{} % % The most serious limitation, given \pkg{chronos}'s aims (\cref{sec:raisondetre}), is that you cannot define \styleslabelname{} involving \pkg{chronos} \keyslabelname{} using the standard \pgf{}/\TikZ{} interface, if you want to use them to configure individual additional \elementslabelname{} (\cref{sec:anatomy,sec:macros-add-elements}). % Moreover, the alternative mechanism provided has serious shortcomings (\cref{subsec:element-style-creation}). % % \Pkg{chronos} cannot produce \conceptname[idx as=timeline,idx post=limitations of \string\pkg{chronos}]{timelines} covering hundreds of thousands of years or which need to distinguish temporal units less than a day. % It does days, months, years and centuries; it does not do (many) millennia, hours, minutes or seconds. % % In particular, \pkg{chronos} is not designed to deal with dates outside the current Julian period. % In theory, this means any date from 24\textsuperscript{th} November, 4714\,\bce{} should be permissible, but in fact, 24\textsuperscript{th} November, 4713\,\bce{} is the first date for which the package's behaviour should be relatively well-defined\footnote{%^^A % \pkg{pgfcalendar} says it uses the Wikipedia method, but appears to return dates 1 year later than some Wikipedia specifies e.g.~day 0 gives a date in 4713 exactly a year after Wikipedia's one in 4714. % But Wikipedia itself seems inconsistent, sometimes suggesting a date in 4713 and sometimes the previous year. % For current purposes, the right answer doesn't matter: what matters is that \pkg{pgfcalendar}'s answer is consistent. % This means quibbles about the start date are unimportant (unless you're drawing a \conceptname[no idx]{timeline} starting with Winter Solstice 4714\,\bce{}, of course. % If you are, you might want to look into the matter.)}. % Matters are a little different when it comes to dates in the \emph{next} Julian period. % The cut off date for these is sometime in 3268\,\ce{}, according to Wikipedia, but \pkg{pgfcalendar} appears to be unaware of this. % This means you may be able to get away with later dates, even though they are officially beyond the scope of this package\footnote{That is, it may work, but it isn't a bug if it doesn't.}. % % \Pkg{chronos} draws horizontal \conceptname[idx as=timeline,idx post=chronos\string\textnormal{ draws horizontal},idx font post=\KeyFont]{timelines}. % It does not support alternative orientations. % In particular, vertical \conceptname[idx as=timeline,idx post=chronos\string\textnormal{ does not draw vertical},idx font post=\KeyFont]{timelines} are not currently supported. % % \textbf{\textui{Caveat emptor \dots{}}} % % \subparagraph*{Finally,} the code lacks both the virtues of sophistication and simplicity, while the user interface is characterised by confusion and complexity, the documentation is spotted with lacunae and unclarities, and the index is a conglomeration of misdirection and bull shit\footnote{In what sense ‘bull shit’? Take your pick from any of several technical philosophical senses.}. % % \textbf{\textui{Caveat emptor \dots{}}} % %^^A END sec:ass % % % \section{Typesetting a Timeline}\label{sec:ee} %^^A BEGIN sec:ee % % Further details concerning loading and invocation are explained in \cref{sec:llwytho,sec:invoke}. % The overall structure \pkg{chronos} provides is outlined in \cref{sec:anatomy,subsec:haenau}. % \Cref{sec:schemes-styles} covers simple customisation using \conceptname[idx as={colour scheme,chronos style},no idx]{\colschemeslabelname,\chronosstyleslabelname}. % Detailed configuration of the \conceptname[idx pre={documentation}]{timeline} is explained in \cref{sec:config}. % \Cref{sec:macros-add-elements} covers the addition of \conceptname[idx as=element,type=concept,no idx]{\elementslabelname} such as \conceptname[idx as={life,event,period,theory,info,main title},no idx]{lives,events,periods,theories,info boxes,titles} to \conceptname[idx as=timeline,no idx]{timelines}. % In this \namecref{sec:ee}, we begin by looking at a simple example. % % After loading \pkgname[no link,idx post=typesetting a \string\textconcept{timeline}\string\idxeg]{chronos} in the document preamble: % \begin{chronoscode}[chronos] % % in document's preamble % \usepackage{chronos} % \end{chronoscode} % the \keyname[type=env,idx post=introduction to]{chronos} \envlabelname{} is available for typesetting \conceptname[idx as=timeline,no idx]{timelines}. % \begin{chronoscode}[chronos] % \begin{chronos} % [] % \end{chronos} % \end{chronoscode} % This takes an optional argument used to configure the \conceptname[link,idx post=introduction to]{timeline}. % This determines the size, appearance and duration of the \conceptname[no idx,link]{timeline}, as well as the use of \conceptname[link,idx post=introduction to]{headings,subheadings,frame}. % The body of the \envlabelname{} should consist of material to be added to the \conceptname[no idx,link]{timeline} itself, typically using \pkg{chronos}'s commands for adding \conceptname[conj=and/or,idx as={life,event,period,theory,theory circle,info,main title},idx post=introduction to]{lives,events,periods,theories,theory circles,info boxes,main titles}. % It is also possible to include arbitrary \TikZ{} code in the body of the \envlabelname{}, but commands need to be added to the appropriate \pkg{chronos} \conceptname[type=layer,idx as={adding to appropriate},font=\normalfont]{layer} if they are to have their intended effects. % % % Suppose that we wish to typeset a \conceptname[idx post=history of writing and printing\string\idxeg,link]{timeline} illustrating developments in the history of writing and printing. % Having done exhaustive research utilising a single Wikipedia page, we decide our \conceptname[no idx,link]{timeline} should begin around 3,100\bceyearlabel{} and end in the present. % We're going to use the \chronosstylelabelname{} \keyname[type=chronosstyle,idx post=in example \string\textconcept{timeline}\string\idxeg]{cronoleg}, which puts year markers on the \conceptname[link,no idx]{timeline} itself. % We decide we'd like large markers every 500 years and a smaller marker halfway between each pair of larger ones. % We might, therefore, try % \begin{chronoscode} % \begin{chronos} % [ % cronoleg,% load chronos style % timeline={% configure the timeline 'line' itself % start date={-3100}, % end date=2100, % minor step=250, % major step=500, % }, % levels=10:10, % ] % \end{chronoscode} % This will result in ‘major’ markers (\conceptname[link,idx post=in example \string\textconcept{timeline}\string\idxeg]{marks,years}) at 3,000\bceyearlabel{}, 2,500 \bceyearlabel{} etc.\ and ‘minor’ at 2,750\bceyearlabel{}, 2,250\bceyearlabel{} and so on. % Note that \pkg{chronos} starts the \conceptname[no idx,link]{timeline} at 3,100\bceyearlabel{}, but assumes we'd like the first marker at 3,000\bceyearlabel{}. % \texttt{levels=10:10} will create a series of invisible nodes above and below the \conceptname[no idx,link]{timeline} named \texttt{level 1},\dots{},\texttt{level 10} and \texttt{level -1},\dots{},\texttt{level -10} respectively. % The nodes are constructed so they take the same space as a ‘standard’ \conceptname[link,idx as=\meta{tag}/text tag,link,idx post=in \string\textconcept{timeline}\string\idxeg]{text tag} of ‘\taglabelname{}’ type \conceptname[type=tag,idx post=as basis for \string\textconcept{levels}]{life} created with \keyname[type=macro,idx post=in example \string\textconcept{timeline}\string\idxeg]{\cs{chronoslife}}. % We can refer to these nodes when placing items to facilitate stacking, spacing and packing. % % Based on our exhaustive seconds-long research, we now want to add some items of interest onto our \conceptname[no idx,link]{timeline}. % We decide we'd like to note the lives of significant figures in the development of contemporary typography, most notably Donald Knuth, as well as a few luminaries from the modern era\footnote{%^^A % In my discipline, ‘modern’ means roughly the sixteenth to nineteenth centuries.}. % We'd also like to note certain specific events, such as key publication dates, and processes of longer duration. % \begin{chronoscode} % \chronosevent{% % name=\emph{jikji}, % date=1377 % } % \end{chronoscode} % This will create an \conceptname[type=tag,link,idx font post=\itshape,idx post=Jikji\string\idxeg]{event} in the default style in the default location, just off the \conceptname[no idx,link]{timeline}. % Note that the text displayed in the \conceptname[type=tag,link,no idx]{event}'s node is ‘\emph{Jikji}’. % The coordinate \texttt{jikji} is placed at the point the \conceptname[link,type=concept,idx post=placement of coordinate \string\textkey{jikji}\string\idxeg]{element} is added on the border of the \conceptname[no idx]{timeline}. % The circular \conceptname[link,idx post=chronos connector jikji\string\idxeg,idx font post=\KeyFont]{connector} created at this point is the node \texttt{chronos connector jikji}. % The circular \conceptname[link,no idx]{connector} on the \conceptname[type=tag,no idx,link]{event}'s \conceptname[link,idx pre=event,idx font pre=\ConceptFont,link to=event/text tag,symbol=eg]{text tag} is the node \texttt{main connector jikji}. % The \conceptname[link,link to=event/text tag,idx pre=event,idx font pre=\ConceptFont,no idx]{text tag} itself is the node \texttt{tag jikji}. % As it stands, we may not be able to actually see all these \elementslabelname{} if the \conceptname[link,no idx]{event}'s \conceptname[link,link to=event/text tag,no idx]{text tag} is placed right on the border of the \conceptname[no idx,link]{timeline}. % If \keyname[link,idx=false,type=dimkey]{text tag yshift} is non-zero, \pkg{chronos} will shift the node but, in general, it is necessary to tell \pkg{chronos} where to place the \conceptname[no idx,link,link to=event/text tag]{text tag}. % This doesn't affect the placement of the \conceptname[type=tag,no idx,link]{event} on the \conceptname[no idx,link]{timeline} itself. % \begin{chronoscode} % \chronosevent{% % name=\emph{jikji}, % date=1377, % yshift=20pt, % } % \end{chronoscode} % This will place the \conceptname[link,link to=event/text tag,idx pre=event,idx font pre=\ConceptFont,no idx]{text tag} node due north of the circular \conceptname[link,no idx]{connector} on the \conceptname[link,idx post=placement of \string\textkey{jikji}'s \string\textconcept{connector} relative to\string\idxeg]{timeline} with a straight line connecting the circular \conceptname[idx post=main connector jikji\string\idxeg,idx font post=\KeyFont,link]{connector} nodes \texttt{main connector jikji} and \texttt{chronos connector jikji}. % However, we might also want to shift the \conceptname[link,link to=event/text tag,no idx]{text tag} node horizontally and have the connection drawn to the west or east of the \conceptname[no idx,link,link to=event/text tag]{text tag}. % \begin{chronoscode} % \chronosevent{% % name=\emph{jikji}, % date=1377, % yshift=20pt, % xshift=-5pt, % anchor=east, % } % \end{chronoscode} % will shift the \conceptname[no idx,link,link to=event/text tag]{text tag} \texttt{5pt} to the left and draw the \conceptname[link,idx post=up and left in \string\textkey{jikji}\string\idxeg]{connection} up and left from the \conceptname[no idx,link]{timeline} to \texttt{main connector jikji} which is now drawn \texttt{east} rather than the default \texttt{south}. % % We decide to place a second \conceptname[type=tag,link,idx font post=\itshape,idx post=Diamond Sutra\string\idxeg]{event}, for which we have a precise date. % This time, we use \keyname[link,idx=false,type=boolkey]{as is} to tell \pkg{chronos} not to attempt to capitalise the text. % This is necessary because we have an \cs{emph}\texttt{\{}\meta{word} \meta{word}\texttt{\}} and \pkg{chronos}'s capitalisation command can't cope with this. % This also means we need to add appropriate capitalisation ourselves. % \begin{chronoscode}[as,is] % \chronosevent{% % date={868-05-11}, % name={Publication of \emph{Diamond Sutra}}, % yshift=-40pt, % xshift=20pt, % anchor=west, % as is, % connectors={east,south}, % } % \end{chronoscode} % Note that this \conceptname[idx post=Publication of \string\emph{Diamond Sutra}\string\idxeg,link,type=tag]{event} is placed below the \conceptname[link,idx post=placement of \string\textconcept{event}\string\idxeg]{timeline}. % % We decide to add some notable figures next. % For this, we create \elementslabelname{} of \taglabelname{} type \conceptname[type=tag,idx post=Bi Sheng\string\idxeg]{life}, beginning with the inventor of movable type, Bi Sheng. % \begin{chronoscode}[at] % \chronoslife{% % name=bi sheng, % birth=972, % death=1051, % at=tag jikji.north -| bi sheng, % connectors={east,north}, % } % \end{chronoscode} % Note the use of \keyname[idx=false,link]{at} to place the \conceptname[no idx,type=key,link,link to=event/text tag]{text tag} detailing the name and dates. % Since this node is placed above the \conceptname[link,idx post=placement of \string\textkey{bi sheng}\string\idxeg]{timeline}, its anchor is \texttt{south} by default. % \verb+at=tag jikji.north -| bi sheng+ aligns this anchor directly above the relevant point on the \conceptname[no idx,link]{timeline} (\texttt{bi sheng}) and just on top of \texttt{tag jikji}. % If you want to fit many items onto your \conceptname[no idx,link]{timeline}, fitting them closely together is useful but you could, of course, lift the box higher if you want a bit more space. % % Leaping ahead, we now want to add Donald Knuth\chronosdocidx[type=tag,font=\ConceptFont,idx post=Donald Knuth\string\idxeg]{life}. % \begin{chronoscode} % \chronoslife{% % name=donald knuth, % birth={1938-01-10}, % text tag yshift=40pt, % connectors={west,north}, % } % \end{chronoscode} % Note the omission of \keyname[type=datekey,idx post=omission for living]{death} for a living person. % \Pkg{chronos} assigns today's date internally for placement purposes, but will not typeset it when constructing the \conceptname[link,link to=life/text tag,idx pre=life,idx font pre=\ConceptFont]{text tag}\footnote{\pkg{chronos} is not the most optimistic of packages.} % This works reasonably, but the \conceptname[idx post=crossing nodes]{connection} from the \conceptname[link,idx post=Donald Knuth\string\idxeg]{timeline} crosses the text node for the publication of the \emph{Diamond Sutra} because \pkg{chronos} has placed this item below the \conceptname[no idx,link]{timeline}, even though there is plenty of space above. % This is because, by default, \pkg{chronos} alternates between placement above and below the line. % In this case, we decide to override the default choice. % \begin{chronoscode}[place,above] % \chronoslife{% % name=donald knuth, % birth={1938-01-10}, % text tag yshift=40pt, % connectors={west,north}, % place above, % } % \end{chronoscode} % Note that the \keyname[type=chronosstyle,idx post=colour rotation,idx font post=\ConceptFont]{cronoleg} rotates the colours used for \elementslabelname{} belonging to \taglabelname{} types \conceptname[type=tag,no idx,link]{life,event,period}, but not \conceptname[type=tag,idx post=cronoleg,idx font post=\KeyFont]{theory}, but \collistslabelname{} are rather subdued for \conceptname[type=tag,idx as={event,period},no idx]{events,periods}. % For each type of \elementslabelname{}, one set of colours is used below and another above the \conceptname[no idx,link]{timeline}. % These colours can be accessed later as \texttt{colour }\meta{name}\footnote{%^^A % In most cases, you can also access items using American spelling. % So \texttt{color} would work here. % So would \texttt{lliw}.}. % % \Conceptname[type=concept,link,idx post=Donald Knuth\string\idxeg]{colour rotation} can be switched on or off for particular kinds of \elementslabelname{}, overridden for individual \elementslabelname{} and configured by altering the \collistslabelname{} \pkg{chronos} cycles through. % These colours are tracked by copying them to new names for each \elementlabelname{} created and may be accessed using these names later. % This means you can draw something in the colour assigned to Donald Knuth, say, without knowing which colour that is. % If you add an \elementlabelname{} to the \conceptname[link,no idx]{timeline} or change the \collistslabelname{} later, the drawing will use the appropriate colour. % For example, % \begin{chronoscode}[colour,donald,knuth,tag] % \node (pi) [colour donald knuth, font=\Huge, right=5pt of tag donald knuth.base east, anchor=base west] {$\pi$}; % \end{chronoscode} % will add a large $\pi$ in the colour (automatically or otherwise) assigned to Knuth. % \begin{chronoscode}[colour,tag,donald,knuth] % \draw [colour donald knuth] (tag donald knuth.north) ++(0pt,20pt) circle (10pt); % \end{chronoscode} % would draw a circle above Donald Knuth's \conceptname[link,idx post=Donald Knuth\string\idxeg]{text tag} in the colour automatically assigned to Donald Knuth. % % We next decide to indicate the \conceptname[type=tag,idx post=Woodblock Printing\string\idxeg]{period} when woodblock printing was used to produce books. % This is a \emph{circa} date, so we can't use \pkg{chronos}'s automatic production of the date information, though we still need to specify dates for placement on the \conceptname[link,no idx]{timeline}. % We'd still like \pkg{chronos} to format the name of the \conceptname[link,link to=period/text tag,idx as=period/text tag]{text tag}, though, so we use \keyname[link,link to=period/dates content,idx as=period/dates content]{dates content} to override the automatic production of date labels. % \begin{chronoscode}[dates,content] % \chronosperiod{% % name=woodblock printing, % start=600, % end=1450, % yshift=-20pt, % xshift=10pt, % anchor=west, % dates content={c600--1450\ceyearlabel}, % place below, % } % \end{chronoscode} % If we wanted to override the formatting of the name rather than the dates, we could use\chronosdocidx[type=tag,font=\ConceptFont,idx post=WoOdBlOcK pRiNtInG\string\idxeg]{period} % \begin{chronoscode}[name,content] % name=woodblock printing, % name content={WoOdBlOcK pRiNtInG}, % \end{chronoscode} % If we wanted something completely different in place of the name and date information, we could instead use % \begin{chronoscode}[text,content] % text content={something entirely different\\--- not even about woodblocks!}, % \end{chronoscode} % % \bceyearlabel{} dates require special consideration. % In general, a minus\chronosdocindex{- (minus)\actualchar\texttt{-} (minus)} indicates \bceyearlabel{}, but \pkg{chronos} needs to be able to distinguish this from the hyphen between years and months or months and days in standard date specifications (\cref{subsec:dyddiadau}). % This means either providing a full date of the form \texttt{{-YYYY}-MM-DD}, for example, or ensuring \pkg{chronos} expects only a partial date such as a year. % \begin{chronoscode}[-3100,-2700] % \chronosperiod{% % name=proto-Elamite use of cylinder seals, % start={{-3100}-01-01}, % end={{-2700}-12-31}, % dates content={c3000\,\bceyearlabel}, % yshift=20pt, % connectors=north, % connectors=east, % } % \end{chronoscode} % Here, we protect the \bceyearlabel{} year with curly brackets, specify a default month and day. % If we specified only a year, \pkg{chronos} would assign a month and day; if we assigned only a year and month, \pkg{chronos} would assign a day. % (The outer set of curly brackets is standard and cannot be omitted for full date specifications, regardless of era.) % % We've now added examples of each of the three basic types \pkg{chronos} supports connecting to our \conceptname[link,idx post=complementary \string\textconcept{elements}\string\idxeg]{timeline}. % However, the package also offers some complementary \elementslabelname{}. % These are not connected to the \conceptname[no idx,link]{timeline}, though \conceptname[type=tag,idx as=theory,link,link to=theory,idx post=\string\TeX{}\string\idxeg]{theories} are designed to be connected to the types which are. % \begin{chronoscode} % \chronostheory {% % name=TeX, % text content=\TeX, % at=donald knuth-text.north west, % xshift=-10pt, % anchor=south east, % connectors={east}, % } % \end{chronoscode} % We also want to indicate Knuth's connection with \TeX{}, so we join the \conceptname[idx post=created for Knuth\string\idxeg]{connector} we made when creating the \conceptname[link,link to=life/text tag,idx pre=life,idx font pre=\ConceptFont]{text tag} for Knuth to the \conceptname[idx post=connecting Knuth and \string\TeX\string\idxeg]{connector} we've just created for \TeX{}. % \Pkg{chronos} supports the addition of such \conceptname[idx as=connector,link,link to=connector,idx post=\string\pkg{chronos} support for]{connectors} on most \conceptname[link,link to=text tag,idx as=text tag,idx post=addition of \string\textconcept{connectors} in Donald Knuth\string\idxeg]{text tags} created with its commands and the drawing of \conceptname[idx as=connection,idx post=\string\pkg{chronos} support for]{connections} between \conceptname[idx as=connector,no idx,link,link to=connector,idx post=as supporting \string\textconcept{connections}]{connectors}. % \begin{chronoscode}[chronos,life,connect] % \draw [chronos connect=life:donald knuth] (connector donald knuth) -- ++(-5pt,0pt) |- (connector TeX); % \end{chronoscode} % This makes it possible to connect multiple people to the same \conceptname[link,type=tag,idx post=connecting multiple people to]{theory}, for example, as well as connecting a single person to multiple \conceptname[idx as=theory,idx post=connecting individual to multiple]{theories}. % In a more complete chronology, several different font designers or book publishers, for example, might be connected with a particular approach to typography. % \Elementslabelname{} which support \conceptname[idx as=connector,link,link to=connector,idx post=elements \string\textnormal{which support},idx font post=\ConceptFont]{connectors} out-of-the-box are those belonging to \conceptname[type=concept,idx as=tag,link,link to=tag,idx post=support for \string\textconcept{connectors}]{tags} of types \conceptname[type=tag,link,idx post=as supporting \string\textconcept{connectors}]{life,event,period,theory}. % % When \keyname[link,idx=false,type=chronosstyle,idx post=style of \string\textconcept{connectors}]{cronoleg} is used, \conceptname[idx as=connector,link,link to=connector,idx post=style in \textkey{cronoleg}]{connectors} are small circular nodes on the \conceptname[link,no idx]{timeline}'s \conceptname[link]{border} and the borders of \conceptname[idx as=text tag,link,link to=text tag,idx post=purpose]{text tags} i.e.~the nodes containing information about the \pkg{chronos} \elementslabelname{} presented in the chronology illustrated. % % In contrast, \conceptname[type=tag,idx as=theory circle,link,link to=theory circle,idx post=as lacking \string\textconcept{connectors}]{theory circles}, \conceptname[type=tag,link,idx post=as lacking \string\textconcept{connectors}]{info} (information boxes), \conceptname[type=tag,conj=or,link,idx post=as lacking \string\textconcept{connectors}]{copyleft,copyright} notices and \conceptname[idx as=main title,link,link to=main/main title,idx pre=main,idx font pre=\ConceptFont,idx as=main title \string\textrm{as lacking} connectors]{main titles} are freestanding objects without ready-made \conceptname[idx as=connector,link,link to=connector,idx font post=\ConceptFont,idx post=tags \string\textrm{lacking support for}]{connectors}. % % \Conceptname[link,idx post=purpose]{headings,subheadings} are designed to label stretches of time and are placed in relation to the \conceptname[link,no idx]{timeline}, though no connecting lines are drawn. % % When we've finished adding material to the \conceptname[no idx,link]{timeline}, of course, we need to complete it. % \begin{chronoscode} % \end{chronos} % \end{chronoscode} % %^^A END sec:ee % % \restoregeometry % \setlength\tewadjust{\marginparwidth+\marginparsep-\paperwidth+\textwidth+\oddsidemargin+1in}% % \fancyheadoffset[lh]{\tewadjust}% % \section{Loading the Package}\label{sec:llwytho} %^^A BEGIN sec:llwytho % % \Pkg{chronos} requires a \LaTeXe{} format no older than 2021--11--15. % To load the package simply add the following to your document's preamble. % \begin{chronoscode} % \usepackage{chronos} % \end{chronoscode} % \Pkgname[no link,idx post=dependencies]{chronos} will load the following packages and libraries automatically: % \loadlist[Packages]{% % {\pkgname[no link]{calc}}, % {\pkgname[no link]{chronos-lib-colschemes} (part of \pkgname[idx post=chronos-lib-colschemes,idx font post=\PkgFont]{chronos})}, % {\pkgname[no link]{chronos-lib-styles} (part of \pkgname[idx post=chronos-lib-styles,idx font post=\PkgFont]{chronos})}, % {\pkgname[no link]{etoolbox}}, % {\pkgname[no link]{expl3} (if required)}, % {\pkgname[no link]{fp}}, % {\pkgname[no link]{pgfcalendar}}, % {\pkgname[no link]{svn-prov}}, % {\pkgname[no link]{tikz}}, % {\pkgname[no link]{xcolor}}, % {\pkgname[no link]{xparse} (for \LaTeXe{} formats prior to 2020--10--01)}% % } % \loadlist[\PGF/\TikZ{} libraries]{% % {\pkgname[type=lib,no link]{arrows.meta}}, % {\pkgname[type=lib,no link]{backgrounds}}, % {\pkgname[type=lib,no link]{calc}}, % {\pkgname[type=lib,no link]{decorations.text}}, % {\pkgname[type=lib,no link]{fit}}, % {\pkgname[type=lib,no link]{fixedpointarithmetic}}, % {\pkgname[type=lib,no link]{positioning}}, % {\pkgname[type=lib,no link]{shadows}}} % %^^A \hypersetup{next-anchor=boolkey:simple-colour-names}% % \DescribeBoolkey{simple colour names,no simple colour names,simple color names,no simple color names}\vals{true,false}\AfterLastParam %^^A \ExpandArgs {e} \DescribeBoolkey{simple colour names,no simple colour names,simple color names,no simple color names}\vals{true,false}\AfterLastParam % The only two options currently supported are \keyname[type=pkgopt,conj=or,no link]{\option{simple colour names},\option{simple color names}} and its complement \keyname[type=pkgopt,conj=or,no link]{\option{no simple colour names},\option{no simple color names}}. % The following are equivalent: % \begin{chronoscode} % \usepackage{chronos} % \usepackage[simple colour names]{chronos} % \usepackage[simple colour names=true]{chronos} % \usepackage[no simple colour names=false]{chronos} % \end{chronoscode} % In these cases, \pkg{chronos} will create an additional \conceptname[type=colour,idx as=with \string\texttt{simple colour names}, font=\normalfont]{colour} for each \conceptname[type=concept,idx pre=element,idx as=additional,font=\normalfont,idx font pre=\ConceptFont]{additional element} of \conceptname[type=concept,no idx,link]{tag}-type \conceptname[type=tag,conj=or,idx post=effect of \string\textkey{simple colour names} on]{life,event,period,theory,info} named \meta{name}, where \meta{name} is the value given to \keyname[idx=false,link]{name} when creating the \elementlabelname{}. % % Since \pkg{chronos} creates these \keyname[type=colour,idx as=simple colour names,idx post=disabling,no link]{colours} globally, this is potentially problematic. % To disable it use any of the following % \begin{chronoscode} % \usepackage[no simple colour names]{chronos} % \usepackage[no simple colour names=true]{chronos} % \usepackage[simple colour names=false]{chronos} % \end{chronoscode} % % If you want to disable such names later, perhaps for specific \conceptname[idx as=timeline,link,link to=timeline,no idx]{timelines}, see \cref{subsec:lliwiau}. % %^^A END sec:llwytho % % \section{Invocation}\label{sec:invoke} %^^A BEGIN sec:invoke % \DescribeEnv{chronos}\oarg{chronos preamble}\AfterLastParam % The \conceptname[type=concept,no link,target]{\meta{chronos preamble}} is a \meta{key-value list} setting any non-default options which should be applied to the \conceptname[type=concept,target]{timeline} and any other macro-level elements of the picture to be constructed. % At a minimum, most users will want to specify start and end dates, but the majority will likely want to customise the \conceptname[no idx,link]{timeline} further. % (If you do not much care about customisation, there are simpler packages to typeset \conceptname[idx as=timeline,no idx]{timelines}!) % % Some options can be given only \emph{in or before} the \conceptname[type=concept,no link,target]{\meta{timeline specification}} in the optional \conceptname[type=concept,no idx,link]{\meta{chronos preamble}}. % Others will have no effect or unwanted effects at this point and must be specified later. % % {\em % {\bfseries % The environment \keyname[link,idx=false,type=env]{chronos} is a wrapper for a \keyname[type=env,no link]{tikzpicture}. % It can neither include, nor be included in, another \enviro{tikzpicture}. % Additional drawing commands must, therefore, be included in \enviro{chronos} itself.% % }% % } % %^^A END sec:invoke % % \loadgeometry{safonol} % \setlength\tewadjust{\marginparwidth+\marginparsep}% % \fancyheadoffset[lh]{0pt}%^^A REQUIRED - do NOT remove this line!! % % \section{Chronos Anatomy}\label{sec:anatomy} %^^A BEGIN sec:anatomy % \Cref{fig:anatomi} provides an overview of the configuration and anatomy of a \pkg{chronos} \conceptname[link,idx post=anatomy]{timeline}. % % As explained in \cref{sec:invoke}, the \conceptname[link,no idx]{timeline} itself is constructed by the \keyname[link,type=env,idx post=as constructing \string\textconcept{timeline}]{chronos} \envlabelname{}, as determined by the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}}, any prior use of \keyname[type=macro,idx post=effect on \string\textconcept{timeline}]{\cs{chronosset}} and fallback defaults. % % In addition to configuring the \conceptname[no idx,link]{timeline} itself, the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} and any prior use of \keyname[type=macro,no idx]{\cs{chronosset}} determine the use and configuration of any \conceptname[link,idx post=determinants of configuration]{frame,headings,subheadings}, as well as the default configuration of any \conceptname[no idx]{additional elements}. % % The body of the \keyname[link,idx=false,type=env]{chronos} \envlabelname{} is the \conceptname[type=concept,no link,target]{\meta{timeline additions specification}}. % The \conceptname[type=concept,no idx,link]{\meta{timeline additions specification}} specifies what should be added to the \keyname[type=env,no link,idx post=adding to]{tikzpicture} besides the \conceptname[idx post=\string\meta{timeline additions specification}]{timeline} itself and any \conceptname[conj=or,link,no idx]{frame,headings,subheadings}. % It will typically consist of a series of \pkg{chronos} commands specifying the items to be connected to the \conceptname[no idx,link]{timeline} and any non-connected \elementslabelname{} (\cref{sec:macros-add-elements}). % However, it may include any code valid in a \keyname[type=env,no link,idx post={content of \string\meta{timeline additions specification}}]{tikzpicture} \envlabelname{} or be entirely empty. % % \Cref{subsec:anatomi-llinell-amser} provides a breakdown of the various \conceptname[idx as=element,type=concept,target,target as=element]{elements} of which the \conceptname[no idx,link]{timeline} is composed. % \Cref{subsec:mathau} provides an overview of the \conceptname[idx as=additional,idx pre=element,type=concept,font=\normalfont,idx font pre=\ConceptFont]{additional elements} which may be added in the \conceptname[type=concept,no idx,link]{\meta{timeline additions specification}}. % % If your \conceptname[no idx,link]{timeline} uses non-\pkg{chronos} commands, you will need to read \cref{subsec:haenau,sec:haenau-llunio}, which explains the \conceptname[type=layer,font=\normalfont,idx as=choosing appropriate]{layers} \pkg{chronos} uses. % If your commands are not having their usual effects, you should first check whether they are simply hidden by another layer. % %^^A \iffalse % \begin{sidewaysfigure} % \centering % \thisfloatpagestyle{empty}% % \makebox[0pt]{% % \begin{chronos} % [ % cronoleg, % timeline={% % width=180mm, % dates={-500}:1500, % timeline bare marks=false, % }, % levels=8:7, % chronos coords={-500,-450,...,1500}, % headings={heading/chronos year 800/chronos year 1500,another heading/chronos year -450/chronos year 1,a third heading/chronos year 100/chronos year 800}, % subheadings={subheading on upper level/chronos year -250/chronos year 500/chronos upper subheadings,subheading on lower level/chronos start/chronos year -100/chronos lower subheadings,another subheading/chronos year 1000/chronos year 1500/chronos upper subheadings,yet another subheading/chronos year 500/chronos year 1000/chronos lower subheadings}, % century subheadings={12,13,...,15}{th}, % century subheading={1}{st}, % levels at=chronos year -200, % chronos opacity=.4, % /tikz/deco/.style={decoration={brace,amplitude=#1},red,decorate}, % tikz outside bb+={%^^A only works in preamble % \begin{scope}[on chronos overlay layer,red,draw=red,every node/.append style={font=\sffamily}] % \begin{scope}[every node/.append style={inner sep=0pt}] % \foreach \i/\j in {chronos margin top/,chronos main headings/headings,chronos lower subheadings/lower subheadings,chronos upper subheadings/upper subheadings,chronos bottom/,u8.north/,i1.north/,chronos head/,chronos foot/,chronos base/,chronos top/} \draw [help lines,dashed] (chronos frame.west |- \i) -- node [above,pos=.8,anchor=base west, red] {\j} (chronos frame.east |- \i) ; % \foreach \i in {1,...,8} { % \draw [help lines,dashed] (chronos frame.west |- u\i.south) -- (chronos frame.east |- u\i.south) coordinate [pos=.05] (a) ; % \node (n) at ($(a |- u\i.south)!.5!(a |- u\i.north)$) {level \i}; % \draw [-Latex,red] (n.north -| a) -- (a |- u\i.north); % \draw [-Latex,red] (n.south -| a) -- (a |- u\i.south); % } % \foreach \i in {1,...,7} { % \draw [help lines,dashed] (chronos frame.west |- i\i.south) -- (chronos frame.east |- i\i.south) ; % \node [anchor=west] (m) at ($(n.west |- i\i.south)!.5!(n.west |- i\i.north)$) {level -\i}; % \draw [-Latex,red] (m.north -| a) -- (a |- i\i.north); % \draw [-Latex,red] (m.south -| a) -- (a |- i\i.south); % } % \node [anchor=west] (m) at ($(n.west |- u8.north)!.5!(n.west |- chronos margin top)$) {headings border + top border}; % \draw [-Latex,red] (m.south -| a) -- (a |- u8.north); % \draw [-Latex,red] (m.north -| a) -- (a |- chronos margin top); % \coordinate [left=5pt of n.west] (c) ; % \foreach \i/\j/\k in {chronos lower subheadings/chronos upper subheadings/lower subheadings drop,chronos upper subheadings/chronos main headings/upper subheadings drop,chronos bottom/i7.south/bottom border} { % \draw [red, Latex-Latex] (\i -| c) -- (c |- \j) coordinate [midway] (b); % \draw [red] (b) -- (b -| chronos frame.west) -- ++(-5pt,0pt) node [anchor=east] {\k}; % } % \draw [red, Latex-Latex] (chronos main headings -| c) -- (c |- chronos margin top) coordinate [midway] (b); % \draw [red] (b) -- (b -| chronos frame.west) -| ++(-10pt,40pt) node [fill=white,fill opacity=.75,text opacity=1,anchor=south] {headings drop + top border}; % \draw [red, Latex-Latex] (chronos pre) -- (chronos frame.west |- chronos pre) coordinate [midway] (b); % \node [xshift=-20pt,yshift=-30pt,anchor=east] (m) at (b) {left border}; % %^^A dyw |-| ddim yn gweithio yn y fan hon ond wn i ddim pam ... % \draw [red] (b) |- (m.east); % \node (m) at ($(chronos post-head |- u1)!.5!(chronos frame.east |- u1)$) {right border}; % \draw [red, -Latex] (m.east |- u1) -- (chronos frame.east |- u1) ; % \draw [red, -Latex] (m.west |- u1) -- (chronos post-head |- u1); % \node (m) at (chronos year -400 |- u2) {timeline}; % \node (ub) at (chronos year 1 |- u1) {timeline border}; % \node (lb) at (chronos year 1 |- i1) {timeline border}; % \draw [red, -Latex, thick] (m.south) -- (m |- chronos pre); % \draw [red, -Latex] (ub.south) -- (ub |- {$(chronos head)!.5!(chronos top)$}); % \draw [red, -Latex] (lb.north) -- (lb |- {$(chronos foot)!.5!(chronos base)$}); % \end{scope} % \begin{scope}[every node/.append style={fill=white,fill opacity=.75,text opacity=1}] % \draw [{Latex[]}-,red] (chronos post-head) ++(-20pt,1pt) -- ++(0pt,20pt) node {2pt}; % \draw [{Latex[]}-,red] (chronos post-foot) ++(-20pt,-1pt) -- ++(0pt,-20pt) node {2pt}; % \draw [deco=3] (chronos post-top) -- node [right, anchor=west, xshift=2.5pt] {timeline height} (chronos post-base); % \draw [deco=1.5] (chronos post-head) -- node [right, anchor=west, xshift=2.5pt] {timeline border height} (chronos post-top); % \draw [deco=1.5] (chronos post-base) -- node [right, anchor=west,xshift=2.5pt] {timeline border height} (chronos post-foot); % \foreach \i in {a period,an event,an information box} \draw [deco=3] (tag \i.north west) ++(0,2.5pt) coordinate (a) -- node [above, anchor=south,yshift=2.5pt] {\i} (tag \i.east |- a); % \draw [deco=5,thick] (lives.west |- theories.north) ++(0pt,2.5pt) coordinate (a) -- node [anchor=south,yshift=7.5pt] {2 \texttimes{} theory} (theories.east |- a); % \draw [deco=5,thick] (tag a life.south west) ++(-10pt,0pt) coordinate (a) -- node [anchor=east,xshift=-7.5pt] {6 \texttimes{} life} (chronos base -| a); % \draw [deco=5,thick] (main title.north west) ++(0pt,2.5pt) coordinate (a) -- node [anchor=south, yshift=7.5pt] {main title} (main title.east |- a); % \draw [deco=3] (theory circle.north west) -- node [anchor=south,yshift=2.5pt] {theory circle} (theory circle.north east); % \draw [deco=5,thick] (chronos frame.north west) ++(0pt,2.5pt) coordinate (a) -- node [anchor=south,yshift=7.5pt] {frame} (chronos frame.east |- a); % \end{scope} % \end{scope} % }, % outer border=2.5pt, % frame uses bb=false, %^^A debug, % ] % \chronoslife {% % name=a life, % dates=820:850, % at=i6 -| a life, % connectors={east,south}, % tag anchor=west, % xshift=5pt, % } % \chronosevent {% % name=an event, % date=756, % at=u1 -| an event, % xshift=-10pt, % tag anchor=east, % connectors=west, % } % \chronostheory {% % name content=Text Tags of\\Type `Life', % name=lives, % at=tag a life.east |- i7.south, % xshift=10pt, % tag anchor=west, % anchor=south west, % connectors={north,east,south} % } % \chronostheory {% % name content=A Theory Text Tag\\Connected to Another\\Theory Text Tag, % name=theories, % at=tag lives.south east, % xshift=30pt, % connectors={south,north}, % anchor=south west, % } % \draw [chronos connect=theory:lives] (connector lives4) -- ++(0pt,-10pt) -| (connector theories); % \chronosperiod {% % name=a period, % start=189, % end=191, % at=a period, % yshift=50pt, % xshift=10pt, % tag anchor=west, % connectors={east,north}, % } % \draw [chronos connect=life:a life] (connector a life) -|- (connector lives); % \chronosinfo{% % name=an information box, % text content={A box\\[-.25em]\hspace*{1.5em}for\\Information.}, % anchor=south, % at=chronos year 1000 |- u3, % yshift=-2.5pt, % } % \chronostheorycircle{ % name=theory circle, % at={$(tag an information box |- i4.center)!1/2!(u4 |- i4.center)$}, % sizes=15pt:9pt, % circle texts=Theory:Circle, % labels=Upper Label:Lower Label, % } % \chronoslife {% % name=some one, % dates=842:910, % at=i5 -| some one, % xshift=5pt, % tag anchor=west, % connectors={east}, % } % \chronoslife {% % name=an other, % dates=882:920, % at=i4 -| an other, % xshift=5pt, % tag anchor=west, % connectors={east}, % } % \chronoslife {% % name=the other, % dates=912:987, % at=i3 -| the other, % xshift=5pt, % tag anchor=west, % connectors={east}, % } % \chronoslife {% % name=the stranger, % dates=999:1011, % at=i2 -| the stranger, % xshift=5pt, % tag anchor=west, % connectors={east}, % } % \chronoslife {% % name=the outsider, % dates=1002:1051, % at=i1 -| the outsider, % xshift=5pt, % tag anchor=west, % connectors={east}, % } % \chronosmaintitle{% % name content={Chronos Timeline Anatomy}, % at=chronos year 200 |- u7, % anchor=west, % name=main title, % } % \end{chronos}% % } % \caption{\pkg{chronos} anatomy\label{fig:anatomi}} % \end{sidewaysfigure} %^^A \fi %^^A \thispagestyle{fancyempty}% % % \subsection{Chronos Timeline}\label{subsec:anatomi-llinell-amser} %^^A BEGIN subsec:anatomi-llinell-amser % % The \conceptname[target,idx post=components of]{timeline} itself is a horizontal line consisting of some or all of the following elements % \begin{itemize} % \item \Conceptname[target]{timeline line}\chronosdochypertargets{element}{timeline}{timeline line} refers to the main line, which is drawn or filled by default depending on height and configuration. % The \keyname[link,idx=false,type=dimkey,link prefix=timeline/]{height,width,timeline border height} are responsible for the total size of the \conceptname[idx post=dimensions responsible for total size]{timeline}. % \item \Conceptname[idx as=timeline border,target,target as={timeline border,border},idx post=introduction to]{borders}\chronosdochypertargets{element}{timeline}{timeline border} are (potentially) filled with a gradient above and below the main line. % By default, borders are added when marks are placed on the \conceptname[idx post=borders,idx font post=\ConceptFont]{timeline} itself, which necessitates a taller \conceptname[idx post={effect of \string\textconcept{borders} on dimensions}]{timeline}. % \item \Conceptsname[target,idx post=location]{era label} are (potentially) placed at each end of the line, depending on the time period covered. % \item Timeline \conceptname[target,idx post=placement]{years,minor years,marks,minor marks,bare marks} may be placed above, below or on the main \conceptname[no idx,link]{timeline line}. % \end{itemize} % % Some \conceptname[idx as=element,type=concept,idx post=specified in \string\meta{chronos preamble}]{\elementslabelname} must be specified in the \conceptname[no idx,link,type=concept]{\meta{chronos preamble}}, but are constructed only at the end of the \conceptname[type=env,no idx]{\enviro{chronos}} \envlabelname. % These include optional \conceptname[no idx,link]{headings,subheadings} to be placed at the top of the \keyname[type=env,no idx]{\enviro{chronos}} \envlabelname{} and an optional \conceptname[no idx,link,link pre=main/]{frame}. % % \Conceptname[no idx]{headings,subheadings} are constructed after and above most other \elementslabelname{} \keyname[type=style]{on chronos foreground layer}. % As explained in \cref{subsec:headings}, \conceptname[no idx]{headings,subheadings} may be used to roughly indicate named stretches of time such as ‘Tudors’ or ‘Bronze Age’. % \begin{itemize} % \item \Conceptname[target,idx post=location]{headings}\chronosdochypertargets{element}{}{heading} are placed in a single row at the top. % \item \Conceptname[target,idx post=placement relative to \string\textconcept{headings}]{subheadings}\chronosdochypertargets{element}{}{century subheadings,century subheading,subheading} are placed just below the \conceptname[no idx]{headings} in two rows: % \begin{itemize} % \item The \conceptname[target,idx post=placement relative to \string\textconcept{headings}]{upper subheadings} are placed in a single row just beneath the \conceptname[no idx]{headings}. % \item The \conceptname[target,idx post=placement relative to \string\textconcept{upper subheadings}]{lower subheadings} are placed in a single row just beneath the \conceptname[no idx]{upper subheadings}. % \end{itemize} % \end{itemize} % % The \conceptname[link,link pre=main/,idx pre=main,idx font pre=\ConceptFont]{frame} is constructed even later, but drawn behind most other \elementslabelname{} \keyname[type=style]{on chronos background layer}. % %^^A END subsec:anatomi-llinell-amser % % \subsection{Chronos Additional Element Types}\label{subsec:mathau}\chronosdocidx[target,font=\ConceptFont,type=element,idx pre=additional,idx font pre=\ConceptFont]{timeline-connectable,connectable,non-connectable}\vspace{-\baselineskip} %^^A BEGIN subsec:mathau % % Aside from the \conceptname[no idx,link]{timeline} itself, its \conceptname[no idx,link]{headings,subheadings} and \conceptname[no idx,link,link to=main/frame]{frame}, \pkg{chronos} provides six primary types of \elementlabelname{} which may be added to the \conceptname[no idx,link]{timeline}: \conceptname[type=tag,target,idx post=as primary \string\textconcept{element}]{life,event,period,theory,info,theory circle}. % In this documentation, these are referred to as ‘\conceptname[type=concept,idx as=tag,target,target as=tag]{tags}’ or ‘\conceptname[type=concept,no idx]{\taglabelname} types’. % Three further \conceptname[link,link to=tag,type=concept,no idx]{tags} encompass one-off \elementslabelname{}: \conceptname[type=tag,target,idx post=elements\string\textnormal{ belonging to},idx font post=\ConceptFont]{main} covers the \conceptname[idx pre=main,idx font pre=\ConceptFont,idx post=as secondary\string\idxeg]{main title,frame}, while \conceptname[target,type=tag,target,idx post=elements\string\textnormal{ belonging to},idx font post=\ConceptFont]{copyleft,copyright} account for any declaration of \conceptname[no idx,link,link pre=copyleft/]{copyleft} or \conceptname[no idx,link,link pre=copyright/]{copyright}. % % For example, all \elementslabelname{} created using \keyname[type=macro]{\cs{chronoslife}} are said to belong to \conceptname[type=concept,no idx,link]{tag} type \conceptname[type=tag,no idx,link]{life}. % % \subsubsection{Primary Types}\label{subsubsec:primary}\chronosdocidx[target,font=\ConceptFont,type=element,idx post=primary]{additional}\vspace{-\baselineskip} %^^A BEGIN subsec:mathau %^^A BEGIN subsubsec:primary % % \paragraph{Timeline-Connectable Elements}\label{par:anatomi-add-timeline-connectable}\chronosdocidx[type=concept,idx pre=element,target pre=element/,target,font=\ConceptFont,idx font pre=\ConceptFont]{timeline-connectable}\chronosdocidx[type=element,target,font=\ConceptFont]{life,event,period} %^^A BEGIN par:anatomi-add-timeline-connectable % \Elementslabelname{} belonging to the first three \conceptname[type=concept,no idx,link,link to=tag]{tags} (\conceptname[type=tag,no idx,link,conj={,}]{life,event,period}) are (potentially) connected to the \conceptname[type=concept,idx post={elements, \string\textrm{additional}, timeline-connectable},link,idx font post=\ConceptFont]{timeline} and are placed according to date of occurrence. % % \begin{itemize} % \item These \elementslabelname{} are assigned colours and colour names are created so they may easily be reused. % These colours may (and, by default, are) used to create \conceptname[idx as=connection,no idx,link,link to=connection]{connections}, \conceptname[idx as=connector,no idx,link,link to=connector]{connectors}, \conceptname[idx as=line,no idx,link,link to=line]{lines} and \conceptname[idx as=text tags,no idx,link,link to=text tag]{text tags}. % \item These \elementslabelname{} are connected to the \conceptname[type=concept,idx post={elements, \string\textrm{additional}, timeline-connectable},link,idx font post=\ConceptFont]{timeline} by default using \conceptname[idx as=connection,idx post=between \string\textconcept{chronos connectors} and \string\textconcept{text tag connectors},target,target as=connection]{connections} which join \conceptname[idx as=chronos connector,target,target as=chronos connector]{chronos connectors} to \conceptname[idx as=text tag connector,target,target as={connector,text tag connector}]{text tag connectors} on the \elementslabelname{}' \conceptname[idx as=text tag,no idx]{text tags}. % \item Dates/periods are (potentially) drawn or filled on, above or below the \conceptname[no idx,link]{timeline} using \conceptname[idx as=line,target,target as=line,idx post=as representation of time]{lines}. % \item \Conceptname[idx as=text tag,idx post=introduction,link,link to=text tag]{text tags} are created for the \elementslabelname{}\texsethanks[enabling \conceptname[idx as=text tag connector,no idx]{connectors} to be centred correctly on the borders of \conceptname[idx as=text tag,no idx]{text tags}]{Symbol 1}{385953}. % By default, these typically include a name and date or date-range, though arbitrary content is permissible. % The location of \conceptname[no idx]{text tags} is configurable, though it usually makes sense to place them in relation to their \conceptname[idx as=chronos connector,no idx,link,link to=chronos connector]{chronos connectors}. % \item \chronosdochypertargets{element}{timeline-connectable}{life,period}\Conceptname[type=tag,link,idx post=use of two dates for placement]{life,period} use two dates for placement. % A \conceptname[link,idx post=representation of time in \string\textconcept{life}/\string\textconcept{period}]{line} is (potentially) drawn and/or filled on, above or below the \conceptname[idx post=lines,idx font post=\ConceptFont]{timeline}, by default in the element's associated colour. % \item \chronosdochypertargets{element}{timeline-connectable}{event}\Conceptname[type=tag,link,idx post=use of single date for placement]{event} uses a single date for placement. % A \conceptname[idx pre=event,idx font pre=\ConceptFont]{line} is (potentially) drawn on the \conceptname[idx post=connections,idx font post=\ConceptFont]{timeline}, by default in the element's associated colour. % \end{itemize} % \Conceptname[bagpuss,no idx,type=concept,link,link pre=element/]{timeline-connectable} elements are also \conceptname[link,type=concept,link pre=element/,no idx]{connectable} (\cref{par:anatomi-add-connectable}). %^^A END par:anatomi-add-timeline-connectable % % \paragraph{Connectable Elements}\label{par:anatomi-add-connectable}\chronosdocidx[type=concept,idx pre=element,target pre=element/,target,font=\ConceptFont,idx font pre=\ConceptFont]{connectable}\chronosdocidx[type=element,target]{theory} %^^A BEGIN par:anatomi-add-connectable % \Elementslabelname{} belonging to the first four \conceptname[type=concept,no idx,link,link to=tag]{tags} (\conceptname[type=tag,no idx,link,conj={,}]{life,event,period,theory}) are (potentially) \conceptname[link,type=concept,link pre=element/,no idx]{connectable} to each other. % % \begin{itemize} % \item These \elementslabelname{} (potentially) feature \conceptname[idx as=text tag connector,no idx,link,link to=text tag connector]{connectors} which may be used to connect \elementslabelname{} together. % When the first three are connected to the \conceptname[type=concept,idx post=connectors,idx font post=\ConceptFont,link]{timeline}, one such connector is created by default\footnote{Connectors may be customised to ‘disappear’, but even invisible connectors can be used in connections.}. % \item \Elementslabelname{} belonging to the \conceptname[type=tag,target,no idx]{theory} \conceptname[type=concept,no idx,link]{tag} are \conceptname[no idx,type=concept,link,link pre=element/]{connectable}, but not \conceptname[no idx,type=concept,link,link pre=element/]{timeline-connectable}. % Unlike \conceptname[no idx,type=concept,link,link pre=element/]{timeline-connectable} \elementslabelname{} (\cref{par:anatomi-add-timeline-connectable}), they cannot be connected to the \conceptname[type=concept,idx post={elements, \string\textrm{additional}, non-timeline-connectable},link,idx font post=\ConceptFont]{timeline} and may be freely placed; unlike \conceptname[no idx,type=concept,link,link pre=element/]{non-connectable} \elementslabelname{} (\cref{par:anatomi-add-non-connectable}), they may be connected to each other and/or \conceptname[no idx,type=concept,link,link pre=element/]{timeline-connectable} \elementslabelname{}. % \end{itemize} %^^A END par:anatomi-add-connectable % % \paragraph{Non-Connectable Elements}\label{par:anatomi-add-non-connectable}\chronosdocidx[type=concept,idx pre=element,idx font pre=\ConceptFont,target pre=element/,target,font=\ConceptFont]{non-connectable}\chronosdocidx[type=element,target,font=\ConceptFont]{info,theory circle}\chronosdocidx[type=element,target,idx pre=main,idx font pre=\ConceptFont,font=\ConceptFont,target pre=main/]{main title,frame}\chronosdochypertargets{element}{}{frame}\chronosdocidx[type=element,target,font=\ConceptFont,idx pre=copyleft,target pre=copyleft/,idx font pre=\ConceptFont]{copyleft,copyright} % \chronosdocidx[type=element,target,font=\ConceptFont,idx pre=copyright,idx font pre=\ConceptFont,target pre=copyright/]{copyleft,copyright}% %^^A BEGIN par:anatomi-add-non-connectable % % \Elementslabelname{} belonging to the remaining \conceptname[type=concept,no idx,link,link to=tag]{tags} (\conceptname[type=tag,no idx,link]{info,theory circle,main,copyleft,copyright}) are \conceptname[link,type=concept,link pre=element/,idx font pre=\ConceptFont,no idx]{non-connectable} and, with the exception of \conceptname[link,no idx,link to=main/frame]{frame} may be located according to user preference. % % \begin{itemize} % \item Like \conceptname[no idx,type=concept,link,link pre=element/]{connectable}-but-not-\conceptname[no idx,type=concept,link,link pre=element/]{timeline-connectable} \elementslabelname{}, \conceptname[no idx,type=concept,link,link pre=element/]{non-connectable} \elementslabelname{} are not connected to the \conceptname[type=concept,idx post={elements, \string\textrm{additional}, non-timeline-connectable},idx font post=\ConceptFont,link]{timeline} and may involve no date information at all, but unlike \chronosdochypertargets{element}{connectable}{theory}\conceptname[type=tag,idx as=theory,idx post=cf.~\string\textconcept{non-connectable elements}]{theories}\chronosdocidx[type=concept,font=\ConceptFont,idx post={elements, \string\textrm{additional}, connectable},link,idx font post=\ConceptFont]{timeline} they do not feature \conceptname[idx as=text tag connector,idx post=not feature of \string\textconcept{non-connectable elements}]{connectors} so may not easily be connected to other \elementslabelname{}. % \item \Conceptname[type=tag,link,idx post=as standalone]{info}\chronosdochypertargets{element}{non-connectable}{info} and \conceptname[type=tag,link,idx post=as standalone]{theory circle}\chronosdochypertargets{element}{non-connectable}{theory circle} \elementslabelname{} are standalone items for providing content. % The former (potentially) have \conceptname[idx as=caption]{captions} below; the latter (potentially) have \conceptname{labels} above and/or below. % The first are basically just text nodes with arbitrary content; the second can display two small chunks of text arranged in semicircles with a hole in the middle for a letter or symbol. % \item \Conceptname[type=tag,idx as=theory circle,idx post=slowness]{theory circles} are \emph{slow} and their use should be limited to avoid excessive compilation times. % They are also arguably the most difficult to read and should be used only for items of minor or secondary importance. % \item The standalone \elementslabelname{} are best created last and are most useful for filling in ‘holes’ in a \conceptname[no idx]{timeline} which would otherwise look unbalanced. % If chiropody didn't develop much in the twelfth century or not much is known about the finer points of tortoise-raising in the second, these \elementslabelname{} may be used to plug the unsightly gaps left by inconvenient histories. % \end{itemize} % %^^A END par:anatomi-add-non-connectable % %^^A END subsubsec:primary % % \subsubsection{Secondary (Sub-)Elements}\label{subsubsec:secondary}\chronosdocidx[target,font=\ConceptFont,type=element,idx post=secondary (sub-)]{additional} %^^A BEGIN subsubsec:secondary % Orthogonal to the primary \elementslabelname{} explained above, \pkg{chronos} uses the following (sub-)\elementslabelname{}: % \begin{itemize} % \item \Conceptname[idx as=\meta{tag}/connector,target,target as=\meta{tag}/connector]{connectors} are small \elementslabelname{} drawn on the boundaries of \conceptname[idx as=text tag]{text tags} and the \conceptname[idx post=connectors,idx font post=\ConceptFont]{timeline} which can be used as connection points. % By default, they are small and circular, but they may be rendered invisibly or otherwise according to preference. % \item \Conceptname[idx as=\meta{tag}/connection,target,target as=\meta{tag}/connection]{connections} are drawn between \conceptname[no idx,link to=\meta{tag}/connector,]{connectors}. % The package draws a connection between the \conceptname[idx post=connections]{timeline} and date-placed \elementslabelname{} by default, but occasionally you may prefer to specify this connection manually. % Other connections can be added to link \elementslabelname{}. % \item \Conceptsname[idx as=\meta{tag}/text tag,target,target as=text tag]{text tag}\chronosdochypertargets{element}{life,event,period,\meta{tag}}{text tag} hold information associated with all \elementslabelname{} except \conceptname[idx as=theory circle,idx post=lack of \string\textconcept{text tag}]{theory circles}. % \item \Conceptname[idx as=\meta{tag}/line,target,target as=\meta{tag}/line]{lines} are marked on the \conceptname[idx post=lines,idx font post=\ConceptFont]{timeline} to indicate the date and/or duration of dated \elementslabelname{}. % \end{itemize} % %^^A END subsubsec:secondary % %^^A END subsec:mathau % % \subsection{Chronos Coordinate and Node Names}\label{subsec:coords-nodes} %^^A BEGIN subsec:coords-nodes % % \Cref{fig:anatomi-coords} shows key coordinate and node names. % Those available by default can be shown on any \conceptname[no idx]{timeline} using the option \keyname[link,idx=false]{debug}. % Examples of different \conceptname[type=concept,idx as=tag,idx post=coordinate names]{tags}\chronosdocidx[type=concept,idx post=node names,font=\ConceptFont]{tag} have been added with labels to illustrate how \pkg{chronos} names their coordinates and nodes. % Detailed documentation is provided in \cref{sec:config,sec:macros-add-elements}. %^^A \iffalse % \begin{sidewaysfigure} %^^A \def\bagpuss{Bagpuss}% % \thisfloatpagestyle{empty}% % \centering % \makebox[0pt]{%^^A % \begin{chronos} % [ % cronoleg, % timeline={% % width=180mm, % dates={-500}:1500, % timeline bare marks=false, % }, % levels=8:7, % chronos coords={-500,-450,...,1500}, % headings={heading/chronos year 800/chronos year 1500,another heading/chronos year -450/chronos year 1,a third heading/chronos year 100/chronos year 800}, % subheadings={subheading on upper level/chronos year -250/chronos year 500/chronos upper subheadings,subheading on lower level/chronos start/chronos year -100/chronos lower subheadings,another subheading/chronos year 1000/chronos year 1500/chronos upper subheadings,yet another subheading/chronos year 500/chronos year 1000/chronos lower subheadings}, % century subheadings={12,13,...,15}{th}, % century subheading={1}{st}, % levels at=chronos year -200, % chronos opacity=.4, % debug, % tikz outside bb+={%^^A only works in preamble % \begin{scope}[on chronos overlay layer] % \foreach \i/\j/\k in {heading/90/north,another heading/90/north,a third heading/90/north,subheading on upper level/180/west,subheading on lower level/180/west,another subheading/180/west} \node [/chronos/show coordinate={chronos show node colour}{\j}{\i}{15pt}{}] at (\i.\k) {}; % \foreach \i in {1st,12th,13th,14th,15th,yet another subheading} \node [/chronos/show coordinate={chronos show node colour}{-90}{\i}{5pt}{}] at (\i.south) {}; % \end{scope} % }, % outer border=2.5pt, % ] % \chronoslife {% % name=a life, % dates=820:850, % at=i6 -| a life, % connectors={east,south}, % tag anchor=west, % xshift=5pt, % } % % \chronosevent {% % name=an event, % date=756, % at=u1 -| an event, % xshift=10pt, % tag anchor=west, % connectors=east, % } % \chronostheory {% % name content=Text Tags of\\Type `Life', % name=lives, % at=tag a life.east |- i7.south, % xshift=10pt, % tag anchor=west, % anchor=south west, % connectors={north,east,south} % } % \chronostheory {% % name content=A Theory Text Tag\\Connected to Another\\Theory Text Tag, % name=theories, % at=tag lives.south east, % xshift=30pt, % connectors={south,north}, % anchor=south west, % } % \draw [chronos connect=theory:lives] (connector lives4) -- ++(0pt,-10pt) -| (connector theories); % \chronosperiod {% % name=a period, % start=189, % end=191, % at=a period, % yshift=50pt, % xshift=10pt, % tag anchor=west, % connectors={east,north}, % } % \draw [chronos connect=life:a life] (connector a life) -|- (connector lives); % % \chronosinfo{% % name=an information box, % text content={A box\\[-.25em]\hspace*{1.5em}for\\Information.}, % anchor=south, % at=chronos year 1300 |- u4, % yshift=-2.5pt, % } % % \chronostheorycircle{ % name=theory circle, % at={$(chronos year 1000 |- i4.center)!1/2!(u4 |- i4.center)$}, % sizes=15pt:9pt, % circle texts=Theory:Circle, % labels=Upper Label:Lower Label, % } % \chronoslife {% % name=some one, % dates=842:910, % at=i5 -| some one, % xshift=5pt, % tag anchor=west, % connectors={east}, % } % \chronoslife {% % name=an other, % dates=882:920, % at=i4 -| an other, % xshift=5pt, % tag anchor=west, % connectors={east}, % } % \chronoslife {% % name=the other, % dates=912:987, % at=i3 -| the other, % xshift=5pt, % tag anchor=west, % connectors={east}, % } % \chronoslife {% % name=the stranger, % dates=999:1011, % at=i2 -| the stranger, % xshift=5pt, % tag anchor=west, % connectors={east}, % } % \chronoslife {% % name=the outsider, % dates=1002:1051, % at=i1 -| the outsider, % xshift=5pt, % tag anchor=west, % connectors={east}, % } % \foreach \i/\j in {some one/north west,an other/north,the other/north east} \draw [chronos connect=life:\i] (connector \i) -| (connector lives2.\j); % \foreach \i/\j/\k in {the stranger/north east/5pt,the outsider/south east/10pt} \draw [chronos connect=life:\i] (connector \i) -- (connector \i -| connector lives3) -- ++(\k,0pt) |- (connector lives3.\j); % % \chronosmaintitle{% % name content={Chronos Timeline Anatomy}, % at=chronos year 200 |- u7, % anchor=west, % name=main title, % } % \begin{scope}[on chronos overlay layer] % \foreach \i/\j in {theory circle1/0,theory circle2/160,theory circle3/180,theory circle4/0,theory circle5/180} \node [/chronos/show coordinate={chronos show coordinate colour}{\j}{\i}{20pt}{fill=white,fill opacity=.5,text opacity=1}] at (\i) {}; % \foreach \i/\j/\k in {a period/2/90,an event/1/0,a life/2/-90,theories/2/90} \node [/chronos/show coordinate={chronos show node colour}{\k}{connector\\\i\j}{15pt}{align=center}] at (connector \i\j) {}; % \foreach \i/\j/\k in {theory circle/north west/180,label above theory circle/north/90,label below theory circle/south/-90,an information box/east/0,label an information box/east/0,u8/west/180,i5/west/180,theories/north west/90} \node [/chronos/show coordinate={chronos show node colour}{\k}{\i}{15pt}{align=center}] at (\i.\j) {}; % \foreach \i/\j/\k in {a life/south west/-135,a period/north east/45,an event/north/90} \node [/chronos/show coordinate={chronos show node colour}{\k}{tag\\\i}{15pt}{align=center}] at (tag \i.\j) {}; % \foreach \i in {theory circle, label above theory circle, label below theory circle, tag a life, tag a period, tag an event, theories, an information box, label an information box} \draw [help lines, draw=chronos@lliw@node, dashed] (\i.north east) -| (\i.south west) -| cycle; % \end{scope} % \end{chronos}%^^A % }%^^A % \mbox{\phantom{F}}\medskip\par % \caption{\pkg{chronos} anatomy: key coordinate and node names\label{fig:anatomi-coords}} %^^A \Undefine\bagpuss % \end{sidewaysfigure} %^^A \fi % %^^A END subsec:coords-nodes % % \subsection{Chronos Layers}\label{subsec:haenau} %^^A BEGIN subsec:haenau % % In addition to loading the \keyname[type=lib,no link]{\lib{backgrounds}} library, which defines the layer \keyname[type=layer,no link]{background}, and the default layer \keyname[type=layer,no link]{main}, \pkg{chronos} defines another four layers, for a total of six: \keyname[type=layer]{chronos background} and \keyname[type=layer]{chronos middle ground}, which are layered between \keyname[type=layer,no link,no idx]{background} and \keyname[type=layer,no link,no idx]{main}, and \keyname[type=layer]{chronos foreground} and \keyname[type=layer]{chronos overlay}, which are layered above \keyname[type=layer,no link,no idx]{main}. % From top to bottom: % \begin{itemize}[label=] % \item \chronosdochypertargets*{layer}{}{chronos overlay} % \item \chronosdochypertargets*{layer}{}{chronos foreground} % \item \keyname[type=layer,no link,no idx]{main} % \item \chronosdochypertargets*{layer}{}{chronos middle ground} % \item \chronosdochypertargets*{layer}{}{chronos background} % \item \keyname[type=layer,no link,no idx]{background} % \end{itemize} % % \Cref{sec:haenau-llunio} explains how to draw directly on different \layerslabelname{}. % You may wish to do this if you are using non-\pkg{chronos} code in the \conceptname[type=concept,no idx,link]{\meta{timeline additions specification}} or the facilities explained in \cref{sec:defer} for deferring code. % %^^A END subsec:haenau % %^^A END sec:anatomy % % \restoregeometry % \setlength\tewadjust{\marginparwidth+\marginparsep-\paperwidth+\textwidth+\oddsidemargin+1in}% % \fancyheadoffset[lh]{\tewadjust}% %^^A pam bo angen??!! % \pagestyle{fancy} % \thispagestyle{fancy} % % \section{Chronos Schemes and Styles}\label{sec:schemes-styles} %^^A BEGIN sec:schemes-styles % % Two simple methods for applying, defining and reusing \chronosstyleslabelname{} are provided: \chronosstyleslabelname{} and \colschemeslabelname{}. % If using both, load the \chronosstylelabelname{} first, since it may already load a \colschemeslabelname{}. % % \subsection{Chronos Styles}\label{subsec:chronos-styles} %^^A BEGIN subsec:chronos-styles % % By far the easiest way to customise a \conceptname[idx post=customisation]{timeline} is simply to load a \conceptname[type=concept]{chronos style} in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}}. % This \namecref{subsec:chronos-styles} illustrates a basic \conceptname[no idx,no idx,link,link to=timeline]{timeline} typeset with each of \pkg{chronos}'s standard styles. % % \emph{Note that you will typically need to set \keyname[link,idx=false,type=datekey,link prefix=timeline/]{start date,end date} and perhaps adjust how often \conceptname[idx post=adjusting \string\textconcept{chronos style} defaults]{years,marks} appear on your \conceptname[no idx,no idx,link,link to=timeline]{timeline}. % \Chronosstyleslabelname{} such as \keylabelname[chronosstyle]{event splitter} set highly idiosyncratic dates by default, simply by way of example. % \pkg{chronos} will not warn you if you don't override options set by a \chronosstylelabelname{}.} % % In selecting a \chronosstylelabelname{}, bear in mind that some things are easy to change, while others are harder. % At a minimum, you should pick an ‘on line’ \chronosstylelabelname{} if you want \keyname[link,idx=false,type=choice,link prefix=timeline/]{timeline years} \texttt{on line} and an ‘off line’ one if you want them \texttt{above} or \texttt{below}. % \keyname[idx=false,link]{event years on line} requires an ‘on line’ \chronosstylelabelname; \keyname[idx=false,link,type=boolkey]{event dates split} is designed for an ‘off line’ one. % % You should also think about how much information you need to display. % \keyname[link,idx=false,type=chronosstyle]{date centric} won't work for a densely packed \conceptname[no idx,no idx,link,link to=timeline]{timeline}, so if you have a lot of things to pack in, don't choose this unless you're drawing an extremely long \conceptname[no idx,no idx,link,link to=timeline]{timeline}. % Likewise, \keyname[link,idx=false,type=chronosstyle]{cronoleg} will look rather silly if you only want to represent the lives of Socrates and Plato. % % \subsubsection{‘On Line’ Styles}\label{subsubsec:chronos-styles-on-line}\chronosdocidx[font=\normalfont,type=chronosstyle]{on line} %^^A BEGIN subsubsec:chronos-styles-on-line % % All ‘on line’ \styleslabelname{} are designed to support adding \elementslabelname{} both above and below the \conceptname[no idx,link,link to=timeline]{timeline}. % This includes the default settings. % See \cref{tab:chronosstyles,fig:rhag}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \begin{chronos}%^^A = rhag ar ôl gwall % [ % dates={1800-01-01}:{2050-12-31}, % heading={heading}{chronos year 1800}{chronos year 1900}, % heading={default with levels but no style}{chronos year 1950}{chronos year 2000}, % subheading={upper subheading}{chronos year 1800}{chronos year 1900}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 1800}{chronos year 1900}{chronos lower subheadings}, % levels=4:3, % ] % \chronoslife{dates={1810}:{1870},name=life above,at=u2 -| life above,} % \chronoslife{dates={1810}:{1870},name=life below,at=i2 -| life below,} % \chronoslife{dates={1975}:{2000},name=person above,at=u2 -| person above,} % \chronoslife{dates={1975}:{2000},name=person below,at=i2 -| person below,} % \chronosperiod{dates={1925}:{1950},name=period above,at=u2 -| period above,xshift=-10pt,tag anchor=east} % \chronosperiod{dates={1925}:{1950},name=period below,at=i2 -| period below,} % \chronosevent{date={2025},name=event above,at=u4 -| event above,xshift=-10pt,tag anchor=east} % \chronosevent{date={2025},name=event below,at=i3 -| event below,} % \end{chronos} % \caption{\Chronosstylelabelname{}: none.}\label{fig:rhag} % \end{adjustwidth} % \end{figure} % % \DescribeChronosstyle{cronoleg}\chronosdocidx[symbol=eg,idx pre=on line,type=chronosstyle]{cronoleg}The most developed and best tested, if somewhat idiosyncratic, \chronosstylelabelname{}, based on the code used to construct my Western Philosophy Timeline. % It constructs a 235mm \conceptname[no idx,link,link to=timeline]{timeline} and uses a \colschemelabelname{} highlighting \elementslabelname{} of type \conceptname[type=tag,idx post=highlighted by \string\textconcept{colour scheme} in \string\textkey{chronoleg}\string\idxeg]{life}, but the colours may be adjusted or the same colour scheme applied to \conceptname[type=tag,idx post=effect of \string\textconcept{colour scheme} in \string\textkey{chronoleg}\string\idxeg]{event,period} as well. % By default, it is designed to produce a picture occupying an entire A4 page and has a wide right-hand margin for additional \elementslabelname{}, in addition to ten \conceptname[idx post=cronoleg\string\idxeg,idx font post=\KeyFont]{levels} above and below the \conceptname[no idx,link,link to=timeline]{timeline}. % See \cref{tab:chronosstyles,fig:cronoleg}. % \begin{figure} % \thisfloatpagestyle{empty}% % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \thispagestyle{empty}% % \chronosdoctroibocs{-90}{0pt}{.9\textheight}{%^^A % \begin{chronos} % [ % cronoleg, % rotate all colours, % heading={heading}{chronos year 400}{chronos year 500}, % subheading={upper subheading}{chronos year 400}{chronos year 500}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 400}{chronos year 500}{chronos lower subheadings}, % ] % \chronoslife{dates={-400}:{-325},name=life above,at=u2 -| life above,xshift=10pt,tag anchor=west} % \chronoslife{dates={-400}:{-325},name=life below,at=i2 -| life below,xshift=10pt,tag anchor=west} % \chronoslife{dates={-500}:{-425},name=person above,at=u3 -| person above,xshift=10pt,tag anchor=west} % \chronoslife{dates={-500}:{-425},name=person below,at=i3 -| person below,xshift=10pt,tag anchor=west} % \chronosperiod{dates={-100}:{125},name=period above,at=u1 -| period above,xshift=-10pt,tag anchor=east} % \chronosperiod{dates={-100}:{125},name=period below,at=i1 -| period below,xshift=-10pt,tag anchor=east} % \chronosevent{date={250},name=event above,at=u2 -| event above,xshift=-10pt,tag anchor=east} % \chronosevent{date={250},name=event below,at=i2 -| event below,xshift=-10pt,tag anchor=east} % \chronosmaintitle{name=cronoleg,at=u8 -| chronos year -200} % \end{chronos}} % \caption{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{cronoleg}.}\label{fig:cronoleg} % \end{adjustwidth} % \end{figure} % By default, this \chronosstylelabelname{} does \emph{not} use the bounding box for the \conceptname[link,link to=main/frame,idx post=cronoleg \string\textnormal{as not using bounding box for}\string\idxeg,idx font post=\KeyFont]{frame}. % % \newcolumntype{H}{>{\raggedright}X} % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{Summary of \chronosstyleslabelname.}\label{tab:chronosstyles} % \chronosdocidx[type=chronosstyle,font=\normalfont]{list of} % \begin{tabularx}\linewidth{>{\ttfamily}l>{\ttfamily}H>{\ttfamily}lHlcc} % \toprule % & & \multicolumn{4}{c}{\sffamily Defaults} \\\cmidrule(lr){3-7} % \sffamily Name & \sffamily Timeline Year Style & \textsf{Levels} & \textsf{Dates} & \textsf{Colour Scheme} & \sffamily Rotation & \sffamily Arrow \\ \toprule % -- & on line & 0:0 & 1800--2050\,\ce{} & default & \fycheck{} & \fycross{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{cronoleg} & on line & 10:10 & 500\,\bce{}--2050\,\ce{} & \keyname[type=colscheme,idx post=use by \string\texttt{cronoleg}]{cronoleg} & \fycheck{} & \fycross{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{date centric} & [on line] & \fycross{} & 1935--2010\,\ce{} & default & \fycross{} & \fycross{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{lavender menace} & on line & 3:3 & 1500--1900\,\ce{} & \keyname[type=colscheme,idx post=use by \string\texttt{lavender menace}]{lavender}+\texttt{chronosSilver} & \fycheck{} & \fycross{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{modern} & on line & 3:3 & 1500--1900\,\ce{} & \keyname[type=colscheme,idx post=use by \string\texttt{modern}]{modern} & \fycross{} & \fycross{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{rainbow serif} & on line & 3:3 & 1500--2100\,\ce{} & \keyname[type=colscheme,idx post=use by \string\texttt{rainbow serif}]{xcolseries} & \fycheck{} & \fycross{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{serif on line} & on line & 3:3 & 1800--1900\,\ce{} & default & \fycross{} & \fycross{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{sober judge} & on line & 3:3 & 1/10/1001--14/6/1003\,\ce{} & default & \fycross{} & \fycross{} \\ % \cmidrule(lr){1-7} % \keyname[type=chronosstyle,idx post=features (summary)]{blues below} & off line, below & 0:3 & 1550--2050\,\ce{} & \keyname[type=colscheme,idx post=use by \string\texttt{blues below}]{blues} & \fycheck{} & \fycheck{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{flipping blues} & off line, above & 3:0 & 1550--2050\,\ce{} & \keyname[type=colscheme,idx post=use by \string\texttt{flipping blues}]{blues} & \fycheck{} & \fycheck{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{contemporary 90} & off line, above & 0:3 & 2002-2016\,\ce{} & \keyname[type=colscheme,idx post=use by \string\texttt{contemporary 90}]{contninety} & \fycross{} & \fycheck{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{off line colour} & off line, below & \fycross{} & 3000--2000\,\bce{} & \keyname[type=colscheme,idx post=use by \string\texttt{off line colour}]{offlinebasic} & \fycheck{} & \fycheck{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{off line colour alt} & off line, below & \fycross{} & 3000--2000\,\bce{} & \keyname[type=colscheme,idx post=use by \string\texttt{off line colour alt}]{offlinealt} & \fycheck & \fycheck \\ % \keyname[type=chronosstyle,idx post=features (summary)]{off line simple} & off line, below & \fycross{} & 3000--2000\,\bce{} & \keyname[type=colscheme,idx post=use by \string\texttt{off line simple}]{offlinebasic} & \fycross{} & \fycheck{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{rotated 45} & off line, above & \fycross{} & 25\,\bce{}--20\,\ce{} & default & \fycross & \fycross \\ % \keyname[type=chronosstyle,idx post=features (summary)]{simple arrow} & off line, above & \fycross{} & 1--2000\,\ce{} & default & \fycross{} & \fycheck{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{somewhat plain} & off line, above & 0:3 & 500\,\bce{}--2050\,\ce{} & default & \fycross & \fycross{} \\ % \cmidrule(lr){1-7} % \keyname[type=chronosstyle,idx post=features (summary)]{event splitter} & [above] & \fycross{} & 01/13--02/22/2014\,\ce{} & default & \fycross{} & \fycross{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{lines on line} & none & \fycross{} & 1--2016\,\ce{} & default & \fycheck{} & \fycheck{} \\ % \keyname[type=chronosstyle,idx post=features (summary)]{plain arrow} & none & \fycross{} & 1--2016\,\ce{} & default & \fycheck{} & \fycheck{} \\ % \bottomrule % \end{tabularx} % \end{adjustwidth} % \end{table} % % \DescribeChronosstyle{date centric}\chronosdocidx[symbol=eg,idx pre=on line,type=chronosstyle]{date centric}A \chronosstylelabelname{} with a monochrome appearance and sans-serif fonts of 150mm\texseans{324448}. % Intended for \conceptname[idx as=timeline,no idx,link,link to=timeline]{timelines} highlighting relatively few dates. % See \cref{tab:chronosstyles,fig:date-centric}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \captionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{date centric}.\label{fig:date-centric}}{%^^A ateb: https://tex.stackexchange.com/a/324448/ % \begin{chronos} % [ % date centric, % ] % \chronosevent {date={2001},name=The \emph{Mr.~Men}\\Celebrate their 30\textsuperscript{th}\\Anniversary,as is,yshift=10pt,event year on line skip} % \chronosevent {date={2000},name=vouchers replace\\cash support for\\asylum seekers} % \chronosevent {date={1988},name=section 28 prevents state\\schools `promoting homosexuality',yshift=55pt} % \chronosevent {date={1984},name=miners' strike ends} % \chronosevent {date={1979},name=labour government\\falls \& thatcher\\wins power,yshift=10pt} % \chronosevent {date={1942},special date=WWII,name=people discover\\some stuff\\\& lots of people\\get killed} % \chronosmaintitle {name=date centric, at=current bounding box.north west,anchor=north west} % \end{chronos}} % \end{adjustwidth} % \end{figure} % This \stylelabelname{} demonstrates the use of \keyname[idx=false,link]{event years on line,special date}. % % \DescribeChronosstyle{lavender menace}\chronosdocidx[symbol=eg,idx pre=on line,type=chronosstyle]{lavender menace}A variant of \keyname[link,idx=false,type=chronosstyle]{modern} with a muted colour scheme and sans-serif fonts. % By default, it produces a \conceptname[no idx,link,link to=timeline]{timeline} covering the modern era (1500--1900\,\ce{}). % See \cref{tab:chronosstyles,subfig:lavender-menace}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{lavender menace}\label{subfig:lavender-menace}}{\begin{chronos} % [ % lavender menace, % heading={heading}{chronos year 1800}{chronos year 1900}, % subheading={upper subheading}{chronos year 1700}{chronos year 1900}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 1700}{chronos year 1900}{chronos lower subheadings}, % ] % \chronoslife{dates={1750}:{1800},name=life above,at=u2 -| life above} % \chronoslife{dates={1750}:{1800},name=life below,at=i2 -| life below,} % \chronoslife{dates={1650}:{1700},name=person above,at=u2 -| person above,} % \chronoslife{dates={1650}:{1700},name=person below,at=i2 -| person below,} % \chronosperiod{dates={1850}:{1900},name=period above,at=u3 -| period above,} % \chronosperiod{dates={1850}:{1900},name=period below,at=i3 -| period below,} % \chronosevent{date={1550},name=event above,at=u1 -| event above,} % \chronosevent{date={1550},name=event below,at=i1 -| event below,} % \chronosmaintitle{name=lavender menace,at=chronos pre |- current bounding box.north, anchor=west} % \end{chronos}} % \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{modern}\label{subfig:modern}}{%^^A % \begin{chronos} % [ % modern, % heading={heading}{chronos year 1500}{chronos year 1900}, % subheading={upper subheading}{chronos year 1500}{chronos year 1900}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 1500}{chronos year 1900}{chronos lower subheadings}, % ] % \chronoslife{dates={1750}:{1800},name=life above,at=u2 -| life above,} % \chronoslife{dates={1750}:{1800},name=life below,at=i2 -| life below,} % \chronoslife{dates={1650}:{1700},name=person above,at=u2 -| person above,} % \chronoslife{dates={1650}:{1700},name=person below,at=i2 -| person below,} % \chronosperiod{dates={1850}:{1900},name=period above,at=u3 -| period above,} % \chronosperiod{dates={1850}:{1900},name=period below,at=i3 -| period below,} % \chronosevent{date={1550},name=event above,at=u1 -| event above,} % \chronosevent{date={1550},name=event below,at=i1 -| event below,} % \chronosmaintitle{name=modern,at=chronos year 1550 |- current bounding box.north} % \end{chronos}} % \caption{\Cref{subfig:lavender-menace} is a variant of \cref{subfig:modern}.}\label{fig:modern-lavender-menace} % \end{adjustwidth} % \end{figure} % \DescribeChronosstyle{modern}\chronosdocidx[symbol=eg,idx pre=on line,type=chronosstyle]{modern}A \chronosstylelabelname{} with a monochrome appearance and sans-serif fonts. % By default, it produces a \conceptname[no idx,link,link to=timeline]{timeline} covering the modern era (1500--1900\,\ce{}). % See \cref{tab:chronosstyles,subfig:modern}. % % % \DescribeChronosstyle{rainbow serif}\chronosdocidx[symbol=eg,idx pre=on line,type=chronosstyle]{rainbow serif}A colourful variant of \keyname[link,idx=false,type=chronosstyle]{serif on line} utilising \pkg{xcolor} colour series and serif fonts. % See \cref{tab:chronosstyles,subfig:rainbow-serif}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{rainbow serif}.\label{subfig:rainbow-serif}} % {\begin{chronos} % [ % rainbow serif, % heading={heading}{chronos year 1800}{chronos year 1900}, % subheading={upper subheading}{chronos year 1800}{chronos year 1900}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 1800}{chronos year 1900}{chronos lower subheadings}, % ] % \chronoslife{dates={1850}:{1870},name=life above,at=u2 -| life above,xshift=10pt,tag anchor=west} % \chronoslife{dates={1850}:{1870},name=life below,at=i2 -| life below,xshift=10pt, tag anchor=west} % \chronoslife{dates={1875}:{1900},name=person above,at=u1 -| person above,xshift=10pt,tag anchor=west} % \chronoslife{dates={1875}:{1900},name=person below,at=i1 -| person below,xshift=10pt,tag anchor=west} % \chronosperiod{dates={1825}:{1850},name=period above,at=u2 -| period above,xshift=-10pt,tag anchor=east} % \chronosperiod{dates={1825}:{1850},name=period below,at=i2 -| period below,xshift=-10pt,tag anchor=east} % \chronosevent{date={1800},name=event above,at=u1 -| event above,xshift=-10pt,tag anchor=east} % \chronosevent{date={1800},name=event below,at=i1 -| event below,xshift=-10pt,tag anchor=east} % \chronosmaintitle{name=rainbow serif,name content={\color{xcolor g2!!+}R\color{xcolor g2!!+}A\color{xcolor g2!!+}I\color{xcolor g2!!+}N\color{xcolor g2!!+}B\color{xcolor g2!!+}O\color{xcolor g2!!+}W \color{xcolor g2!!+}S\color{xcolor g2!!+}E\color{xcolor g2!!+}R\color{xcolor g2!!+}I\color{xcolor g2!!+}F},at=current bounding box.north west,anchor=south west} % \end{chronos}} % \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{serif on line}.\label{subfig:serif-on-line}} % {\begin{chronos} % [ % serif on line, % heading={heading}{chronos year 1800}{chronos year 1900}, % subheading={upper subheading}{chronos year 1800}{chronos year 1900}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 1800}{chronos year 1900}{chronos lower subheadings}, % ] % \chronoslife{dates={1850}:{1870},name=life above,at=u2 -| life above,xshift=10pt,tag anchor=west} % \chronoslife{dates={1850}:{1870},name=life below,at=i2 -| life below} % \chronoslife{dates={1875}:{1900},name=person above,at=u3 -| person above,xshift=-10pt,tag anchor=east} % \chronoslife{dates={1875}:{1900},name=person below,at=i2 -| person below} % \chronosperiod{dates={1825}:{1850},name=period above,at=u2 -| period above,xshift=-10pt,tag anchor=east} % \chronosperiod{dates={1825}:{1850},name=period below,at=i2 -| period below} % \chronosevent{date={1800},name=event above,at=u3 -| event above,xshift=10pt,tag anchor=west} % \chronosevent{date={1800},name=event below,at=i2 -| event below} % \chronosmaintitle{name=serif On line,at=current bounding box.north west,anchor=south west} % \end{chronos}} % \caption{\Cref{subfig:rainbow-serif} is a variant of \cref{subfig:serif-on-line}.}\label{fig:rainbow-serif-on-line} % \end{adjustwidth} % \end{figure} % % \DescribeChronosstyle{serif on line}\chronosdocidx[symbol=eg,idx pre=on line,type=chronosstyle]{serif on line}A \chronosstylelabelname{} with a monochrome appearance and serif fonts. % See \cref{tab:chronosstyles,subfig:serif-on-line}. % % \DescribeChronosstyle{sober judge}\chronosdocidx[symbol=eg,idx pre=on line,type=chronosstyle]{sober judge}A somewhat subdued \chronosstylelabelname{} with a monochrome appearance, sans-serif fonts and boxed \conceptname[idx as=text tag,idx post=sober judge\string\idxeg,idx font post=\KeyFont]{text tags}. % See \cref{tab:chronosstyles,fig:sober-judge}. % \begin{figure} % \centering % \begin{chronos} % [ % sober judge, % heading={heading}{chronos year 1002}{chronos year 1003}, % subheading={upper subheading}{chronos year 1002}{chronos year 1003}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 1002}{chronos year 1003}{chronos lower subheadings}, % ] % \chronoslife{dates={1002}:{1003-06-01},name=life above,at=u1 -| life above} % \chronoslife{dates={1002}:{1003-06-01},name=life below,at=i2 -| life below} % \chronoslife{dates={1002-02-03}:{1003-02-01},name=person above,at=u2 -| person above} % \chronoslife{dates={1002-04-05}:{1003-01-01},name=person below,at=i3 -| person below} % \chronosperiod{dates={1003}:{1003-05-01},name=period above,at=u1 -| period above} % \chronosperiod{dates={1003-02-12}:{1003-03-01},name=period below,at=i1 -| period below} % \chronosevent{date={1002-01-15},name=event above,at=u2 -| event above} % \chronosevent{date={1001-12-24},name=event below,at=i2 -| event below} % \chronosmaintitle{name=sober judge,at=current bounding box.north west,anchor=south west} % \end{chronos} % \caption{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{sober judge}.}\label{fig:sober-judge} % \end{figure} % %^^A END subsubsec:chronos-styles-on-line % % \subsubsection{‘Off Line’ Styles}\label{subsubsec:chronos-styles-off-line}\chronosdocidx[font=\normalfont,type=chronosstyle]{off line} %^^A BEGIN subsubsec:chronos-styles-off-line % % \DescribeChronosstyle{blues below}\chronosdocidx[symbol=eg,idx pre=off line,type=chronosstyle]{blues below}A \chronosstylelabelname{} featuring the \keyname[link,idx=false,type=colscheme]{blues} \colschemelabelname{}, off-set \conceptname[idx as=line,idx post=blues below\string\idxeg,idx font post=\KeyFont]{lines} and \conceptname[idx post=blues below\string\idxeg,idx font post=\KeyFont]{year} labels rotated through 45\textdegree{}. % Intended for \conceptname[idx as=timeline,no idx,link,link to=timeline]{timelines} which add \elementslabelname{} below. % See \cref{tab:chronosstyles,subfig:blues-below}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{blues below}.\label{subfig:blues-below}} % {\begin{chronos} % [ % blues below, % heading={heading}{chronos year 1600}{chronos year 1700}, % subheading={upper subheading}{chronos year 1600}{chronos year 1700}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 1600}{chronos year 1700}{chronos lower subheadings}, % ] % \chronoslife{dates={1750}:{1800},name=life below,at=i2 -| life below,} % \chronoslife{dates={1650}:{1700},name=person below,at=i3 -| person below,} % \chronosperiod{dates={1950}:{2000},name=period below,at=i1 -| period below,} % \chronosevent{date={1550},name=event below,at=i2 -| event below,} % \chronosmaintitle{name=blues below,at=current bounding box.south east,anchor=south east} % \end{chronos}} % \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{flipping blues}.\label{subfig:flipping-blues}} % {\begin{chronos} % [ % flipping blues, % heading={heading}{chronos year 1600}{chronos year 1700}, % subheading={upper subheading}{chronos year 1600}{chronos year 1700}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 1600}{chronos year 1700}{chronos lower subheadings}, % ] % \chronoslife{dates={1750}:{1800},name=life above,at=u2 -| life above,} % \chronoslife{dates={1650}:{1700},name=person above,at=u3 -| person above,} % \chronosperiod{dates={1950}:{2000},name=period above,at=u1 -| period above,} % \chronosevent{date={1550},name=event above,at=u2 -| event above,} % \chronosmaintitle{name=flipping blues, at=u3 -| chronos post,anchor=south east} % \end{chronos}} % \caption{\Cref{subfig:flipping-blues} is a variant of \cref{subfig:blues-below}.}\label{fig:blues} % \end{adjustwidth} % \end{figure} % This \stylelabelname{} demonstrates how to rotate \conceptname[idx post={labels, rotated\string\idxeg}]{year} labels. % % \DescribeChronosstyle{contemporary 90}\chronosdocidx[symbol=eg,idx pre=off line,type=chronosstyle]{contemporary 90}A \chronosstylelabelname{} with a monochrome appearance, sans-serif fonts and rotated year labels, which produces a relatively short \conceptname[no idx,link,link to=timeline]{timeline} of 90mm by default. % Intended for \conceptname[idx as=timeline,no idx,link,link to=timeline]{timelines} which add \elementslabelname{} below. % See \cref{tab:chronosstyles,fig:contemporary90}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \begin{chronos} % [ % contemporary 90, % heading={heading}{chronos year 2004}{chronos year 2010}, % subheading={upper subheading}{chronos year 2004}{chronos year 2010}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 2004}{chronos year 2010}{chronos lower subheadings}, % ] % \chronoslife{dates={2002}:{2008},name=life below,at=i2 -| life below,} % \chronoslife{dates={2010}:{2014},name=person below,at=i2 -| person below,} % \chronosperiod{dates={2015}:{2016},name=period below,at=i1 -| period below,} % \chronosevent{date={2009},name=event below,at=i1 -| event below,} % \chronosmaintitle{name=contemporary 90,at=current bounding box.south west,anchor=north west}, % \end{chronos} % \caption{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{contemporary 90}.}\label{fig:contemporary90} % \end{adjustwidth} % \end{figure} % % \DescribeChronosstyle{flipping blues}\chronosdocidx[symbol=eg,idx pre=off line,type=chronosstyle]{flipping blues}A variation of \keyname[link,idx=false,type=chronosstyle]{blues below} featuring \conceptname[idx post={labels, rotated\string\idxeg}]{year} labels rotated through -45\textdegree{}. % Intended for \conceptname[idx as=timeline,,no idx,link,link to=timeline]{timelines} which add \elementslabelname{} above. % See \cref{tab:chronosstyles,subfig:flipping-blues}. % This \stylelabelname{} demonstrates how to utilise an existing \chronosstylelabelname{} to produce a variant. % % \DescribeChronosstyle{off line colour}\val{length}\chronosdocidx[symbol=eg,idx pre=off line,type=chronosstyle]{off line colour}\AfterLastParam % A straightforward style utilising scientific dates in which the \conceptname[no idx,link,link to=timeline/timeline line]{line} tapers to form an arrow. % Intended for \conceptname[idx as=timeline,,no idx,link,link to=timeline]{timelines} which add \elementslabelname{} above and/or below. % The optional \meta{length} specifies the length of the tapering. % \Default{20mm} % See \cref{tab:chronosstyles,subfig:off-line-col}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{off line colour}.\label{subfig:off-line-col}} % {%^^A % \begin{chronos} % [ % off line colour, % ] % \chronosevent {date={-2080},name=im15 (c),yshift=60pt} % \chronosevent {date={-2115},name=im13 (c),yshift=-80pt} % \chronosevent {date={-2115},name=im26 (b),yshift=20pt} % \chronosevent {date={-2170},name=im20 (b),yshift=100pt} % \chronosevent {date={-2190},name=iiim76 (e),yshift=-120pt} % \chronosevent {date={-2200},name=iiim353 (c),yshift=70pt} % \chronosevent {date={-2245},name=iim69 (c),yshift=30pt} % \chronosevent {date={-2250},name=iim281 (c),yshift=-70pt} % \chronosevent {date={-2145},name=im10 (b),yshift=-50pt} % \chronosevent {date={-2240},name=iim163 (c),yshift=-30pt} % \chronosevent {date={-2475},name=im90 (c),yshift=-70pt} % \chronosevent {date={-2480},name=im90 (b),yshift=20pt} % \chronosevent {date={-2500},name=iim63 (c),yshift=-20pt} % \chronosevent {date={-2550},name=im21 (a),yshift=70pt} % \chronosevent {date={-2570},name=im163 (b),yshift=-50pt} % \chronosevent {date={-2620},name=iim13 (c),yshift=30pt} % \chronosevent {date={-2690},name=im5 (b),yshift=-40pt} % \chronosevent {date={-2760},name=im130 (b),yshift=40pt} % \chronosevent {date={-2770},name=im65 (c),yshift=-15pt} % \chronosevent {date={-2935},name=im157 (r)} % \chronosmaintitle{name=off line colour,at=current bounding box.north west,anchor=north west} % \end{chronos}%^^A % } % \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{off line colour alt}.\label{subfig:off-line-col-alt}} % {%^^A % \begin{chronos} % [ % off line colour alt, % ] % \chronosevent {date={-2080},name=im15 (c),yshift=60pt} % \chronosevent {date={-2115},name=im13 (c),yshift=-80pt} % \chronosevent {date={-2115},name=im26 (b),yshift=20pt} % \chronosevent {date={-2170},name=im20 (b),yshift=100pt} % \chronosevent {date={-2190},name=iiim76 (e),yshift=-120pt} % \chronosevent {date={-2200},name=iiim353 (c),yshift=70pt} % \chronosevent {date={-2245},name=iim69 (c),yshift=30pt} % \chronosevent {date={-2250},name=iim281 (c),yshift=-70pt} % \chronosevent {date={-2145},name=im10 (b),yshift=-50pt} % \chronosevent {date={-2240},name=iim163 (c),yshift=-30pt} % \chronosevent {date={-2475},name=im90 (c),yshift=-70pt} % \chronosevent {date={-2480},name=im90 (b),yshift=20pt} % \chronosevent {date={-2500},name=iim63 (c),yshift=-20pt} % \chronosevent {date={-2550},name=im21 (a),yshift=70pt} % \chronosevent {date={-2570},name=im163 (b),yshift=-50pt} % \chronosevent {date={-2620},name=iim13 (c),yshift=30pt} % \chronosevent {date={-2690},name=im5 (b),yshift=-40pt} % \chronosevent {date={-2760},name=im130 (b),yshift=40pt} % \chronosevent {date={-2770},name=im65 (c),yshift=-15pt} % \chronosevent {date={-2935},name=im157 (r)} % \chronosmaintitle{name=off line colour alt,at=current bounding box.north west,anchor=north west} % \end{chronos}%^^A % } % \caption{\Cref{subfig:off-line-col-alt,subfig:off-line-simple} are variants of \cref{subfig:off-line-col}.}\label{fig:off-line-3} % \end{adjustwidth} % \end{figure} % \begin{figure} % \ContinuedFloat % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{off line simple}.\label{subfig:off-line-simple}} % {%^^A % \begin{chronos} % [ % off line simple, % ] % \chronosevent {date={-2080},name=im15 (c),yshift=60pt} % \chronosevent {date={-2115},name=im13 (c),yshift=-80pt} % \chronosevent {date={-2115},name=im26 (b),yshift=20pt} % \chronosevent {date={-2170},name=im20 (b),yshift=100pt} % \chronosevent {date={-2190},name=iiim76 (e),yshift=-120pt} % \chronosevent {date={-2200},name=iiim353 (c),yshift=70pt} % \chronosevent {date={-2245},name=iim69 (c),yshift=30pt} % \chronosevent {date={-2250},name=iim281 (c),yshift=-70pt} % \chronosevent {date={-2145},name=im10 (b),yshift=-50pt} % \chronosevent {date={-2240},name=iim163 (c),yshift=-30pt} % \chronosevent {date={-2475},name=im90 (c),yshift=-70pt} % \chronosevent {date={-2480},name=im90 (b),yshift=20pt} % \chronosevent {date={-2500},name=iim63 (c),yshift=-20pt} % \chronosevent {date={-2550},name=im21 (a),yshift=70pt} % \chronosevent {date={-2570},name=im163 (b),yshift=-50pt} % \chronosevent {date={-2620},name=iim13 (c),yshift=30pt} % \chronosevent {date={-2690},name=im5 (b),yshift=-40pt} % \chronosevent {date={-2760},name=im130 (b),yshift=40pt} % \chronosevent {date={-2770},name=im65 (c),yshift=-15pt} % \chronosevent {date={-2935},name=im157 (r)} % \chronosmaintitle{name=off line simple,at=current bounding box.north west,anchor=north west} % \end{chronos}%^^A % } % \caption{\Cref{subfig:off-line-col,subfig:off-line-simple} are variants of \cref{subfig:off-line-col-alt}.} % \end{adjustwidth} % \end{figure} % This \stylelabelname{} demonstrates the use of \keyname[type=layer,link to=chronos middle ground]{chronos middle ground layer} to reduce visual clutter where \conceptname[idx as=connection,idx post=reducing visual clutter]{connections} cross \conceptname[idx post=in \string\textkey{off line colour}\string\idxeg]{timeline marks}. % Although the \conceptname[idx as=connection,idx post=on \string\textkey{chronos middle ground layer}]{connections} are drawn after the \conceptname[no idx,link,link to=timeline]{timeline}, they are placed on a lower \layerlabelname{}, with a partially transparent rectangle in between. % % \DescribeChronosstyle{off line colour alt}\val{length}\chronosdocidx[symbol=eg,idx pre=off line,type=chronosstyle]{off line colour alt}\AfterLastParam % A variant of \keyname[link,idx=false,type=chronosstyle]{off line colour} which uses a different \colschemelabelname{}. % \Default{20mm} % See \cref{tab:chronosstyles,subfig:off-line-col-alt}. % % \DescribeChronosstyle{off line simple}\val{length}\chronosdocidx[symbol=eg,idx pre=off line,type=chronosstyle]{off line simple}\AfterLastParam % A less colourful variant of \keyname[link,idx=false,type=chronosstyle]{off line colour} utilising only two colours\texseans[%^^A % In fact, this version is closest to the original. % See]{324106}. % \Default{20mm} % See \cref{tab:chronosstyles,subfig:off-line-simple}. % % \DescribeChronosstyle{rotated 45}\chronosdocidx[symbol=eg,idx pre=off line,type=chronosstyle]{rotated 45}A \chronosstylelabelname{} featuring the off-set \conceptname[idx as=line,idx post=rotated 45\string\idxeg,idx font post=\KeyFont]{lines} and \conceptname[idx as=\meta{tag}/text tag,idx post=rotated]{text tags} rotated through 45\textdegree{}. % Intended for \conceptname[idx as=timeline,no idx,link,link to=timeline]{timelines} which add \elementslabelname{} below. % See \cref{tab:chronosstyles,fig:rotated45}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \begin{chronos} % [ % rotated 45, % heading={heading}{chronos year -20}{chronos year 15}, % subheading={upper subheading}{chronos year -20}{chronos year 15}{chronos upper subheadings}, % subheading={lower subheading}{chronos year -20}{chronos year 15}{chronos lower subheadings}, % ] % \chronoslife{dates={-25}:{3},name=life below,} % \chronoslife{dates={-5}:{10},name=person below,} % \chronosperiod{dates={-1}:{11},name=period below,} % \chronosevent{date={18},name=event below,} % \chronosmaintitle{name=rotated 45, at=current bounding box.south west,anchor=base west} % \end{chronos} % \caption{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{rotated 45}.}\label{fig:rotated45} % \end{adjustwidth} % \end{figure} % This \stylelabelname{} demonstrates how to rotate \conceptname[idx as=\meta{tag}/text tag,idx post=rotated\string\idxeg]{text tags}. % % \DescribeChronosstyle{simple arrow}\val{length}\chronosdocidx[symbol=eg,idx pre=off line,type=chronosstyle]{simple arrow}\AfterLastParam % A monochrome appearance with a plain 200mm arrow \conceptname[no idx,link]{timeline} and \conceptname[idx post=in \string\textkey{simple arrow}\string\idxeg]{years,marks} above\texseans{342699}. % \meta{length} determines the length of the taper comprising the arrow. % \Default{10mm} % Intended for \conceptname[idx as=timeline,no idx,link,link to=timeline]{timelines} which add \elementslabelname{} below. % See \cref{tab:chronosstyles,fig:simple-arrow}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering \chronosdoctroibocs{0}{0pt}{*}{%^^A % \begin{chronos} % [%^^A ateb: https://tex.stackexchange.com/a/342699/ % simple arrow, % heading={heading}{chronos year 1}{chronos year 1000}, % subheading={upper subheading}{chronos year 1}{chronos year 500}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 1}{chronos year 750}{chronos lower subheadings}, % ] % \chronosperiod {dates={476-01-01}:{476-10-31},name=period,line+={draw=gray}} % \chronosevent {date={1492-10-11},name=event} % \chronoslife {dates={1969-07-21}:{2010-08-24},name=life} % \chronosmaintitle{name=simple\\arrow, at=current bounding box.south west,anchor=south west} % \end{chronos} % }% % \caption{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{simple arrow}.}\label{fig:simple-arrow} % \end{adjustwidth} % \end{figure} % % \DescribeChronosstyle{somewhat plain}\chronosdocidx[symbol=eg,idx pre=off line,type=chronosstyle]{somewhat plain}A \chronosstylelabelname{} with a monochrome appearance and sans-serif fonts which produces a relatively short \conceptname[no idx,link]{timeline} of 100mm by default. % Intended for \conceptname[idx as=timeline,no idx,link,link to=timeline]{timelines} which add \elementslabelname{} below. % See \cref{tab:chronosstyles,fig:somewhat-plain}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \begin{chronos} % [ % somewhat plain, % heading={heading}{chronos year 400}{chronos year 500}, % subheading={upper subheading}{chronos year 400}{chronos year 500}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 400}{chronos year 500}{chronos lower subheadings}, % ] % \chronoslife{dates={400-12-22}:{425-12-22},name=life below,at=i2 -| life below,} % \chronoslife{dates={{-500}-01-01}:{{-425}-01-01},name=person below,at=i3 -| person below,} % \chronosperiod{dates={600}:{1025},name=period below,at=i1 -| period below,} % \chronosevent{date={2000},name=event below,at=i2 -| event below,} % \chronosmaintitle{name=somewhat plain,at=current bounding box.north east,anchor=south east,yshift=15pt} % \end{chronos} % \caption{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{somewhat plain}.}\label{fig:somewhat-plain} % \end{adjustwidth} % \end{figure} % This \stylelabelname{} demonstrates how to create a \stylelabelname{} to draw lines above and below the \conceptname[idx post=somewhat plain\string\idxeg,idx font post=\KeyFont]{main title} node, without drawing the left and right sides of the node. % % % %^^A END subsubsec:chronos-styles-off-line % % \subsubsection{‘No Year’ Styles}\label{subsubsec:chronos-styles-no-years}\chronosdocidx[type=chronosstyle,font=\normalfont]{no-year} %^^A BEGIN subsubsec:chronos-styles-no-years % % \DescribeChronosstyle{event splitter}\chronosdocidx[symbol=eg,idx pre=no-year,type=chronosstyle]{event splitter}A 150mm \conceptname[no idx,link]{timeline} with no \conceptname[no idx]{year} labels which demonstrates the use of \keyname[link,idx=false,type=boolkey]{event dates split}\texseans{325890}. % \emph{Intended for \conceptname[idx as=timeline,no idx]{timelines} with \conceptname[idx as=connected element]{connected elements} solely of \conceptname[type=concept,no idx]{tag} type \conceptname[type=tag,idx post=style for \string\textconcept{elements} of type]{event}.} % See \cref{tab:chronosstyles,fig:event-splitter}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \begin{chronos} % [%^^A ateb: https://tex.stackexchange.com/a/325890/ % event splitter, % ] % \chronosevent {date={2014-01-13},name=event 1} % \chronosevent {date={2014-01-20},name=event 2} % \chronosevent {date={2014-01-27},name=event 3} % \chronosevent {date={2014-02-03},name=event 4} % \chronosevent {date={2014-02-10},name=event 5} % \chronosevent {date={2014-02-17},name=event 6\\\& intervention} % \chronosevent {date={2014-02-22},name=the end} % \chronosmaintitle {name=event splitter,at=current bounding box.north,anchor=south} % \end{chronos} % \caption{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{event splitter}.}\label{fig:event-splitter} % \end{adjustwidth} % \end{figure} % % \DescribeChronosstyle{lines on line}\val{dimension}\chronosdocidx[symbol=eg,idx pre=no-year,type=chronosstyle]{lines on line}\AfterLastParam % A 120mm \conceptname[no idx,link]{timeline} arrow, \meta{dimension} high, with no \conceptname[no idx]{year} labels and \conceptname[type=tag,no idx,link]{life,event,period} \conceptname[idx as=line,idx post=lines on line\string\idxeg,idx font post=\KeyFont]{lines} drawn on the \conceptname[no idx,link]{timeline} itself\texseans{324453}. % Date information is confined to \conceptname[idx as=text tag,idx post=lines on line\string\idxeg,idx font post=\KeyFont]{text tags}. % Out-of-the-box, this \chronosstylelabelname{} adds \elementslabelname{} of \conceptname[type=concept,no idx,link]{tag} type \conceptname[type=tag,idx post=default placement (\string\textkey{lines on line})]{event} above and those of type \conceptname[type=tag,idx post=default placement (\string\textkey{lines on line})]{life,period} below. % \Default{5mm} % See \cref{tab:chronosstyles,fig:lines-on-line}. % \AdviceTracingOn % \mmzTracingOn % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{lines on line}.\label{subfig:lines-on-line}} % {%^^A % %^^A ateb: https://tex.stackexchange.com/a/324453/ % \begin{chronos} % [ % lines on line, % chronos coords={1,500,750,1000}, % heading={heading}{chronos year 1}{chronos year 1000}, % subheading={upper subheading}{chronos year 1}{chronos year 500}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 1}{chronos year 750}{chronos lower subheadings}, % ] % \chronosperiod{dates=1000:1999,name=period below} % \chronoslife{dates=192:476,name=long-lived person below} % \chronosevent {date={1969},name=event above,place above} % \chronosmaintitle{name=lines on line,at=current bounding box.north west,anchor=north west} % \end{chronos}%^^A % } % \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{plain arrow}.\label{subfig:plain-arrow}} % {%^^A % \begin{chronos} % [%^^A ateb: https://tex.stackexchange.com/a/324453/ % plain arrow, % chronos coords={1,500,750,1000}, % heading={heading}{chronos year 1}{chronos year 1000}, % subheading={upper subheading}{chronos year 1}{chronos year 500}{chronos upper subheadings}, % subheading={lower subheading}{chronos year 1}{chronos year 750}{chronos lower subheadings}, % ] % \chronosperiod{dates=1000:1999,name=period below} % \chronoslife{dates=192:476,name=long-lived person below} % \chronosevent {date={1969},name=event above,place above} % \chronosmaintitle{name=plain arrow,at=current bounding box.north west,anchor=north west} % \end{chronos} % }% % \caption{\Cref{subfig:plain-arrow} is a variant of \cref{subfig:lines-on-line}.}\label{fig:lines-on-line} % \end{adjustwidth} % \end{figure} % \mmzTracingOff % \AdviceTracingOff % % \DescribeChronosstyle{plain arrow}\val{dimension}\chronosdocidx[symbol=eg,idx pre=no-year,type=chronosstyle]{plain arrow}\AfterLastParam % A variant of \keyname[link,idx=false,type=chronosstyle]{lines on line} (\cref{fig:lines-on-line}) which draws a 120mm \conceptname[no idx,link]{timeline} arrow with no \conceptname[no idx]{year} labels and \conceptname[type=tag,no idx,link]{life,event,period} \conceptname[idx as=line,idx post=plain arrow\string\idxeg,idx font post=\KeyFont]{lines} drawn on the \conceptname[no idx,link]{timeline} itself\texseans{324453}. % Date information is confined to \conceptname[idx as=text tag,idx post=plain arrow\string\idxeg,idx font post=\KeyFont]{text tags}. % \Default{5mm} % Intended for \conceptname[idx as=timeline,no idx,link,link to=timeline]{timelines} which add \elementslabelname{} of \conceptname[type=concept,no idx]{tag} type \conceptname[type=tag,idx post=plain arrow\string\idxeg,idx font post=\KeyFont]{event} above and those of type \conceptname[type=tag,idx post=plain arrow\string\idxeg,idx font post=\KeyFont]{life,period} below. % See \cref{tab:chronosstyles,subfig:plain-arrow}. % %^^A END subsubsec:chronos-styles-no-years % %^^A END subsec:chronos-styles % % \subsection{Chronos Colour Schemes}\label{subsec:chronos-schemes}\chronosdocidx[type=concept,target,font=\ConceptFont,idx post=using]{colour scheme}\vspace{-\baselineskip} %^^A BEGIN subsec:chronos-schemes % % As explained in \cref{subsec:lliwiau}, \pkg{chronos} utilises a somewhat complex system for colour customisation. % In many cases, however, you will not need to delve into the mechanisms used. % Instead, you can simply load an existing \conceptname[type=concept,idx post=load existing]{colour scheme}. % If none of the provided schemes meet your needs, see \cref{subsec:chronos-scheme-creation}. % % To load a \colschemeslabelname{}, you just write % \begin{chronoscode}[colour,scheme,blues] % \begin{chronos} % [ % modern, % colour scheme=blues, % ] % \end{chronos} % \end{chronoscode} % which would load the \chronosstylelabelname{} \keyname[link,idx=false,type=chronosstyle]{modern} followed by the \colschemeslabelname{} \keyname[link,idx=false,type=colscheme]{blues}. % Since \chronosstyleslabelname{} may legitimately load \colschemeslabelname{}, but \colschemeslabelname{} may not load \chronosstyleslabelname{}, always load any \chronosstylelabelname{} \emph{before} any \colschemelabelname{}. % Then make any further modifications you wish. % \begin{chronoscode} % \begin{chronos} % [ % modern, % colour scheme=blues, % timeline={% % dates=1066:1946, % }, % event/default colour=ForestGreen, % every text tags+={draw=##1}, % ] % \end{chronos} % \end{chronoscode} % % \DescribeKey{colour scheme,color scheme}\valmarg{name}\AfterLastParam % \meta{name} should be the name of a \conceptname[type=concept]{colour scheme}. % A small number of \colschemeslabelname{} are provided by \pkg{chronos} (\cref{subsec:chronos-schemes}); others may be defined using the method explained in \cref{subsec:chronos-scheme-creation}. % \Default*{}the default set of colours. % \Example{colour scheme=cronoleg} % \chronosstyleslabelname{} may load \colschemeslabelname{} and typically should if they wish to make significant changes. % % In addition to the default colours, \pkg{chronos} currently provides \keyname[type=colscheme]{blues,contninety,cronoleg,lavender,modern,offlinebasic,offlinealt,sobriety,xcolseries} (\cref{tab:colschemes}). % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{\Pkg{chronos} \Colschemeslabelname{}.}\label{tab:colschemes} % \chronosdocidx[type=colscheme,font=\normalfont]{list of} % \begin{tabular}{>{\ttfamily}l>{\ttfamily}l>{\ttfamily}ll} % \toprule % \sffamily \Colschemelabelname{} & \sffamily Variant Of & \sffamily Default For & \sffamily Examples \\\midrule % \fycross{} \normalfont (default) & \fycross{} & \keyname[type=chronosstyle,idx post=use of \string\texttt{default} \string\textsf{colour scheme}]{rotated 45,serif on line,somewhat plain} & \cref{fig:rotated45,fig:rhag,fig:somewhat-plain,subfig:serif-on-line} \\ % \hypertarget{colscheme:blues}{blues} & \fycross{} & \keyname[type=chronosstyle,idx post=use of \string\texttt{blues} \string\textsf{colour scheme}]{blues below,flipping blues} & \cref{fig:chronos-dev,subfig:blues-below,subfig:flipping-blues} \\ % \hypertarget{colscheme:contninety}{contninety} & \fycross{} & \keyname[type=chronosstyle,idx post=use of \string\texttt{contninety} \string\textsf{colour scheme}]{contemporary 90} & \cref{fig:contemporary90} \\ % \hypertarget{colscheme:cronoleg}{cronoleg} & \fycross{} & \keyname[type=chronosstyle,idx post=use of \string\texttt{cronoleg} \string\textsf{colour scheme}]{cronoleg} & \cref{fig:cronoleg} \\ % \hypertarget{colscheme:lavender}{lavender} & \fycross{} & \keyname[type=chronosstyle,idx post=use of \string\texttt{lavender} \string\textsf{colour scheme}]{lavender menace} & \cref{subfig:lavender-menace} \\ % \hypertarget{colscheme:modern}{modern} & \fycross{} & \keyname[type=chronosstyle,idx post=use of \string\texttt{modern} \string\textsf{colour scheme}]{modern} & \cref{subfig:modern} \\ % \hypertarget{colscheme:offlinebasic}{offlinebasic} & \fycross{} & \keyname[type=chronosstyle,idx post=use of \string\texttt{offlinebasic} \string\textsf{colour scheme}]{off line colour,off line simple} & \cref{subfig:off-line-col,subfig:off-line-simple} \\ % \hypertarget{colscheme:offlinealt}{offlinealt} & cronoleg & \keyname[type=chronosstyle,idx post=use of \string\texttt{offlinealt} \string\textsf{colour scheme}]{off line colour alt} & \cref{subfig:off-line-col-alt}\\ % \hypertarget{colscheme:sobriety}{sobriety} & \fycross{} & \keyname[type=chronosstyle,idx post=use of \string\texttt{sobriety} \string\textsf{colour scheme}]{sober judge} & \cref{fig:sober-judge} \\ % \hypertarget{colscheme:xcolseries}{xcolseries} & \fycross{} & \keyname[type=chronosstyle,idx post=use of \string\texttt{xcolseries} \string\textsf{colour scheme}]{rainbow serif} & \cref{subfig:rainbow-serif} \\ % \bottomrule % \end{tabular} % \end{adjustwidth} % \end{table} % New \colschemeslabelname{} may be created using the interface explained in \cref{subsec:chronos-scheme-creation}. % %^^A END subsec:chronos-schemes % %^^A END sec:schemes-styles % %^^A \restoregeometry %^^A \setlength\tewadjust{\marginparwidth+\marginparsep-\paperwidth+\textwidth+\oddsidemargin+1in}% %^^A \fancyheadoffset[lh]{\tewadjust}% % % % % % \section{Configuration}\label{sec:config} %^^A BEGIN sec:config % % \Pkg{chronos} was designed to be highly configurable. % However, by far the \emph{easiest} way to customise a \conceptname[idx post=customisation]{timeline} is to load a \conceptname[type=chronosstyle,idx as=using,font=\normalfont]{chronos style}. % See \cref{subsec:chronos-styles}. % % Most configuration uses the standard key/value interface provided by \TikZ{}. % In addition, a \keyname[type=macro,idx post=purpose]{\cs{chronosset}} is provided for configuring defaults. % % Most \pkg{chronos} options have local scope. % That is, changes do not survive the current group. % % However, a small number of options are set \emph{globally}. % In these cases, \pkg{chronos} keeps track of a list of defaults, as well as the current options, and restores the defaults at the beginning and end of each \enviro{chronos} \envlabelname{}. % By default, \keyname[no idx,type=macro]{\cs{chronosset}} changes the default values of globalised options, whereas the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} does not. % % Globalised options saved as default are stored in \pkgname[no link]{expl3} variables named with a \pkglabelname{}-specific prefix. % A similar prefix is used for globalised \colourslabelname{}. % % \DescribeMacro{\chronosset}\marg{key-value list}\AfterLastParam % \DescribeMacro{\chronosset*}\marg{key-value list}\AfterLastParam % This should be used to configure \pkg{chronos} \emph{outside} the \keyname[link,idx=false,type=env]{chronos} environment. % It should \emph{not} be used within that environment. % The starred version does \emph{not} make any global changes. % In general, there is no reason to use the starred version as altering these variables non-globally will have no effect and other variables are not set globally in any case. % It is provided ‘just in case’, even though I can't think of a use-case for it. % % \Pkg{chronos} sets the following options globally. % At the end of the preamble, the active values are saved. % These are then restored at the end of each \keyname[link,idx=false,type=env]{chronos} environment. % This means the results of typesetting a \conceptname[idx post=independent of earlier]{timeline} should not depend on earlier \conceptname[idx as=timeline,no idx]{timelines} in the same document, a phenomenon which may otherwise result in changes of position and colour, for example. % Options set globally: % \begin{itemize} % \item the list of \keyname[idx=false,link,type=clistkey]{century subheadings} (but neither other subheadings nor headings are globalised); % \item most colours and lists of colours; % \item whether the last \keyname[idx=false,link,prefix=\meta{tag}/]{text tag} of a particular kind (\conceptname[type=tag,idx post=last position set globally,conj=or]{event,period}) was placed above or below the \conceptname[no idx]{timeline}. % \end{itemize} % All other settings should behave as usual for \pgf{}/\TikZ{} as they are not handled specially and all other \latex3 variables are declared locally. % % This approach is intended to ensure that things behave as I expect you to expect, but it is obviously not unlikely you may expect something I don't expect you to expect. % For this reason, it is strongly recommended that document-wide settings be configured in the preamble of your document. % \keyname[type=macro,idx post=when (not) to use in document body]{\cs{chronosset}} should be used in the document body \emph{only} when you wish to change the document defaults partway through your document. % If at all possible, I recommend the use of styles, configured in the preamble, instead, but there will be cases where such an approach may be sub-optimal. % \cs{chronosset} may be used later in such cases. % % In particular, you are urged to configure default \conceptname[type=colour,idx as=default,font=\normalfont]{colours} and \conceptname[type=collist,idx as=when to configure,font=\normalfont]{colour lists}, in your preamble. % See \cref{subsec:lliwiau,subsec:lliwiau-basic,subsec:add-elements-gconfig}. % If you get unexpected colours, please remember that \pkg{chronos} defines most colours \emph{globally}. % They are \emph{not} limited to the current \keyname[link,idx=false,type=env]{chronos} environment. % That is, \pkg{chronos} lets you customise the colours in many different ways, including many you might wish it did not. % % \subsection{Documentation Notes}\label{subsec:subsec:nodau} %^^A BEGIN subsec:subsec:nodau % % The following notes apply throughout this document. % % \subsubsection{Font Conventions}\label{subsubsec:fonts-conv} %^^A BEGIN subsubsec:fonts-conv % % This document uses the following typographic conventions. % \begin{description}[font=\normalfont] % \item[\textbf{Bold}/\textbf{\textit{Bold Italics}}] are used to emphasise important points, especially ones which might be overlooked. % \item[\textit{Italics}] are used with \textit{<} and \textit{>} for \marg{mandatory arguments}, \oarg{optional arguments} and \meta{parameterised values}. % When used in the text without delimiters, they are used for emphasis in accordance with standard typographic conventions for English language texts. % \item[\texttt{Monowidth Typewriter}] is used for \cs{macros} (e.g.~\cs{commands}), \enviro{\envslabelname}. \keyname[no idx,no link]{key names} and \texttt{code}. % \item[\textsf{Sans Serif}] is used for \conceptname[no idx,type=concept]{\conceptslabelname}, \conceptname[no idx]{\elementslabelname}, \pkg{package names} and \cls{class names}. % \end{description} % % The distinction between a ‘concept’, an ‘element’ and a ‘key’ is not always obvious. % Where discussion meanders through the borderlands of fuzzy concepts\footnote{%^^A % A ‘fuzzy concept’ is one whose extension cannot be precisely defined without arbitrariness. % For example, there are clear cases where ‘bald’ applies and equally clear cases where it does not, but there is no non-arbitrary point at which non-baldness becomes baldness. % ‘Bald’ is clear in the middle and clear well beyond its scope, but decidedly fuzzy at its edges.%^^A % }, the font in which a word appears is sometimes arbitrary and the choice should not be taken too seriously. % Moreover, some words, such as ‘timeline’, are used for all three. % %^^A END subsubsec:fonts-conv % % \subsubsection{Keys and Values\label{subsubsec:keys-values}} %^^A BEGIN subsubsec:keys-values % % \Pkg{chronos} provides a user interface for customisation based almost exclusively on \pkgname[no link]{pgfkeys}. % % % \paragraph{Keys}\label{nod:keys} % In case you have somehow come across this package shortly after landing in contemporary \TeX{}land, the basic idea is that the package provides a set of \conceptname[type=key,idx as=key]{keys} which you use selectively to customise the output. % Some of these keys are simple keywords. % \Example{no connections,} % % \paragraph{Values}\label{nod:values} % When \keyslabelname{} permit or require arguments, the arguments are called \parameter{values}. % A given \keylabelname{} will generally require a \meta{value} of some particular sort, as explained for each \keylabelname{} below. % % Some \pkg{chronos} \keyslabelname{} permit an argument, but don't require it. % \Example{frame,} % \Example{frame=true,} % \Example{frame=false,} % The above are all valid (with the first two being equivalent). % % Other \pkg{chronos} \keyslabelname{} require one or more arguments. % \Example{colour=Cerulean,} % \Example{heading=\{chronos year -150\}\{chronos year 250\}\{past\},} % \Pkg{chronos} frequently requires multiple arguments to be separated by colons, because this often seemed less error-prone than multiplying curly brackets in complex cases. % \Example{dates=\{\{-100\}-01-12\}:\{900-12-24\},} % In some instances, where a proliferation of colons seemed no less an invitation to error than one of curly brackets, the colon cases are convenience \keyslabelname{}, which you can avoid through the use of two or more alternate \keyslabelname{} to specify items separately. % % \paragraph{Key-Value Lists\label{nod:rhestrau-kv}} % \meta{key-value list}s are comma-separated lists of items, each of which is either a simple \meta{key-name} or a \meta{key-name}\valmarg{comma-separated list of values}. % In general, the \meta{comma-separated list of values} will be a \TikZ{} \meta{key-value list}, though it may sometimes be appropriate to include further \pkg{chronos} \keyslabelname{}. % \Example{event/line=\{draw=blue,draw opacity=.75\}} % %^^A END subsubsec:keys-values % % \subsubsection{Key Specifications}\label{subsubsec:key-spec}\chronosdocidx[type=key,font=\normalfont]{documentation,specification} %^^A BEGIN subsubsec:key-spec % % Key specifications in this document look like this: % % \DescribeKeytype[noindex]{key name}\val{argument specification} \fortags{tag1,tag2,tag3,\dots{}}\AfterLastParam % \meta{Description of key and explanation of usage.} % \Default*{}\meta{key's default value}\par % \Initial*{}\meta{key's initial value}\par % \Example{\meta{example of usage}}\par % \meta{Commentary.}\par % Here, {\MacroFont\makeatletter\color{doctools@ColorCodeNames}\makeatother key name} is the name of the \keylabelname{}, {\macrolabelfont key type} is the type of \keylabelname{}, \meta{argument specification} specifies the number, kind and format of the value or values the \keylabelname{} expects and {\macrolabelfont tag1, tag2, tag3, \dots{}} indicates to \elementslabelname{} of which \conceptname[type=concept,idx as=tag,conj=or,idx post=in \string\textkey{key} specifications]{tag,tags} the \keylabelname{} applies. % See \cref{tab:key-types} for an explanation of the types of \keylabelname{} \pkg{chronos} uses. % See \cref{sec:anatomy,subsec:mathau} for information about \conceptname[type=concept,idx as=tag,link,link to=tag,no idx]{tags}. % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{\pkg{chronos} \keylabelname{} types.}\label{tab:key-types} % \begin{tabular}{>{\macrolabelfont}ll>{\ttfamily}l} % \toprule % \normalfont\sffamily Key type & \sffamily Description & \sffamily Example \\ \midrule % \boolkeylabelname & Controls a boolean or toggle i.e.~a conditional. & \\ % \choicelabelname & Selects from a list of possible options. & \\ % \clistkeylabelname & Processes or stores a comma-separated list of things. & \\ % \colkeylabelname & Specifies a colour. & \\ % \collistkeylabelname & Special kind of \clistkeylabelname{} which stores a list of colours. & \\ % \datekeylabelname & Specifies a date or dates. & \\ % \dateformatlabelname & Specifies one or more date output formats. & \\ % \dimkeylabelname & Specifies a \TeX{} dimension. & \\ % \keylabelname & Some other kind of \keylabelname. & \\ %^^A \lgthkeylabelname & Specifies a \LaTeX{} length. & \\ % \stylelabelname & A \pgf/\TikZ{} \stylelabelname{}. & \\ % \bottomrule % \end{tabular} % \end{adjustwidth} % \end{table} % % % % \emph{If no initial value is specified, the default value is also the initial value.} % Where both an initial and a default value are specified, the default is the value used if the \meta{key name} is given without an argument and the initial value is the value used if \meta{key name} is not used at all. % This terminology follows the usage in \pkg{pgfkeys} and is especially prevalent in the handling of \boolkeyslabelname{}, where it is common for the initial value to be \texttt{false}, but the default value to be \texttt{true}. % % Schematically, % \begin{chronoscode}[key,name] % \begin{chronos}% ^^A initial value used % [ % % ^^A other keys % ] % \end{chronos} % \begin{chronos}%^^A default value used % [ % %^^A other keys % key name, % ] % \end{chronos} % \begin{chronos}%^^A new value used % [ % %^^A other keys % key name=new value, % ] % \end{chronos} % \end{chronoscode} % %^^A END subsubsec:key-spec % % \subsubsection{Syntax Notes\label{subsubsec:nodiadau-syntax}} %^^A BEGIN subsubsec:syntax % % \emph{See \cref{subsubsec:nodiadau-dims} for the syntax of \dimkeyslabelname{}, where plus and prime have different meanings.} % % \paragraph{Slash (\texttt{/})\label{nod:slash}}\chronosdocindex{/ (forward slash)\actualchar\texttt{/} (forward slash)} % Where a forward slash (\texttt{/}) occurs in a \keylabelname{}, it indicates a context-specific \keylabelname{}. % For those familiar with \pgf{} keys, this corresponds to a path under \texttt{/chronos}. % \Example{life/connection} indicates a key affecting \conceptname[type=element,idx as=connection,idx post=documentation\string\idxeg]{connection(s)} belonging to \elementslabelname{} of type \conceptname[type=tag,idx post=as prefix\string\idxeg]{life}. % % \paragraph{Plus (\texttt{+})\label{nod:plus}}\chronosdocindex{+ (plus)\actualchar\texttt{+} (plus)} % A plus sign (\texttt{+}) at the end of a \keylabelname{} indicates that the \keylabelname{} \emph{adds} to any pre-existing list. % This form is generally available when the base key replaces, rather than adding to, any pre-existing list. % \begin{chronoscode} % timeline line={draw=black,fill=green}, % timeline line+={opacity=.8}, % \end{chronoscode} % is equivalent to % \begin{chronoscode} % timeline line={draw=black,fill=green,opacity=.8}, % \end{chronoscode} % A plus at the end of a \dimkeylabelname{} indicates that the \dimkeylabelname{} \emph{adds} the value given to the current value of the dimension. % % \paragraph{Prime (\texttt{\textquotesingle})\label{nod:prime}}\chronosdocindex{' (prime)\actualchar\texttt{\textquotesingle} (prime)} % A prime (\texttt{\textquotesingle}) at the end of a \keylabelname{} indicates that the \keylabelname{} \emph{replaces} any pre-existing list. % This form is generally available when the base key adds to, rather than replacing, any pre-existing list. % \begin{chronoscode} % century subheadings={15,17,19}{th}, % century subheadings'={13,14}{th}, % century subheading={21}{st}, % \end{chronoscode} % is equivalent to % \begin{chronoscode} % century subheadings'={13,14}{th}, % century subheading={21}{st}, % \end{chronoscode} % and will result in \conceptname[type=element]{subheadings} being created for the 13\textsuperscript{th}, 14\textsuperscript{th} and 21\textsuperscript{st} centuries (assuming the \conceptname[no idx]{timeline} covers these time periods and the relevant coordinates exist). % % A prime at the end of a \dimkeylabelname{}, or at the end except for a plus (\texttt{\textquotesingle+}), indicates that the \dimkeylabelname{} expects a \TeX{} dimension, as opposed to an expression to be evaluated by \pkgname[no link]{pgfmath}. % %^^A END subsubsec:syntax % % \subsubsection{Dimension Notes}\label{subsubsec:nodiadau-dims}\chronosdocindex{dimensions} %^^A BEGIN subsubsec:nodiadau-dims % % \paragraph{Dimensions\label{nod:dims}} % Each \keylabelname{} described as a \dimkeyslabelname{} is available in six forms\footnote{%^^A % Occasionally, a convenience \keylabelname{} may only support the prime, prime-plus and prime-minus forms. % Where this applies, the limitation is noted in the description.%^^A % }: % % \DescribeDimkey{\meta{\dimkeylabelname{}}}\valmarg{pgfmath-parsable dimension}\AfterLastParam % The \dimkeylabelname{} parses the \meta{specified value} using \pkgname[no link,idx post=\string\meta{value} parsed by]{pgfmath} and assigns the result in points as the dimension. % This base form, which is typically the only form explicitly listed in this documentation, is slow but flexible. % Unless otherwise noted, the existence of the base form implies the availability of all six variants. % % \DescribeDimkey{\meta{\dimkeylabelname{}}\texttt{\textquotesingle}}\valmarg{dimension}\AfterLastParam % The \dimkeylabelname{} expects a \TeX{} \meta{dimension}, complete with units, which it assigns directly. % This is faster but less flexible.\chronosdocidx[type=pkg,idx post=\string\meta{value}\string\texttt{\string\textquotesingle} not parsed by]{pgfmath} % % \DescribeDimkey{\meta{\dimkeylabelname{}}\texttt{+}}\valmarg{pgfmath-parsable dimension}\AfterLastParam % The \dimkeylabelname{} parses the expression $( \meta{specified value} + \meta{existing value} )$ with \pkgname[no link,idx post=\string\meta{value}\string\texttt{+} parsed by]{pgfmath} and assigns the result in points. % This is slower but more flexible. % % \DescribeDimkey{\meta{\dimkeylabelname{}}\texttt{\textquotesingle+}}\valmarg{dimension}\AfterLastParam % The \dimkeylabelname{} expects a \TeX{} \meta{dimension}, complete with units, which it adds to the \meta{existing dimension value} directly.\chronosdocidx[type=pkg,idx post=\string\meta{value}\string\texttt{\string\textquotesingle+} not parsed by]{pgfmath} % This is faster but less flexible. % % \DescribeDimkey{\meta{\dimkeylabelname{}}\texttt{-}}\valmarg{pgfmath-parsable dimension}\AfterLastParam % The \dimkeylabelname{} parses the expression $( \meta{specified value} - \meta{existing value} )$ with \pkgname[no link,idx post=\string\meta{value}\string\texttt{-} parsed by]{pgfmath} and assigns the result in points. % This is slower but more flexible. % % \DescribeDimkey{\meta{\dimkeylabelname{}}\texttt{\textquotesingle-}}\valmarg{dimension}\AfterLastParam % The \dimkeylabelname{} expects a \TeX{} \meta{dimension}, complete with units, which it subtracts from the \meta{existing dimension value} directly.\chronosdocidx[type=pkg,idx post=\string\meta{value}\string\texttt{\string\textquotesingle-} not parsed by]{pgfmath} % This is faster but less flexible. % % When \dimkeyslabelname{} end in prime\chronosdocindex{' (prime)\actualchar\texttt{\textquotesingle} (prime)}, prime-plus\chronosdocindex{'+ (prime-plus)\actualchar\texttt{\textquotesingle+} (prime-plus)} or prime-minus\chronosdocindex{'- (prime-minus)\actualchar\texttt{\textquotesingle-} (prime-minus)}, \meta{dimension}s must be given as \TeX{} dimensions complete with units and may not require calculation. % \Example{timeline height\textquotesingle=10mm} % \Example{timeline border height\textquotesingle+=20pt} % \Example{timeline width\textquotesingle-=2em} % % When \dimkeyslabelname{} do not include prime, any value which can be parsed by \pkgname[no link,no idx]{pgfmath} is valid. % \Example{timeline height=.01\bs textheight} % \Example{timeline border height+=1.5\bs headrulewidth} % \Example{timeline width-=0.05\bs linewidth+1.5pt} % %^^A END subsubsec:nodiadau-dimsnodiadau-dims % % \subsubsection{Date Specification Notes}\label{subsubsec:nodiadau-dyddiadau} %^^A BEGIN subsubsec:nodiadau-dyddiadau % % \paragraph{Date Format Specifications\label{nod:fformatiau-dyddiadau}} % A \meta{date format specification} (\meta{date format spec.}) is an expression using the syntax explained in \cref{subsubsec:dyddiad-output}. % \Example{date format=\{!d !B !Y !E\}} % % \paragraph{Dates\label{nod:dyddiadau}} % \meta{date}s must be specified using the syntax explained in \cref{subsubsec:dyddiad-input}. % \Example{dates=\{\{-200\}-04-05\}:\{200-12-31\}} % %^^A END subsubsec:nodiadau-dyddiadaunodiadau-dyddiadau % % % \subsubsection{Colour Notes}\label{subsubsec:nodiadau-lliwiau} %^^A BEGIN subsubsec:nodiadau-lliwiau % % \paragraph{Colours\label{nod:lliwiau}} % \meta{colour}s should be colour names or mixtures supported by \pkg{xcolor}. % \Example{colour=WildStrawberry} % \Example{foreground=WildStrawberry!50!black} % % \paragraph{Colour Lists\label{nod:rhestrau-lliwiau}} % \meta{colour list}s are comma-separated lists of colour names or mixtures supported by \pkg{xcolor}. % \Example{life/colours above=\{blue,green,blue!50!green\}} % % \paragraph{Colour\label{nod:colour}} % \texttt{colour} and \texttt{color} are synonyms in key names. % \Example{colours below=\{black,gray\}} % \Example{colors below=\{black,gray\}} % %^^A END subsubsec:nodiadau-lliwiaunodiadau-lliwiau % % % %^^A END subsec:nodau % %^^A END sec:config % % \subsection{Dates}\label{subsec:dyddiadau} %^^A BEGIN subsec:dyddiadau % % \Pkg{chronos} uses a fixed format for date input and offers a flexible format for date output. % % \subsubsection{Input}\label{subsubsec:dyddiad-input} %^^A BEGIN subsubsec:dyddiad-input % % All date keys expect one or two arguments specifying a date or dates in the format \texttt{\{\{Y\}-M-D\}}. % \texttt{Y}, \texttt{M} and \texttt{D} must be integers. % If \texttt{Y} is negative, the date is interpreted as BCE; otherwise CE is assumed. % The additional curly brackets around \texttt{Y} are \emph{mandatory} for negative values. % \begin{chronoscode} % start date={{-3000}-05-23}, % end date={1500-12-04}, % \end{chronoscode} % It is also permissible to specify only a year, in which case \pkg{chronos} will specify values for the month and day. % Hence, % \begin{chronoscode} % dates={-245}:789, % \end{chronoscode} % is also valid. % Where two dates are required, \keyname[link,idx=false,type=datekey]{dates} offers a more concise syntax, but dates may always be specified singly if this is preferred. % %^^A END subsubsec:dyddiad-input % % \subsubsection{Output}\label{subsubsec:dyddiad-output} %^^A BEGIN subsubsec:dyddiad-output % % All date format keys expect one or three arguments using the syntax specified in \cref{tab:dyddiadau}. % \Example{date format=\{ B d, Y\}} % This would result in a full month name followed by the day of the month, then a comma and finally the year. % % Each character in the format is either translated into an element of the date format or passed through as is. % This includes punctuation and spaces. % (Note that macros etc.\ won't work here because the macro will be broken down and ‘translated’ token-by-token.) % % The format codes, listed in \cref{tab:dyddiadau}, are mostly a subset of the format codes provided by GNU's date command, with a few extras not relevant to GNU\texsethanks{Joseph Wright}{327642}. % % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{Date and year format specification codes.}\label{tab:dyddiadau} % \begin{tabular}{>{\ttfamily}cllcc} % \toprule % \sffamily code & \sffamily meaning & \sffamily example output & \sffamily date format specifier? & \sffamily year format specifier? \\\midrule % !a & short weekday name & Mon & \fycheck & \fycross \\ % !A & full weekday name & Monday & \fycheck & \fycross \\ % !b & short month name & Jan & \fycheck & \fycross \\ % !B & full month name & January & \fycheck & \fycross \\ % !c & semi-shortened year & 900 & \fycheck & \fycheck \\ % !d & day of the month & 23 & \fycheck & \fycross \\ % !E & era & \bceyearlabel{} or \ceyearlabel{} label & \fycheck & \fycheck \\ % !m & month number & 01 & \fycheck & \fycross \\ % !q & minus if year is \bceyearlabel{} & - & \fycheck & \fycheck \\ % !Q & minus if year is \bceyearlabel{}; plus for \ceyearlabel{} & + & \fycheck & \fycheck \\ % !y & last two digits of year & 66 & \fycheck & \fycheck \\ % !Y & year & 1066 & \fycheck & \fycheck \\ % \bottomrule % \end{tabular} % \end{adjustwidth} % \end{table} % % A subset of the date-specification codes (as indicated in \cref{tab:dyddiadau}) is available to customise the formatting of years on the \conceptname[idx post=customisation]{timeline} itself. % In the case of the \conceptname[idx post=era labels,idx font post=\ConceptFont]{timeline}, era labels may instead be added at each end to avoid the clutter of including \bceyearlabel{} or \ceyearlabel{} with every year. % % \DescribeDateformat{date format}\valmarg{date format specification}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default format for dates. % \Default[with eras]{!d/!m/!Y\bs thinspace !E} % \Default[without eras]{!d/!m/!Y} % % \DescribeDateformat{event/date format}\valmarg{date format specification} \fortags{event}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default format for \conceptname[type=tag,link,idx post=date formatting]{event} dates. % \emph{This \keylabelname{} overrides \keyname[idx=false,link]{show eras,without eras,full dates,only years} for \elementslabelname{} of \conceptname[type=concept,link,no idx]{tag} type \conceptname[type=tag,link,no idx]{event}.} % \Default[with eras]{!d/!m/!Y\bs thinspace !E} % \Default[without eras]{!d/!m/!Y} % % The following keys set \keyname[type=dateformat,link,no idx]{event/date format} conditionally. % This may be used to switch between formats showing eras or only years and no eras or full dates while ensuring uniformity of all formats with or without eras, for example. % For instance, it may make little sense to use full dates for events where only the year is known or which occurred when different calendars were used, but you might still want full dates for other cases. % \emph{These \keyslabelname{} override \keyname[idx=false,link]{show eras,without eras,full dates,only years} for \elementslabelname{} of \conceptname[type=concept,no idx]{tag} type \conceptname[type=tag,link,no idx]{event}.} % % \DescribeDateformat{event/show eras/full}\valmarg{date format specification} \fortags[names=show eras/full]{event}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default format to use for \conceptname[type=tag,link,no idx]{event} when showing full dates with eras. % \Default{{!d/!m/!Y\bs thinspace !E}} % % \DescribeDateformat{event/show eras/only years}\valmarg{date format specification} \fortags{event}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default format to use for \conceptname[type=tag,link,no idx]{event} when showing only years with eras. % \Default{{!Y\bs thinspace !E}} % % \DescribeDateformat{event/without eras/full}\valmarg{date format specification} \fortags{event}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default format to use for \conceptname[type=tag,link,no idx]{event} when showing full dates without eras. % \Default{{!d/!m/!Y}} % % \DescribeDateformat{event/without eras/only years}\valmarg{date format specification} \fortags{event}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default format to use for \conceptname[type=tag,link,no idx]{event} when showing only years without eras. % \Default{{!Y}} % % \conceptname[type=tag,idx post={date ranges}]{life,period} are more complex as date ranges are involved, but the basic structure works in the same way. % % \DescribeDateformat{life/date formats,period/date formats}\cvalsmarg{date format spec.,date format spec.,date format spec.} \fortags{life,period}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default formats for \conceptname[type=tag,link,idx post=date formatting]{life} or \conceptname[type=tag,link,idx post=date formatting]{period} dates. % In these cases, we have two dates --- either a birth and death or a start and end. % You might want different formats for the two and you might want different formats when the first date is \bceyearlabel{} and the second \ceyearlabel{}. % Hence, we need to specify three formats. % The first argument specifies the format to use for the birth or start date when the death or end date occurs in the same era. % The second specifies the format to use for the first date when the eras differ. % The third specifies the format to use for the death or end date. % \emph{These \keyslabelname{} override \keyname[idx=false,link]{show eras,without eras,full dates,only years} for \elementslabelname{} of \conceptname[type=concept,link,no idx]{tag} types \conceptname[type=tag,link,no idx]{life,period} respectively.} % \Default[with eras]{\{!d/!m/!Y\}:\{!d/!m/!Y\bs thinspace !E\}:\{!d/!m/!Y\bs thinspace !E\}} % \Default[without eras]{\{!d/!m/!Y\}:\{!d/!m/!Y\}:\{!d/!m/!Y\}} % % \emph{The following \keyslabelname{} override \keyname[link,idx=false,type=dateformat,link prefix=life/]{date formats} for \elementslabelname{} of \conceptname[type=concept,link,no idx]{tag} types \conceptname[type=tag,link,no idx]{life,period} respectively.} % They work in the same way as those explained above for \conceptname[type=dateformat,link,link to=event/show eras/full,no idx]{event}. % % \DescribeDateformat{life/show eras/full,period/show eras/full}\cvalsmarg{date format spec.,date format spec.,date format spec.} \fortags{life,period}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default formats to use for \conceptname[type=tag,link,no idx]{life} or \conceptname[type=tag,link,no idx]{period} when showing full dates with eras. % \Default{\{!d/!m/!Y\}:\{!d/!m/!Y\bs thinspace !E\}:\{!d/!m/!Y\bs thinspace !E\}} % % \DescribeDateformat{life/show eras/only years,period/show eras/only years}\cvalsmarg{date format spec.,date format spec.,date format spec.} \fortags{life,period}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default formats to use for \conceptname[type=tag,link,no idx]{life} or \conceptname[type=tag,link,no idx]{period} when showing only years with eras. % \Default{\{!Y\}:\{!Y\bs thinspace !E\}:\{!Y\bs thinspace !E\}} % % \DescribeDateformat{life/without eras/full,period/without eras/full}\cvalsmarg{date format spec.,date format spec.,date format spec.} \fortags{life,period}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default formats to use for \conceptname[type=tag,link,no idx]{life} or \conceptname[type=tag,link,no idx]{period} when showing full dates without eras. % \Default{\{!d/!m/!Y\}:\{!d/!m/!Y\}:\{!d/!m/!Y\}} % % \DescribeDateformat{life/without eras/only years,period/without eras/only years}\cvalsmarg{date format spec.,date format spec.,date format spec.} \fortags{life,period}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default formats to use for \conceptname[type=tag,link,no idx]{life} or \conceptname[type=tag,link,no idx]{period} when showing only years without eras. % \Default{\{!Y\}:\{!Y\}:\{!Y\}} % % \DescribeDateformat{every date format}\valmarg{date format specification}\AfterLastParam % Sets \emph{all} date formats for \emph{all} \conceptname[type=concept,idx as=tag,link,link to=tag,no idx]{tags} and the default format to \meta{date format specification}. % This \keylabelname{} does not affect the formatting of \conceptname[conj=or,no idx]{years,minor years,eras} on the \conceptname[link,no idx]{timeline} itself. % \Default*{}none\par % \Initial*{}none\par % % \DescribeKey{bce year label}\val{text}\AfterLastParam % The label to use if showing the \bceyearlabel{} era in \conceptname[type=element,idx as=text tag,link,link to=text tag,idx post=text tag \string\textnormal{date formatting},idx font post=\ConceptFont]{text tags}. % Note this is not the label used if marking eras on the \conceptname[link,no idx]{timeline}, unless including them as part of year labels. % \Default{\bs textsc\{bce\}} % \begin{chronoscode} % \begin{chronos} % [ % bce year label=BCE, % ] % \end{chronos} % \end{chronoscode} % The label is available as \keyname[type=macro]{\cs{bceyearlabel}} inside the \envlabelname{} \keyname[type=env,no idx]{\enviro{chronos}}. % In addition, it is made available at the end of the preamble if the command is not otherwise defined. % % \DescribeKey{ce year label}\val{text}\AfterLastParam % The label to use if showing the \ceyearlabel{} era in \conceptname[type=element,idx as=text tag,link,link to=text tag,idx post=text tag \string\textnormal{date formatting},idx font post=\ConceptFont]{text tags}. % Note this is not the label used if marking eras on the \conceptname[link,no idx]{timeline}, unless including them as part of year labels. % \Default{\bs textsc\{ce\}} % \begin{chronoscode} % \begin{chronos} % [ % ce year label=\textsc{ad}, % ] % \end{chronos} % \end{chronoscode} % The label is available as \keyname[type=macro]{\cs{ceyearlabel}} inside the \enviro{chronos} environment. % In addition, it is made available at the end of the preamble if the command is not otherwise defined. % % The \conceptname[no idx,link]{timeline} itself features only years (but see \keyname[idx=false,link]{event years on line} for a limited exception). % % \DescribeDateformat{year format}\valmarg{year format specification}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default format for years. % This is the format used to format ‘major’ years on the \conceptname[idx post={years\string\textrm{,} major\string\textrm{, format}},idx font post=\ConceptFont]{timeline}. % \Default[with eras]{!Y\bs thinspace !E} % \Default[without eras]{!Y} % % \DescribeDateformat{minor year format}\valmarg{year format specification}\AfterLastParam % When used in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default format for ‘minor’ years. % \Default{!c} % The idea is that you might want, say, four-digit years every half century and three-digit years every hundred years in between. % % \DescribeBoolkey{timeline/timeline mark eras}\vals{true,false}\AfterLastParam % Should era labels be included at the end(s) of the \conceptname[idx post=era labels,idx font post=\ConceptFont]{timeline}? % Note that a label will only be shown if the dates the \conceptname[no idx]{timeline} covers include some in the relevant era. % So if your \conceptname[no idx,link]{timeline} starts at 500 \ceyearlabel, the \bceyearlabel{} will be omitted and if it ends at 200 \bceyearlabel, the \ceyearlabel{} will be omitted. % \Default{true} % \Initial{false} % % \DescribeKey{timeline bce label}\val{text}\AfterLastParam % The label to use if marking the \bceyearlabel{} era on the \conceptname[idx post=\bceyearlabel\ label,link]{timeline}. % Note this is not the label used if showing eras in \conceptname[type=element,idx as=text tag,link to=text tag,link,no idx]{text tags}. % \Default{BCE} % \begin{chronoscode} % \begin{chronos} % [ % timeline bce label=BC, % ] % \end{chronos} % \end{chronoscode} % The label is available as \keyname[type=macro]{\cs{celabel}} inside the \keyname[type=env,no idx]{\enviro{chronos}} \envlabelname{}. % In addition, it is made available at the end of the document preamble for general use if the command is not otherwise defined. % % \DescribeKey{timeline ce label}\val{text}\AfterLastParam % The label to use if marking the \ceyearlabel{} era on the \conceptname[idx post=\ceyearlabel\ label,link]{timeline}. % Note this is not the label used if showing eras in \conceptname[type=element,idx as=text tag,link,link to=text tag,no idx]{text tags}. % \Default{CE} % \begin{chronoscode} % \begin{chronos} % [ % timeline ce label=AD, % ] % \end{chronos} % \end{chronoscode} % The label is available as \keyname[type=macro]{\cs{bcelabel}} inside the \keyname[type=env,no idx]{\enviro{chronos}} \envlabelname{}. % In addition, it is made available for general use at the end of the document preamble if the command is not otherwise defined. % %^^A END subsubsec:dyddiad-output % % \subsubsection{The Problem of the Non-Existent Year}\label{subsubsec:subsec:blwyddyn-sero} %^^A BEGIN subsubsec:subsec:blwyddyn-sero % % \Pkg{chronos} uses \conceptname[type=pkg]{pgfcalendar} to calculate Julian day numbers from dates when constructing the \conceptname[idx post=problem of non-existent year,link]{timeline}. % Generally, this works well, but an issue occurs if your \conceptname[idx post=spanning eras,link,idx font post=\ConceptFont]{timeline} spans the two eras (\bceyearlabel{} and \ceyearlabel{}). % \Pkg{pgfcalendar} assumes there was a year zero (\cref{subfig:sero}), which historians will assure you there was not. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \subcaptionbox{\pkg{pgfcalendar} default.\label{subfig:sero}}{%^^A % \begin{chronos} % [ % timeline={% % start date={-1}-12-01, % end date=1-01-31, % mark at era switch=true, % width=.495\linewidth, % timeline mark eras, % year zero, % }, % no colour rotation, % outer border=0pt, % ] % \chronosevent {date={{-1}-12-31},name=new year's eve,yshift=20pt} % \chronosevent {date={1-01-01},name=new year's day,yshift=-20pt} % \chronosperiod {dates={0-01-01}:{0-12-31},name=non-existent year,colour=chronosWildStrawberry} % \end{chronos}%^^A % }% % \subcaptionbox{\pkg{chronos} adjustment.\label{subfig:heb-sero}}{%^^A % \begin{chronos} % [ % timeline={% % start date={-1}-12-01, % end date=1-01-31, % width=.495\linewidth, % timeline mark eras, % }, % no colour rotation, % outer border=0pt, % ] % \chronosevent {date={{-1}-12-31},name=new year's eve,yshift=20pt} % \chronosevent {date={1-01-01},name=new year's day,yshift=-20pt} % \end{chronos} % }% % \caption{The problem of the non-existent year.\label{fig:sero}} % \end{adjustwidth} % \end{figure} % % By default, \pkg{chronos} corrects for this (\cref{subfig:heb-sero}), but the correction can be switched off if desired (\cref{subfig:sero}). % % \DescribeBoolkey{timeline/year zero}\vals{true,false}\AfterLastParam % Whether to tolerate the year zero. % \Default{true} % \Initial{false} % % If there is no year zero, certain complications arise. % First, what should be marked on the \conceptname[idx post=if no year zero,link,idx font post=\ConceptFont]{timeline} at the ‘era switch’? % Second, if you ask \pkg{chronos} to mark every hundredth year, say, you probably do not expect it to mark 200 \bceyearlabel{}, 100 \bceyearlabel{}, 1 \ceyearlabel{}, 101 \ceyearlabel{} and so on. % Moreover, you might want to do something such as this % \begin{chronoscode} % \foreach \i in {-100,-50,...,300} \node [red,inner sep=2.5pt] at (chronos year \i) {}; % \end{chronoscode} % This seems reasonable, but will fail if \texttt{chronos year 0} doesn't exist. % % \Pkg{chronos} attempts to solve these problems by handling the ‘era switch’ as a special case. % First, if there is no year zero, it will create \emph{two} coordinates at the switch, provided you have asked it to mark something at this point. % \texttt{chronos year 0} will exist, as far as \pkg{chronos} is concerned, at the same point as \texttt{chronos year 1}. % This means you can loop over the era switch in the normal way and expect sensible output, but you can \emph{also} refer to \texttt{chronos year 1}, even if you only asked every hundredth year to be marked from 100 \bceyearlabel{}. % % Second, \pkg{chronos} provides a special option for configuring what is marked on the \conceptname[idx post=era switch,link,idx font post=\ConceptFont,no idx]{timeline} at the switch of eras. % % \DescribeBoolkey{timeline/mark at era switch}\vals{true,false}\AfterLastParam % Whether to use a mark rather than a year at the era switch. % If false, the year (e.g.~‘1’) is used; if true, a mark is used instead (illustrated in \cref{subfig:heb-sero}, though the format will depend on how the \conceptname[idx post=era switch,link,idx font post=\ConceptFont]{timeline} is configured). % \Default{true} % \Initial[if showing every year]{false} % \Initial[otherwise]{true} % Note that this option only configures what is marked if something is. % If you ask \pkg{chronos} to mark every hundredth year from 150 \bceyearlabel{} to 400 \ceyearlabel{}, nothing will be marked at the era switch (but \pkg{chronos} will write a warning to the log). % \Pkg{chronos} won't do that by default, but, if you insist, it will take you at your word. % % \DescribeBoolkey{timeline/year at era switch}\vals{true,false}\AfterLastParam % Whether to use a year rather than a mark at the era switch. % This is simply a convenience key which does the opposite of \keyname[link,idx=false,type=boolkey,link prefix=timeline/]{mark at era switch}. % \Default{true} % \Initial*{}see \keyname[link,idx=false,type=boolkey,link prefix=timeline/]{mark at era switch}. % %^^A END subsubsec:subsec:blwyddyn-serosubsec:blwyddyn-sero % %^^A END subsec:dyddiadau % % \subsection{Basic Colours}\label{subsec:lliwiau-basic} %^^A BEGIN subsec:lliwiau-basic % % \Pkg{chronos} uses (or may use) two basic colours: one for foreground and one for background \elementslabelname{}. % % \DescribeColkey{background}\val{colour name}\AfterLastParam % This is the ‘main background colour’ for the picture as a whole. % This colour is accessible within the \enviro{chronos} environment as \keyname[type=colour,conj=or]{chronos main background colour,chronos main background color}. % Whether it is used and, if so, how, depends on other settings. % By default, it is used to determine the colours for the \conceptname[idx post=colours,link,idx font post=\ConceptFont]{timeline} itself and is the basis for the colours used in some \tagslabelname. % It is also used in some standard \conceptname[type=colour,idx as=chronos main background colour,font=\KeyFont,idx post=use in \string\textsf{chronos styles}]{chronos styles}. % \Default{white} % \begin{chronoscode} % \begin{chronos} % [ % background=magenta, % ] % \end{chronos} % \end{chronoscode} % % \DescribeColkey{foreground}\val{colour name}\AfterLastParam % This is the ‘main foreground colour’ for the picture as a whole. % This colour is accessible within the \enviro{chronos} environment as \keyname[type=colour,conj=or]{chronos main colour,chronos main color}. % Whether it is used and, if so, how, depends on other settings. % By default, it is used to determine the colours for the \conceptname[idx post=colours,link,idx font post=\ConceptFont,no idx]{timeline} itself and is the basis for the colours used in some \tagslabelname. % It is also used as the \keyname[link,idx=false,type=colkey,link prefix=\meta{tag}/,idx as=\meta{tag}/default colour]{default colour} for \conceptname[idx as={connection,line,text tag},idx post=default use of \string\textkey{chronos main colour} in]{connections,lines,text tags} and in some standard \conceptname[type=colour,idx as=chronos main colour,font=\KeyFont,idx post=use in \string\textsf{chronos styles}]{chronos styles}. % \Default{black} % \begin{chronoscode} % \begin{chronos} % [ % foreground=red, % ] % \end{chronos} % \end{chronoscode} % % For other colours, see \cref{subsubsec:timeline-lliwiau,subsec:lliwiau}. % %^^A END subsec:lliwiau-basic % % \subsection{Timeline}\label{subsec:llinell-amser} %^^A BEGIN subsec:llinell-amser % % See \cref{subsec:anatomi-llinell-amser} for an overview of the \conceptname[no idx]{timeline}'s components and construction. % % Placing different \elementslabelname on different \conceptname[type=element,idx as=layer,idx post=effect of placing \string\textconcept{elements} on different]{layers} enables the same basic building blocks to result in different styles, but the blocks may also be configured directly. % The layers on which the \conceptname[type=element,idx as=connection,idx post=effect of drawing on different \string\textconcept{layers},link,link to=connection]{connections} and \conceptname[type=element,idx as=line,idx post=effect of drawing on different \string\textconcept{layers},link,link to=line]{lines} of items connected to the \conceptname[idx post=connections \string\textrm{and} lines,link,idx font post=\ConceptFont]{timeline} are drawn also affects the appearance. % For example, putting \conceptname[type=element,idx as=connection,no idx,link,link to=connection]{connections} behind the \conceptname[type=element,idx post=using to change appearance of \string\textconcept{connectors}]{border} results in circular \conceptname[type=element,idx as=chronos connector]{chronos connectors} appearing as semicircles. % \Pkg{chronos}'s use of layers is explained in \cref{subsec:haenau,sec:haenau-llunio}. % % \DescribeChoice{connections on,lines on,timeline/timeline on,timeline/border on}\vals{background,middle ground,main,foreground,overlay}\AfterLastParam % Which \conceptname[type=layer,no link,idx as={connections on,lines on,timeline/timeline on,timeline/border on},font=\KeyFont]{layer} each type of element should be placed on. % Aside from \keyname[type=layer,no link]{main} these are not standard layers. % In particular, \keyname[type=layer,no link,idx post=\string\emph{vs.} \string\texttt{chronos background}]{background} is not the standard \TikZ{} \keyname[type=layer,no link,no idx]{background} layer, but instead refers to the \keyname[type=layer,idx post=\string\emph{vs.} \string\texttt{background}]{chronos background} layer. % \Default % See \cref{subsec:haenau}. % % The \conceptname[idx post={configuration, main key}]{timeline} should be configured using the following \keylabelname{}. % % \DescribeKey{timeline}\valmarg{key-value list}\AfterLastParam % \meta{key-value list} should be a list of \pkg{chronos} \keyslabelname{} from the \conceptname[no idx]{timeline} configuration options. % These \keyslabelname{} may also be accessed more verbosely as \texttt{/chronos/timeline/}\meta{key name} or, in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}} as \texttt{timeline/}\meta{key name}. % Some may also work without the \texttt{timeline/} prefix, but \emph{this is not guaranteed and may break without notice in future releases}. % \begin{chronoscode} % \begin{chronos} % [ % timeline={% timeline configuration % dates={1310-02-03}:{1350-06-07}, % timeline foreground=black, % timeline background=gray, % minor years, % timeline height=5pt, % timeline width=\textwidth, % timeline era margin=10pt, % major step font=\sffamily\bfseries, % minor step font=\sffamily\bfseries\small, % timeline minor marks, % timeline marks, % timeline years=above, % }, % ] % \end{chronos} % \end{chronoscode} % % \Conceptname[idx post=configuration keys,link]{timeline} configuration \keyslabelname{} are prefixed with \texttt{timeline/} in this manual. % % \subsubsection{Timeline Dates}\label{subsubsec:timeline-dyddiadau} %^^A BEGIN subsubsec:timeline-dyddiadau % % \DescribeDatekey{timeline/dates}\cvals{start date,end date}\AfterLastParam % The fist and last date to be represented on the \conceptname[idx post=dates,link]{timeline}. % Dates must be specified as explained in \cref{subsec:dyddiadau}. % This key offers a more compact syntax as an alternative to the keys \keyname[link,idx=false,type=datekey,link prefix=timeline/]{start date,end date} (or \keyname[link,idx=false,type=datekey,link prefix=timeline/]{start,end}) explained below. % That is % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % dates={1310-02-03}:{1350-06-07}, % % equivalent to % start date={1310-02-03}, % end date={1350-06-07}, % % equivalent to % start={1310-02-03}, % end={1350-06-07}, % }, % ] % \end{chronos} % \end{chronoscode} % % \DescribeDatekey{timeline/start date,timeline/start}\valmarg{date}\AfterLastParam %^^A start/.forward to=/chronos/llinell amser/blwyddyn dechrau % The first date to represent on the \conceptname[idx post={date, first},link]{timeline}, specified as explained in \cref{subsec:dyddiadau}. % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % start date={1310-02-03}, % % equivalent to % start={1310-02-03}, % }, % ] % \end{chronos} % \end{chronoscode} % % \DescribeDatekey{timeline/end date,timeline/end}\valmarg{date}\AfterLastParam %^^A end/.forward to=/chronos/llinell amser/blwyddyn diwedd % The last date to represent on the \conceptname[idx post={date, last},link]{timeline}, specified as explained in \cref{subsec:dyddiadau}. % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % end date={1350-06-07}, % % equivalent to % end={1350-06-07}, % }, % ] % \end{chronos} % \end{chronoscode} % %^^A END subsubsec:timeline-dyddiadau % % \subsubsection{Timeline Dimensions}\label{subsubsec:timeline-dims} %^^A BEGIN subsubsec:timeline-dims % % See \cref{nod:dims}. % % The dimensions of the \conceptname[idx post=dimensions]{timeline} line and border are illustrated in \cref{fig:timeline-dims}. % % The total height of the \conceptname[idx post=total height as function of \string\textkey{timeline height} and \string\textkey{timeline border height}]{timeline} is a function of the dimensions \keyname[link,link prefix=timeline/,idx=false,type=dimkey]{timeline height,timeline border height}: % \[ % \text{timeline height} + 2\cdot \text{timeline border height} % \] % % The total width is \keyname[link,link prefix=timeline/,idx post=as total width,type=dimkey]{timeline width}. % The width includes the width used to represent the time covered by the \conceptname[idx post=width]{timeline} and twice the \keyname[link,idx=false,type=dimkey,link prefix=timeline/]{timeline margin}. % If era labels are used, the width also includes the space used for these\texsethanks{Martin Scharrer}{56405} and the \keyname[type=dimkey,link,idx=false,idx as=timeline era margin,link to=timeline/timeline era margin]{timeline era margins}. % % For example, % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % timeline height=10mm, % timeline border height=2.5mm, % timeline width=200mm, % timeline mark eras, % timeline margin=5mm, % timeline era margin=2.5mm, % dates={-200}:2000, % }, % ] % \end{chronos} % \end{chronoscode} % would result in a total timeline height of 15mm and a total timeline width of 200mm. % The width used to represent the years from 200 \bceyearlabel{} to 2000 \ceyearlabel{} would be % \[ % 200\mathrm{mm} - 2\cdot5\mathrm{mm} - 2\cdot2.5\mathrm{mm} - \text{width of \bcelabel{} label} - \text{width of \celabel{} label} % \] % that is, % \[ % 185\mathrm{mm} - \text{width of \bcelabel{} label} - \text{width of \celabel{} label} % \] % % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \sffamily % \begin{chronos} % [ % timeline={% % dates={-5}:{5-01-01}, % timeline background=white, % timeline foreground=white, % timeline line={draw=black}, % timeline border inner colour=white, % timeline border outer colour=white, % timeline border middle colour=white, % timeline border+={draw=black}, % timeline height=30mm, % timeline border height=10mm, % timeline width=\textwidth+\tewadjust, % timeline margin=25mm, % timeline era margin=25mm, % timeline year={text height=10mm}, % }, % ] % \foreach \i/\j/\k/\m [count=\a] in % { % chronos pre-head/chronos top/-4/timeline border height, % chronos base/chronos pre-foot/-4/timeline border height, % chronos top/chronos base/-2/timeline height % }{ % \node (n\a) at ($(\i -| chronos year \k)!.5!(chronos year \k |- \j)$) {\m}; % \draw [-Latex] (n\a.north) -- (n\a.north |-\i); % \draw [-Latex] (n\a.south) -- (n\a.south |-\j); % } % \coordinate (b) at ([yshift=5pt]current bounding box.north); % \foreach \i/\j/\k/\m [count=\a] in % { % chronos pre/chronos post/b/timeline width, % chronos pre/chronos bce.west/chronos year 2.north/timeline\\margin, % chronos ce.east/chronos post/chronos year 2.north/timeline\\margin, % chronos ce.west/chronos ce.east/chronos ce.base/\celabel, % chronos bce.west/chronos bce.east/chronos bce.base/\bcelabel, % chronos bce.east/chronos start/chronos year 2.north/timeline\\era margin, % chronos end/chronos ce.west/chronos year 2.north/timeline\\era margin % }{ % \node [align=center] (n\a) at ($(\i |- \k)!.5!(\k -| \j)$) {\m}; % \draw [-Latex] (n\a.west) -- (n\a.west -| \i); % \draw [-Latex] (n\a.east) -- (n\a.east -| \j); % } % \foreach \i in {chronos bce.east,chronos ce.east,chronos bce.west, chronos ce.west,chronos start,chronos end} % \draw [help lines,dashed] (chronos top -| \i) -- (chronos base -| \i); % \end{chronos} % \caption{Timeline dimensions.}\label{fig:timeline-dims} % \end{adjustwidth} % \end{figure} % % \DescribeDimkey{timeline/timeline height,timeline/height}\val{dimension}\AfterLastParam % The height of the \conceptname[idx post=height]{timeline} excluding any border. % \Default % For example, % \begin{chronoscode} % timeline={ % timeline height'=10mm,% we can use ' here % }, % \end{chronoscode} % % \DescribeMacro{\timelineht}The \keyname[type=dimkey,no idx,link,link to=timeline/timeline height]{height of the timeline}. % This macro is available \emph{only at the end of the \conceptname[link,type=concept]{\meta{chronos preamble}} and can be considered reliable only within the \conceptname[link,type=concept]{\meta{timeline specification}}}\footnote{%^^A % Note that the unreliability applies to the internal macro, too.%^^A % }. % Despite its unreliability, early availability is essential to some \chronosstyleslabelname{} definitions. % In these cases, the \chronosstylelabelname{} is responsible for ensuring accuracy (or compensating for inaccuracy). % In standard cases, this happens automatically, even though it is not guaranteed. % However, if you neither load a \chronosstylelabelname{} nor configure dimensions explicitly, you should not try to use this macro before the \conceptname[link,no idx]{timeline} is constructed. % % \DescribeDimkey{timeline/timeline border height}\val{dimension}\AfterLastParam % The height of each of the upper and lower borders. % \Default % For example, % \begin{chronoscode} % timeline={ % timeline border height'+=2.5pt,% we can use ' here % }, % \end{chronoscode} % % \DescribeMacro{\timelineborderht}The \keyname[type=dimkey,no idx,link,link to=timeline/timeline border height]{height of the border}. % This macro is available \emph{only within the \conceptname[link,type=concept]{\meta{timeline specification}}}. % % \DescribeDimkey{timeline/timeline width,timeline/width}\val{dimension}\AfterLastParam % The total width of the \conceptname[idx post=total width]{timeline}, including margins. % \Default{\cs{textwidth}} % For example, % \begin{chronoscode} % timeline={ % timeline width=.75\paperheight,% we cannot use ' here % timeline width'-=10mm,% we can use ' here % }, % \end{chronoscode} % % \DescribeMacro{\timelinewd}The \keyname[type=dimkey,no idx,link,link to=timeline/timeline width]{width of the timeline}. % This macro is available \emph{only within the \conceptname[link,type=concept]{\meta{timeline specification}}}. % % \DescribeDimkey{timeline/timeline margin}\val{dimension}\AfterLastParam % The horizontal space to allow at each of the two ends of the \conceptname[idx post=margins]{timeline}. % \Default{15pt} % For example, % \begin{chronoscode} % timeline={ % timeline margin'+=-2.5pt,% we can use ' here % }, % \end{chronoscode} % % \DescribeDimkey{timeline/timeline era margin}\val{dimension}\AfterLastParam % The horizontal space to allow between the first/last point on the \conceptname[idx post=era margins,idx font post=\ConceptFont]{timeline} and the era labels. % \Default{15pt} % For example, % \begin{chronoscode} % timeline={ % timeline era margin+=0.05,% we can't use ' here % }, % \end{chronoscode} % % The following keys determine dimensions of the \pkg{chronos} picture as a whole. % They do not affect the dimensions of the \conceptname[idx post=dimensions]{timeline} itself. % % \DescribeDimkey{headings border}\val{dimension}\AfterLastParam % The distance between the top of the highest \keyname[idx as=levels,link to=levels,idx post=placement]{level} and the top of the space used for headers. % \Default[if there are one or more \conceptname[idx post=placement]{levels} above the timeline]{15pt + \meta{headings drop} + \meta{upper subheadings drop} + \meta{lower subheadings drop}} % \Default[otherwise]{5pt + \meta{headings drop} + \meta{upper subheadings drop} + \meta{lower subheadings drop}} % % \DescribeDimkey{headings drop}\val{dimension}\AfterLastParam % The distance between the top of the border and the \conceptname[link,idx post=placement]{headings}. % \Default[if headings are omitted]{0pt} % \Default[if headings are used]{15pt} % \emph{Note that you should set this explicitly to \texttt{0pt} if using \conceptname[idx post=without \string\textconcept{headings}]{subheadings} without \conceptname[link,no idx]{headings}.} % % \DescribeDimkey{subheadings drops}\cvalsmarg{dimension 1,dimension 2}\AfterLastParam % The distances between the \conceptname[link,idx post=placement relative to \string\textconcept{subheadings}]{headings} and upper \conceptname[link,idx post=placement]{subheadings} and between the tops of the \conceptname[link,idx post=placement]{upper subheadings,lower subheadings}. % \Default[if headings are omitted]{0pt:0pt} % \Default[if headings are used]{12pt:10pt} % \emph{Note that you should set this explicitly to \texttt{0pt:0pt}, \meta{dimension}\texttt{:0pt} or \texttt{0pt:}\meta{dimension} if using \conceptname[idx post=without \string\textconcept{upper}/\string\textconcept{lower subheadings}]{headings} without \conceptname[no idx,conj=and/or]{upper subheadings,lower subheadings} or only one of \conceptname[conj=or,idx post=as only \string\textconcept{subheadings}]{upper subheadings,lower subheadings}.} % % \DescribeDimkey{headings drops\textquotesingle,headings\textquotesingle +,headings\textquotesingle -}\cvalsmarg{dimension 1,dimension 2,dimension 3}\AfterLastParam % A convenience key equivalent to setting \keyname[type=dimkey,no idx,link to=headings drop]{headings drop\textquotesingle} to \meta{dimension 1} and \keyname[type=dimkey,no idx,link to=subheadings drops]{subheadings drops\textquotesingle} to \meta{dimension 2} and \meta{dimension 3}. % \emph{Note that only the \texttt{\textquotesingle} forms are available.} % For \pkgname[no link,no idx]{pgfmath} support, use \keyname[link,idx=false,type=dimkey]{headings drop,subheadings drops}. % % \DescribeDimkey{outer border}\val{dimension}\AfterLastParam % If a \conceptname[link,idx post=and \string\textkey{outer border}]{frame} is created, this is the outer border. % In effect, the bounding box will be set to be this distance from the \conceptname[link,idx post=and bounding box]{frame}, less half the line width used to draw it. % \Default{5pt} % % \DescribeDimkey{borders\textquotesingle,borders\textquotesingle +,borders\textquotesingle -}\cvalsmarg{dimension,dimension,dimension,dimension,dimension,dimension}\AfterLastParam % Sets the \keyname[link,idx=false,type=dimkey]{headings border,top border,right border,bottom border,left border,outer border} in one go. % \emph{Note that only the \texttt{\textquotesingle} forms are available.} % For \pkgname[no link,no idx]{pgfmath} support, use \keyname[link,idx=false,type=dimkey]{top border,right border,left border,bottom border,headings border}. % % \emph{If you're not sure what this key does or uncertain whether to use it, it is not the key you are looking for.} % Setting the \keyname[link,idx=false,type=dimkey]{outer border,headings border} suffices in most cases. % % \DescribeDimkey{top border,right border,bottom border,left border}\val{dimension}\AfterLastParam % \emph{If} the \conceptname[link,idx post=if not using bounding box]{frame} does not use the bounding box, these dimensions determine the internal margin between each of the top of the headings, the \conceptname[idx post=dimensions]{timeline}'s right end, the bottom of the lowest \keyname[idx as=levels,link to=levels,idx post=placement if \string\textconcept{frame} not using bounding box]{level}, the \conceptname[no idx]{timeline}'s left end and the \conceptname[link,no idx]{frame}, less half the line width used to draw the \conceptname[link,no idx]{frame}. % \Default{0pt} % \emph{Most people should let the frame use the bounding box\chronosdocidx[idx pre=tikzpicture,type=env,idx font pre=\KeyFont]{bounding box}, which is the default, and leave these dimensions alone.} % %^^A END subsubsec:timeline-dims % % \subsubsection{Timeline Marks and Years}\label{subsubsec:timeline-marks-years} %^^A BEGIN subsubsec:timeline-marks-years % % \Pkg{chronos} offers two primary styles of \conceptname[idx post={styles, on line \string\emph{vs.}\ off line}]{timeline}. % In one, the line has sufficient vertical depth (\keyname[link,idx=false,type=dimkey,link prefix=timeline/]{timeline height}) for years, era labels and marks to be drawn on the \conceptname[idx post={styles, on line}]{timeline} itself. % In the other, the \conceptname[idx post={styles, off line}]{timeline} may be much thinner, with marks, era labels and years drawn above or below the line. % In this case, the marks appear to grow out from the line and the year labels float slightly above or below. % % It is also possible to use \pkg{chronos} to draw a line with neither marks nor years. % Alternatively, you might want to create ‘invisible’ marks or years, which may be useful for placement purposes\footnote{%^^A % You don't need this simply to connect \elementslabelname{} to the \conceptname[no idx]{timeline}. % \pkg{chronos} doesn't depend on the creation of marks or years for that purpose.}. % \Cref{fig:timeline-dims} shows a \conceptname[idx post={marks \string\textrm{and} years\string\textrm{, invisible}},idx font post=\ConceptFont]{timeline} in which this has been done by setting the foreground and background colours equal. % The nodes are used to place the arrows and labels illustrating the various \dimkeyslabelname{}. % % \DescribeChoice{timeline/timeline years}\vals{on line,off line,above,below,none}%^^A % \chronosdocidx[type=choice,idx pre=timeline/timeline years,target prefix=timeline/timeline years/,target,idx font pre=\KeyFont]{on line,off line,above,below,none}%^^A % \AfterLastParam % Whether years (and any era labels and marks) should be created on the \conceptname[idx post={styles, \string\textconcept{marks} and \string\textconcept{years}}]{timeline}, off it or not at all and, if they should be off the \conceptname[no idx]{timeline}, whether they should be above or below it. % The options are mutually exclusive, except that \option{off line} implies either \opts[or]{above,below}. % See also \keyname[type=boolkey,link,link prefix=timeline/,idx=false]{minor years,timeline marks,timeline minor marks,timeline bare marks}, which further determine what exactly is shown. % \Default*{}none\par % \Initial{on line} % % it may actually make sense to write something like % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % timeline years=off line, % timeline years=none, % }, % ] % \end{chronos} % \end{chronoscode} % if one wants an off-line style of line with no years or marks. % I don't know why one \emph{would} want such a thing, but the possibility is there. % % \option{none} is actually intended to support a particular style of \conceptname[type=tag,idx post=support for \string\textkey{event years on line}]{event}-only \conceptname[idx post={styles, \string\textconcept{marks} and \string\textconcept{years}, none}]{timeline}, in which the dates are created on the line itself. % % \DescribeKey{event years on line} Don't create regular year labels or marks on the \conceptname[idx post={styles, \string\textconcept{event years on line}}]{timeline} itself. % Instead, put the years of subsequently added \conceptname[type=element,idx as=event,idx post=event years on line,idx font post=\KeyFont]{events} onto the line. % This option creates a \conceptname[no idx]{timeline} suitable for showing years on the \conceptname[idx post={styles, \string\textconcept{marks} and \string\textconcept{years}, on line}]{timeline}, but doesn't create any labels when drawing the line itself. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % %^^A ateb: http://tex.stackexchange.com/a/324448/ % \begin{chronos} % [ % timeline={% % timeline width=150mm, % timeline height=5mm, % start date=1935-01-01, % end date=2003-12-31, % timeline font=\sffamily\footnotesize, % timeline border height=5pt, % mark eras=false, % }, % event text tag={font=\sffamily\scriptsize, fill=none}, % event years on line, % ] % \chronosevent {date={2001},name=The \emph{Mr.~Men}\\Celebrate their 30\textsuperscript{th}\\Anniversary,as is,yshift=10pt,event year on line skip} % \chronosevent {date={2000},name=vouchers replace\\cash support for\\asylum seekers} % \chronosevent {date={1988},name=section 28 prevents state\\schools `promoting homosexuality',yshift=55pt} % \chronosevent {date={1984},name=miners' strike ends} % \chronosevent {date={1979},name=labour government\\falls \& thatcher\\wins power,yshift=10pt} % \chronosevent {date={1942},special date=WWII,name=people discover\\some stuff\\\& lots of people\\get killed} % \end{chronos} % \caption{Illustration of \keyname[no link]{event years on line}.}\label{fig:event-years-on-line} % \end{adjustwidth} % \end{figure} % % Assuming \keyname[type=choice,link,link prefix=timeline/,idx=false]{timeline years} is not set to \texttt{none}, as it is if \keyname[idx=false,link]{event years on line} is enabled, the following \keyslabelname{} determine how and where \pkg{chronos} represents time on (or off) the \conceptname[no idx]{timeline} itself. % The primary concepts here are those of \conceptname{major steps,minor steps}. % The space available to represent time on the \conceptname[idx post=representation of time on]{timeline} (see \cref{subsubsec:timeline-dims}) is divided into \conceptname[no idx]{major steps} and, optionally, further divided into \conceptname[no idx]{minor steps}. % These can be highlighted with \keyname[link,link prefix=timeline/,idx=false,type=boolkey]{timeline marks, timeline minor marks} and are set using \keyname[link,link prefix=timeline/,idx=false]{step major year,step minor year}. % % In addition to \conceptsname{year}, \keyname[link,link prefix=timeline/,idx=false,type=boolkey]{timeline bare marks} may be used to create unlabelled subdivisions at intermediate points. % In the standard case, the value of \keyname[link,link prefix=timeline/,idx=false]{step divisions} is used to divide the distance equally. % For example, if you specify 5, \pkg{chronos} will use 4 lines to subdivide each. % No attempt is made to place these so they correspond to any particular date: if you request 12, \pkg{chronos} will not make the division for February smaller than the one for December. % % However, if a \conceptname[idx post=short (temporal duration)]{timeline} is short, \pkg{chronos} proceeds differently. % ‘Short’ refers to temporal duration rather than dimension and includes any \conceptname[no idx]{timeline} which begins and ends in the same year or in consecutive years. % % \DescribeBoolkey{timeline/minor years}\vals{true,false}\AfterLastParam % Whether to label \conceptname[idx post=whether to label]{minor years}, in addition to \conceptname[no idx]{major years}. % \Default{true} % \Initial{true} % % \DescribeKey{timeline/step major year,timeline/step major years}\valmarg{positive integer}\AfterLastParam %^^A step major years/.forward to=/chronos/llinell amser/cam blwyddyn fawr % How often to label \conceptname[idx post=frequency of labelling]{major years} on the \conceptname[idx post=major years,idx font post=\ConceptFont]{timeline} if showing them. % Use this \keylabelname{} if you want a larger or bolder font and/or a different date format and/or thicker or longer \conceptname[idx post=using different styles for]{marks} to be used for some year labels. % You can also use this key if you want all year labels on the \conceptname[no idx]{timeline} to use the same format. % For example, you might want to print the full 4 digits of the year each thousand years. % \Default % % \DescribeKey{timeline/step minor year,timeline/step minor years}\valmarg{positive integer}\AfterLastParam %^^A step minor years/.forward to=/chronos/llinell amser/cam blwyddyn fach % How often to label \conceptname[idx post=frequency of labelling]{minor years} on the \conceptname[idx post=minor years,idx font post=\ConceptFont]{timeline} if displaying them. % The idea is that you might want a smaller or lighter font and/or a different date format and/or thinner or shorter \conceptname[idx post=style for \string\textconcept{minor years}]{marks} to be used for intermediate year labels. % For example, you might want to print full years only every millennium and the last 3 digits of the year each century. % \Default % \Pkg{chronos} labels \conceptname[idx post=labelled only if labelling \string\textconcept{major years}]{minor years} only if labelling \conceptname[idx post=labelling as prerequisite for \string\textconcept{minor year} labels]{major years}. % Although the package attempts to correct the result if only \conceptname[idx as=step minor year,font=\KeyFont,idx post=attempted correction if specified without \string\textconcept{major years}]{minor years} are requested, it is better to use \keyname[link,link prefix=timeline/,idx=false]{step minor year} only in conjunction with \conceptname[idx post=recommended when using \string\textkey{step minor year}]{major years}. % % \DescribeKey{timeline/step year,timeline/step years}\valmarg{positive integer}\AfterLastParam %^^A step years/.forward to=/chronos/llinell amser/cam blwyddyn % How often to label \conceptsname[idx post=frequency of labelling]{year} on the \conceptname[idx post=years,idx font post=\ConceptFont]{timeline}, if you want them all to be formatted in the same way. % This \keylabelname{} sets \keyname[link,link prefix=timeline/,idx=false]{step major years} internally and unsets \keyname[link,link prefix=timeline/,idx=false]{step minor year}. % \Default % % \Pkg{chronos} tries to label \conceptname[idx post=modulo \string\textkey{step major year} and \string\textkey{step minor year}]{years} \emph{modulo} the \keyname[link,link prefix=timeline/,idx post={years, \string\normalfont{modulo}},idx font post=\ConceptFont]{step major year,step minor year} (or \keyname[link prefix=timeline/,idx as=timeline/step year]{step year}). % This means you can start the \conceptname[idx post={years\string\normalfont, modulo},idx font post=\ConceptFont]{timeline} at 3,814 \bceyearlabel{}, request \conceptname[idx post=non-modulo start date\string\idxeg]{major years} every millennium and \conceptname[idx post=non-modulo start date\string\idxeg]{minor years} every half millennium without worrying about which year should be the first (labelled) \conceptname[idx post=first \string\emph{vs.}\space first labelled]{year}. % \begin{figure} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \subcaptionbox{Default selection of \conceptsname[idx post=labelled \string\textconcept{year} modulo\string\idxeg]{major years,minor years}.\label{subfig:modulo-ill}} % {%^^A % \begin{chronos} % [ % timeline={% % timeline years=above, % dates={-3814}:1213, % step major year=1000, % step minor year=500, % }, % ] % \end{chronos}%^^A % }\bigskip % % \subcaptionbox{Selected \conceptsname[idx post=labelled \string\textconcept{year} non-modulo\string\idxeg]{major years,minor years} with \keyname[link prefix=timeline/,idx as=timeline/step from year,idx post=and non-modulo \string\textconcept{years}\string\idxeg]{step from year}\texttt{=3810}.\label{subfig:non-modulo-ill}} % {%^^A % \begin{chronos} % [ % timeline={% % timeline years=above, % dates={-3814}:1213, % step major year=1000, % step minor year=500, % step from year=-3810, % }, % ] % \end{chronos}%^^A % } % \caption{Default (\cref{subfig:modulo-ill}) and non-default (\cref{subfig:non-modulo-ill}) selection of \conceptname[idx post=years \string\textnormal{modulo \string\emph{vs.}\space non-modulo}\string\idxeg,idx font post=\ConceptFont]{major years,minor years} when \keyname[link,idx=false,type=datekey]{dates}\texttt{=\{-3814\}:1213}, \keyname[link prefix=timeline/,idx as=timeline/step major year]{step major year}\texttt{=1000} and \keyname[link prefix=timeline/,idx as=timeline/step minor year]{step minor year}\texttt{=500}.}\label{fig:modulo-ill} % \end{adjustwidth} % \end{figure} % \Cref{fig:modulo-ill} illustrates \pkg{chronos}'s default choices in this case. % Note that the first year is \emph{not} determined by the start date alone in \cref{subfig:modulo-ill}, but is determined in conjunction with \keyname[link prefix=timeline/,idx as={timeline/step major year,timeline/step minor year}]{step major year,step minor year} so that -1 \bceyearlabel{} ends (and 1 \ceyearlabel{} begins) at a \conceptname[idx post=at \string\textconcept{era switch}\string\idxeg]{major year} and the turn of millennia generally occur at \conceptname[idx post=millennium\string\idxeg]{major years}, while the first \conceptname[idx post=half millennium\string\idxeg]{minor year} is 3,500 \bceyearlabel{}. % % \DescribeKey{timeline/step from year}\valmarg{integer}\AfterLastParam %^^A step from year/.forward to=/chronos/llinell amser/camu o flwyddyn % \emph{Do not use this key unless \pkg{chronos} produces undesirable results by default.} % If for some reason you do \emph{not} want \conceptsname[idx post=non-modulo configuration]{year} on the \conceptname[idx post={years\string\normalfont, not modulo},idx font post=\ConceptFont]{timeline} to be determined modulo \keyname[link,link prefix=timeline/,idx=false]{step major year,step minor year}, you may tell \pkg{chronos} where to begin stepping from. % In this case, \pkg{chronos} will issue a warning, but it will implement your choice. % \Default % % Note that \cref{subfig:non-modulo-ill} effectively includes no \conceptsname[idx post=dependent on modulo \string\textconcept{year}]{major years} because \pkg{chronos} tests whether the current \conceptname[idx post=test for \string\textconcept{major}]{year} is modulo the \keyname[link,link prefix=timeline/,idx=false]{step major year} when deciding how to format the year label and \conceptsname[idx post=effect of non-modulo \string\textconcept{year}]{marks}. % % \DescribeCoord{chronos year \meta{YYYY},chronos year -\meta{YYYY}} % \DescribeNode{chronos year \meta{YYYY},chronos year -\meta{YYYY}} % Every \conceptname[idx post=name]{major year,minor year} receives a name: a \texttt{node} or \texttt{coordinate} is created with the name \texttt{chronos year YYYY} for \ceyearlabel{} and \texttt{chronos year -YYYY} for \bceyearlabel{}. % No zeros are added, so years with fewer than four digits get nodes or coordinates with names such as \texttt{chronos year -1}. % \Pkg{chronos} creates all \conceptsname[idx post=marked at start]{year} at the beginning of the year i.e.~1\textsuperscript{st} January. % (This is analogous to a ruler which marks each centimetre at its beginning.) % % \DescribeCoord{chronos origin} % If the \conceptname[idx font post=\KeyFont,idx post=chronos origin \string\textnormal{dependant on }\string\textconcept{era switch}]{timeline} spans the switch of eras from \bceyearlabel{} to \ceyearlabel{} \emph{and} the \conceptname[idx font post=\KeyFont,idx post=chronos origin \string\textnormal{dependant on configuration modulo}]{years} represented on the \conceptname[idx post={years\string\normalfont, modulo},idx font post=\ConceptFont]{timeline} are modulo \keyname[link,link prefix=timeline/,idx=false,conj=or){step major year,step minor year} (as they are by default], an additional coordinate named \texttt{chronos origin} is created at the era switch point, \texttt{chronos year 1}. % % \DescribeCoord{chronos year 0} % If \keyname[link,idx=false,type=boolkey,link prefix=timeline/]{year zero} is \texttt{false}, as it is by default, a third coordinate named \texttt{chronos year 0} is created at \keyname[type=coord,no link]{chronos origin}\footnote{%^^A % So the non-existent year zero is marked at the same point as the existent year one. % This avoids complications in \keyname[type=macro,no link]{\cs{foreach}} loops.}. % %^^A By default, \pkg{chronos} calculates all the \conceptsname{year} to label on (or off) the \conceptname{timeline} from the \keyname[link,idx=false,type=datekey]{start date} and \keyname[link prefix=timeline/]{step major year,step minor year}, including any calculated defaults and \chronosstylelabelname{} and/or user-specified values. % % \DescribeKey{timeline/step divisions}\valmarg{positive integer}\AfterLastParam %^^A step divisions/.forward to=/chronos/llinell amser/camau bach % Whether the \conceptname[idx post=step divisions,idx font post=\ConceptFont]{timeline} should be further subdivided between \conceptname[conj=and/or,idx as={major years,minor years},idx post=dividing with \string\textconcept{bare marks}]{major,minor years} using \conceptname[idx post=setting,no link]{bare marks} and, if so, how many sub-divisions should be made. % These are simple subdivisions of the distance between points. % Unlike the labels/marks made for \conceptname[idx post=cf.~\string\textconcept{bare marks}]{years}, they do not involve calculations involving dates and are not named. % \Default % % \DescribeKey{timeline/timeline year}\valmarg{key-value list}\AfterLastParam %^^A timeline year/.forward to=/chronos/timeline year@too % \emph{Adds} \meta{key-value list} to the common \stylelabelname{} used when putting \conceptname[idx post={style in common with}]{major years,minor years} onto the \conceptname[idx post={years\string\textnormal{, style}},idx font post=\ConceptFont]{timeline}. % Do not specify \keyname[no link,idx post=will be overridden]{font} or \keyname[no link,idx post=will be overridden]{anchor} here as they will be overridden. % Although both \conceptname[idx as={major years,minor years},idx post={style differentiated from}]{major,minor years} use the same general \stylelabelname{}, they may and, by default do, use different fonts and \dateformatslabelname{}. % \Example{timeline/timeline year={fill=chronos timeline background colour}} % \Default[off line]{text\val{timeline foreground}, text opacity=1, align=center, fill opacity=.75} % \Default[on line]{text\val{timeline foreground}, anchor=center} % %^^A \DescribeStyle{timeline year off line,timeline year on line} %^^A If you wish to \emph{replace} the \styleslabelname{} used to format the \conceptsname{year}, you may redefine the relevant \stylelabelname{}. %^^A \begin{chronoscode} %^^A \begin{chronos} %^^A [ %^^A timeline years=on line, %^^A timeline year on line/.style={text=magenta},% for magenta years %^^A ] %^^A \end{chronos} %^^A \end{chronoscode} %^^A \Default[timeline year off line]{text\val{timeline foreground}, text opacity=1, align=center, fill opacity=.75} %^^A \Default[timeline year on line]{text\val{timeline foreground}, anchor=center} % % \DescribeKey{timeline/timeline years anchor}\valmarg{text}\AfterLastParam % The \TikZ{} \keyname[no link,idx post=for \string\textconcept{years}]{anchor} to use when creating the \texttt{nodes} for \conceptname[idx post=set \string\TikZ{} anchor]{years} on or off the \conceptname[idx post={years\string\textrm{,} \string\texttt{anchor}},idx font post=\ConceptFont]{timeline}. % \emph{Do not set this option unless you know you need to.} % In most cases, \pkg{chronos} will pick a sensible default. % The \keylabelname{} is provided primarily for cases where you want to rotate the \conceptname[idx post=rotate labels]{year} labels in \styleslabelname{} which place them off the \conceptname[type=key,no idx,link,link to=timeline/timeline line]{line}. % Even then, you should not need to change the setting if using a \stylelabelname{} designed for rotation, unless you need to change the angle. % \Default % % \DescribeBoolkey{timeline/timeline marks}\vals{true,false}\AfterLastParam % Whether to draw vertical marks on or off the \conceptname[idx post=marks,idx font post=\ConceptFont]{timeline} at \conceptname[idx post=setting \string\textconcept{marks}]{major years} using the \stylelabelname{} set with \keyname[link,link prefix=timeline/,idx=false]{timeline mark}. % \Default{true} % \Initial{true} % % \DescribeBoolkey{timeline/timeline minor marks}\vals{true,false}\AfterLastParam % Whether to draw vertical marks on or off the \conceptname[idx post=minor marks,idx font post=\ConceptFont]{timeline} at \conceptname[idx post=setting \string\textconcept{minor marks}]{minor years} using the \stylelabelname{} set with \keyname[link,link prefix=timeline/,idx=false]{timeline minor mark}. % \Default{true} % \Initial{true} % % \DescribeBoolkey{timeline/timeline show years}\vals{true,false}\AfterLastParam % Whether to represent years on or off the \conceptname[idx post=years,idx font post=\ConceptFont]{timeline} at all. % If false, neither labels nor marks will be added when the \conceptname[no idx]{timeline} is constructed. % This is useful if you wish to use a \stylelabelname{} such as \keyname[link,idx=false]{event years on line}, but is the nuclear option otherwise. % \Default{true} % \Initial{true} % % % \DescribeBoolkey{timeline/timeline bare marks}\vals{true,false}\AfterLastParam % Whether to draw \conceptname{bare marks} on or off the \conceptname[idx post=bare marks,idx font post=\ConceptFont]{timeline} in between \conceptsname[no idx]{year}\footnote{If your \conceptname[no idx]{timeline} is very short and 12 \keyname[link,link prefix=timeline/,idx=false]{step divisions} are set, \pkg{chronos} will actually mark months. % In other cases, marks simply divide the available space and are not placed by date.} using the \stylelabelname{} set by \keyname[link,link prefix=timeline/,idx=false]{timeline bare mark}. % If you specify \keyname[link,link prefix=timeline/,idx=false]{step divisions}, this \keylabelname{} will be automatically enabled. % If you don't want bare marks, don't set/set to zero \keyname[link,link prefix=timeline/,idx=false]{step divisions}. % \Default{true} % \Initial{false} % % \DescribeKey{timeline/timeline mark}\valmarg{key-value list}\AfterLastParam %^^A timeline mark/.forward to=/chronos/timeline mark@too % \emph{Adds} to the \stylelabelname{} used for the vertical lines drawn when \pkg{chronos} labels a \conceptname[idx post=marks,idx font post=\ConceptFont]{major year} on or off the \conceptname[idx post={marks, adding to style},idx font post=\ConceptFont]{timeline} and \keyname[link,link prefix=timeline/,idx=false,type=boolkey]{timeline marks} is true. % These correspond to the \conceptname{major steps} at which \pkg{chronos} puts \conceptname[idx post=marks \string\textnormal{for }major,idx font post=\ConceptFont]{years}. % \Example{timeline mark={thick}} % \Default[off line]{draw\val{timeline foreground}, {Triangle[width=0pt 3,reversed,length=0pt 1.5]}-, thin, shorten >=-2.5pt} % \Default[on line]{draw\val{timeline foreground}} % % \DescribeKey{timeline/timeline minor mark}\valmarg{key-value list}\AfterLastParam %^^A timeline minor mark/.forward to=/chronos/timeline minor mark@too % \emph{Adds} \meta{key-value list} to the \stylelabelname{} used for the vertical lines drawn when \pkg{chronos} labels a \conceptname{minor year} on or off the timeline and \keyname[link,link prefix=timeline/,idx=false,type=boolkey]{timeline minor marks} is true. % These correspond to the \conceptname[idx post=marks\string\textnormal{ at},idx font post=\ConceptFont]{minor steps} at which \pkg{chronos} puts \conceptname[idx post=at \string\textconcept{minor steps}]{years}. % \Example{timeline mark={thin, shorten >=-2pt}} % \Default[off line]{draw\val{timeline foreground}, {Triangle[width=0pt 3,reversed,length=0pt 1.5]}-, very thin, shorten >=-2.5pt} % \Default[on line]{draw\val{timeline foreground}, thin} % % \DescribeKey{timeline/timeline bare mark}\valmarg{key-value list}\AfterLastParam %^^A timeline bare mark/.forward to=/chronos/timeline bare mark@too % \emph{Adds} \meta{key-value list} to the \stylelabelname{} used to draw lines at \keyname[link,link prefix=timeline/,idx=false]{step divisions}, provided \keyname[link,link prefix=timeline/,idx=false,type=boolkey]{timeline marks} is true. % \Example{timeline bare mark={thin, <-}} % \Default[off line]{draw\val{timeline foreground}, {Triangle[width=0pt 3,reversed,length=0pt 1.5]}-, very thin, shorten >=-1.5pt} % \Default[on line]{draw\val{timeline foreground}, thick} % % \DescribeKey{timeline/timeline all marks}\valmarg{key-value list}\AfterLastParam %^^A timeline all marks/.forward to=/chronos/timeline bare mark@too % \emph{Adds} to the \styleslabelname{} used to draw lines at \conceptname[idx post=common configuration]{major years,minor years,step divisions}. % This is equivalent to passing \meta{key-value list} to each of \keyname[link,link prefix=timeline/,idx=false]{timeline mark,timeline minor mark,timeline bare mark}. % %^^A \DescribeStyle{timeline mark off line,timeline mark on line,timeline minor mark off line,timeline minor mark on line,timeline bare mark off line,timeline bare mark on line}If you wish to \emph{replace}, as opposed to modifying, the \styleslabelname{} used for rendering \conceptname{marks}, you can redefine the relevant \styleslabelname{}. %^^A \emph{Note that \cs{draw} is required for visible \conceptname{marks}.} %^^A \begin{chronoscode} %^^A \begin{chronos} %^^A [ %^^A timeline years=below, %^^A timeline mark off line/.style={-{Circle}, thick, draw=gray, shorten >=-4pt}, %^^A timeline minor mark off line/.style={-{Circle}, thin, draw=gray, shorten >=-3pt}, %^^A timeline bare mark off line/.style={-{Circle}, ultra thin, draw=gray, shorten >=-2pt}, %^^A ] %^^A \end{chronos} %^^A \end{chronoscode} %^^A \Default[timeline mark off line]{draw\val{timeline foreground}, {Triangle[width=0pt 3,reversed,length=0pt 1.5]}-, thin, shorten >=-2.5pt} %^^A \Default[timeline mark on line]{draw\val{timeline foreground}} %^^A \Default[timeline minor mark off line]{draw\val{timeline foreground}, {Triangle[width=0pt 3,reversed,length=0pt 1.5]}-, very thin, shorten >=-2.5pt} %^^A \Default[timeline minor mark on line]{draw\val{timeline foreground}, thin} %^^A \Default[timeline bare mark off line]{draw\val{timeline foreground}, {Triangle[width=0pt 3,reversed,length=0pt 1.5]}-, very thin, shorten >=-1.5pt} %^^A \Default[timeline bare mark on line]{draw\val{timeline foreground}, thick} % % \DescribeStyle{event year on line} % The \stylelabelname{} used to mark \conceptsname[idx post=event year on line,idx font post=\KeyFont]{year} on the \conceptname[idx post=event year on line,idx font post=\KeyFont]{timeline} if \keyname[idx=false,link]{event years on line} is enabled. % By default, the \stylelabelname{} otherwise used for \conceptsname[no idx]{year} when on the line is used. % Redefine this if you wish, but you could also use \keyname[link,link prefix=timeline/,idx=false,type=choice]{timeline years}, since no other \conceptsname[idx post=unmarked]{year} will be set on the line anyway. % % \DescribeKey{event year on line skip} % Don't put this particular event's year on the \conceptname[idx post=skip{\string\ttfamily\string\space\ event year on line}]{timeline}. % This can be used if the line would otherwise become too crowded. % See \cref{subsec:add-elements-lconfig}. % % \DescribeStyle{timeline/era switch off line} % The \stylelabelname{} to use if years are ‘off line’ and \keyname[link,link prefix=timeline/,idx=false,type=boolkey]{mark at era switch} is \texttt{true}. % With the standard settings, you would get a small mark at the switch, no different from other intermediate marks. % Likely you want something more similar in stature to the year labels. % Redefine or supplement using standard \TikZ{} techniques. % \Default{thick, shorten >=0pt} % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % era switch off line/.append style={ultra thick},% retain undoing of shortening in default, but make mark thicker % era switch off line/.style={ultra thick, shorten>=-2pt},% make mark thicker and longer % era switch off line/.style={shorten>=-2pt},% make mark longer but use whatever thickness is used for other marks % }, % ] % \end{chronos} % \end{chronoscode} % %^^A END subsubsec:timeline-marks-years % % \subsubsection{Timeline Fonts}\label{subsubsec:timeline-fonts} %^^A BEGIN subsubsec:timeline-fonts % % \DescribeKey{major step font}\valmarg{key-value list}\AfterLastParam %^^A major step font/.forward to=/chronos/llinell amser/ffont camau mawr % The font used for \conceptname[idx post=font]{major years}. % \Default{\sffamily\bfseries} % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % major step font=\sffamily, % }, % ] % \end{chronos} % \end{chronoscode} % % % \DescribeKey{timeline/minor step font}\valmarg{key-value list}\AfterLastParam %^^A minor step font/.forward to=/chronos/llinell amser/ffont camau bach % The font used for \conceptname[idx post=font]{minor years}. % \Default{\sffamily} % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % minor step font=\sffamily\small, % }, % ] % \end{chronos} % \end{chronoscode} % % \DescribeKey{timeline/eras font}\valmarg{key-value list}\AfterLastParam %^^A eras font/.forward to=/chronos/llinell amser/ffont cyfnodau % The font used for era labels on the \conceptname[idx post={font}]{timeline}. % \Default{\sffamily\bfseries} % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % eras font=\sffamily\bfseries\large, % }, % ] % \end{chronos} % \end{chronoscode} % %^^A END subsubsec:timeline-fonts % % \subsubsection{Timeline Colours}\label{subsubsec:timeline-lliwiau} %^^A BEGIN subsubsec:timeline-lliwiau % % \DescribeColkey{timeline/timeline border inner colour,timeline/timeline border inner color}\val{colour name}\AfterLastParam % The innermost colour used for the gradient used to shade the \conceptname[type=element,idx as=timeline border,idx post=colour configuration]{timeline borders}, if any. % This colour is accessible within the \enviro{chronos} environment as \keyname[link,idx=false,type=colour,conj=or]{chronos timeline border inner colour,chronos timeline border inner color}. % \Default*{}the \keyname[link,link prefix=timeline/,idx=false,type=colkey]{timeline background} colour, which is itself \texttt{black} by default. % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % timeline border inner colour=blue, % }, % ] % \end{chronos} % \end{chronoscode} % % \DescribeColkey{timeline/timeline border outer colour,timeline/timeline border outer color}\val{colour name}\AfterLastParam % The outermost colour used for the gradient used to shade the \conceptname[type=element,idx as=timeline border,idx post=colour configuration]{timeline borders}, if any. % This colour is accessible within the \enviro{chronos} environment as \keyname[link,idx=false,type=colour,conj=or]{chronos timeline border outer colour,chronos timeline border outer color}. % \Default*{}the \keyname[type=colkey,no idx]{background} colour, which is itself \texttt{white} by default. % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % timeline border outer colour=green!5!white, % }, % ] % \end{chronos} % \end{chronoscode} % % \DescribeColkey{timeline/timeline border middle colour,timeline/timeline border middle color}\val{colour name}\AfterLastParam % The middle colour used for the gradient used to shade the \conceptname,idx post=colour configuration[type=element,idx as=timeline border]{timeline borders}, if any. % This colour is accessible within the \enviro{chronos} environment as \keyname[link,idx=false,type=colour,conj=or]{chronos timeline border middle colour,chronos timeline border middle color}. % \Default*{}a 50-50 mix of the \keyname[link,idx=false,type=colkey,link prefix=timeline/]{timeline border outer colour,timeline border inner colour}. % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % timeline border middle colour=blue!20!green, % }, % ] % \end{chronos} % \end{chronoscode} % % \DescribeColkey{timeline/timeline background}\val{colour name}\AfterLastParam % The colour used for the background of the central part of the \conceptname[idx post=colours,idx font post=\ConceptFont]{timeline}. % This colour is accessible within the \enviro{chronos} environment as \keyname[link,idx=false,type=colour,conj=or]{chronos timeline background colour,chronos timeline background color}. % \Default*{}the \keyname[type=colkey,no idx]{foreground} colour, which is itself \texttt{black} by default (if putting years/marks on the line). % \Default*{}the \keyname[type=colkey,no idx]{background} colour, which is itself \texttt{white} by default (otherwise). % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % timeline background=blue, % }, % ] % \end{chronos} % \end{chronoscode} % % \DescribeColkey{timeline/timeline foreground}\val{colour name}\AfterLastParam % The colour used for the foreground of the central part of the \conceptname[idx post=colours,idx font post=\ConceptFont,no idx]{timeline}. % This colour is accessible within the \enviro{chronos} environment as \keyname[link,idx=false,type=colour,conj=or]{chronos timeline foreground colour,chronos timeline foreground color}. % \Default*{}the \keyname[type=colkey,no idx]{background} colour, which is itself \texttt{white} by default (if putting years/marks on the line). % \Default*{}the \keyname[type=colkey,no idx]{foreground} colour, which is itself \texttt{black} by default (otherwise). % \begin{chronoscode} % \begin{chronos} % [ % timeline={% % timeline foreground=green!5!white, % }, % ] % \end{chronos} % \end{chronoscode} % % \begin{figure} % \centering % \begin{chronos} % [ % timeline={% % dates={-2:2}, % mark at era switch=false, % timeline border inner colour=blue, % timeline border outer colour=green!5!white, % timeline border middle colour=blue!20!green, % timeline background=blue, % timeline foreground=green!5!white, % }, % background=magenta, % foreground=red, % ] % \end{chronos} % \caption{Cumulative effect of colour settings given as examples in \cref{subsubsec:timeline-lliwiau,subsec:lliwiau}.}\label{fig:timeline-lliwiau-ee} % \end{figure} % % The cumulative effect of the colour settings given in the examples in this \namecref{subsubsec:timeline-lliwiau}, together with the \keyname[type=colkey]{background,foreground} from \cref{subsec:lliwiau} is shown in \cref{fig:timeline-lliwiau-ee}. % % %^^A END subsubsec:timeline-lliwiau % % \subsubsection{Timeline Style}\label{subsubsec:timeline-style} %^^A BEGIN subsubsec:timeline-style % % The \conceptname[link,idx post=style]{timeline}'s overall style can be customised using the following \keyslabelname{}, which should (and, by default, do) utilise \conceptname[idx pre=timeline,idx font pre=\ConceptFont]{colours} from the \conceptname[link,no idx,type=concept]{colour scheme} (see \cref{subsec:chronos-style-creation}). % Unless you are creating a \conceptname[type=concept,link,no idx]{chronos style}, it is best to \emph{add to} rather than \emph{replacing} the existing configuration. % For example, if you wish the line to take the form of an arrow, you can simply add the use of an appropriate arrow tip, without modifying the colours, dimensions or markings. % % \DescribeKey{timeline/timeline line,timeline/timeline line\textquotesingle,timeline/timeline line+}\valmarg{key-value list}\AfterLastParam % The style of the \conceptname[link,idx pre=timeline,idx font pre=\ConceptFont]{timeline line}. % \keyname[no idx]{timeline/timeline line+} adds to the current list; \keyname[no idx]{timeline/timeline line,timeline/timeline line\textquotesingle} replace it. % \Default{empty} % \Initial % This \keylabelname{} makes it possible to override the default drawing or filling of the \conceptsname[no idx,link]{timeline line}. % % For example, \keyname[type=chronosstyle,idx post=use of \string\textkey{timeline line}\string\idxeg]{blues below} includes the following in its \conceptname[link,idx post={configuration, \string\textkey{timeline line}}]{timeline} configuration, % \begin{chronoscode} % timeline={% % ... % timeline line={Bar-Latex,chronos timeline foreground colour,double=chronos timeline background colour,line width=\timelineht/3,double distance=\timelineht/3,shorten <=-\timelineht/3,shorten >=-3pt-2.1\timelineht}, % timeline config+={\pgfqkeys{/chronos/timeline}{timeline width-={3pt+2.43\timelineht}}}, % ... % } % \end{chronoscode} % % To make the \conceptname[no idx]{timeline line} into an arrow, without otherwise modifying the existing style, use, for example, % \begin{chronoscode} % timeline={% % ... % timeline line+={shorten >={-10mm}, -{Triangle Cap[length=10mm]}}, % timeline config+={\pgfqkeys{/chronos/timeline}{timeline width-=10mm}}, % ... % } % \end{chronoscode} % The adjustments are required to ensure that the tapered part is not counted when \enviro{chronos} calculates how much of the total \keyname[idx pre=timeline,link pre=timeline/,idx font pre=\KeyFont,type=dimkey]{timeline width} is available to represent time. % % \DescribeBoolkey{timeline/timeline arrow}\vals{true,false}\AfterLastParam % Whether the \conceptname[link,no idx]{timeline} should be or have an arrow or arrows. % \Default{true} % \Initial{false} % \emph{Whether this has any effect depends entirely on the \chronosstylelabelname{}. % With the default settings, it does nothing but trigger a warning, since \texttt{on line} \styleslabelname{} cannot have arrows.} % % \DescribeKey{timeline/no timeline arrow}%^^A % A convenience \keylabelname{} which sets \keyname[type=boolkey,no idx]{timeline/timeline arrow} \texttt{false}. % \emph{Whether this has any effect depends entirely on the \chronosstylelabelname{}.} % % \DescribeKey{timeline/timeline border,timeline/timeline border\textquotesingle,timeline/timeline border+}\valmarg{key-value list}\AfterLastParam % The style of the \conceptname[link,idx pre=timeline,idx font pre=\ConceptFont]{timeline border}. % \keyname[no idx]{timeline/timeline border+} adds to the current list; \keyname[no idx]{timeline/timeline border,timeline/timeline border\textquotesingle} replace it. % \Default{empty} % \Initial % This \keylabelname{} makes it possible to override the default gradients used to fill the \conceptsname[no idx,link,link to=timeline/timeline border]{border}. % %^^A END subsubsec:timeline-style % %^^A END subsec:llinell-amser % % \subsection{Frame}\label{subsec:frame} %^^A BEGIN subsec:frame % % \DescribeBoolkey{frame}\vals{true,false}\AfterLastParam % Whether to draw a frame. % This is initially false, but use of \keyname[no idx,link]{main/frame} will automatically set it to true. % \Default{true} % \Initial{false} % % \DescribeBoolkey{frame uses bb}\vals{true,false}\AfterLastParam % Whether the bounding box should be used to determine any frame at the end of the \enviro{chronos} environment. % This is true by default and almost certainly what you want unless you are smuggling code into the end of the environment or using the frame for nefarious purposes. % \Default{true} % \Initial{true} % % \DescribeKey{main/frame,main/frame\textquotesingle,main/frame+}\valmarg{key-value list}\AfterLastParam % The style of the \TikZ{} \texttt{node} used to draw the \keyname[type=boolkey,idx post=style]{frame}. % This may be freely redefined as desired. % \Default[empty] % \Example{main/frame=\{draw=black,ultra thick,inner sep=5pt\}} % \Example{main/frame+=\{double=blue\}} % The second form may be useful if you wish to modify, rather than replace, a style defined by a \conceptname[type=chronosstyle,idx as=modifying,font=\normalfont]{\chronosstylelabelname}. % \keyname[link,no idx]{main/frame,main/frame\textquotesingle} replace any current list; \keyname[link,no idx]{main/frame+} adds to it. % % %^^A END subsec:frame % % \subsection{Placing Things: Levels \& Coordinates}\label{subsec:levels-coords} %^^A BEGIN subsec:levels-coords % % Knowing where to put things may get tricky in complicated or densely-packed \conceptname[idx as=timeline,idx post=densely packed]{timelines}. % \Pkg{chronos} offers several techniques to help. % The simplest is to simply use existing items as reference points. % \Pkg{chronos} names coordinates and nodes routinely and predictably, as explained throughout this documentation. % However, sometimes this isn't quite enough. % \Conceptname[idx post=help with placement,link]{levels,chronos coordinates} offer additional help with vertical and horizontal placement respectively. % % \subsubsection{Levels}\label{subsubsec:levels}\chronosdochypertargets{element}{}{levels,level} %^^A BEGIN subsubsec:levels % % \Conceptname{levels} are not (generally) visible \elementslabelname{}. % They are instead part of the structure behind-the-scenes. % They are, if you like, minimal stage-hands. % % The idea is to tell \pkg{chronos} how many tiers (approximately) of \elementslabelname{} you will create above and below the \conceptname[idx post=levels,idx font post=\ConceptFont]{timeline}. % For each of these levels, \pkg{chronos} creates a standardised node or \keyname[type=choice,idx as=placeholders,link to=placeholders,idx post=levels,idx font post=\ConceptFont]{placeholder} based on the settings used for \elementslabelname{} of type \conceptname[type=tag,idx post=as basis for \string\textconcept{levels}]{life} when the \conceptname[no idx]{timeline} is constructed. % Each of these nodes is named: \texttt{level 1}, \texttt{level 2}, \dots{} above the \conceptname[no idx]{timeline} and \texttt{level -1}, \texttt{level -2}, \dots{} below\footnote{You can also refer to the nodes above as \texttt{u1}, \texttt{u2} etc.\ and those below as \texttt{i1}, \texttt{i2} etc\@.}. % The first node in each direction is shifted \texttt{2pt} from the \conceptname[no idx]{timeline}. % Subsequent nodes are created directly above each other, with no separation between. % % Together with points on the \conceptname[no idx]{timeline}, you then have a crude system for placing things horizontally and vertically. % It also enables you to ‘stack’ \conceptname[idx as=text tag,idx post=stacking]{text tags}, but create them in any order. % % \DescribeKey{levels}\cvalsmarg{number above,number below}\AfterLastParam %^^A levels/.forward to=/chronos/lefelau % \meta{number above} and \meta{number below} should be non-negative integers specifying how many levels to create above and below the \conceptname[idx post={levels\string\textnormal{, creating}},idx font post=\ConceptFont]{timeline} respectively. % \Default{}no number of \keyname[no idx]{levels} are created by default (not even zero). % \begin{chronoscode} % \begin{chronos} % [ % levels=4:4, % ] % \end{chronos} % \end{chronoscode} % % \DescribeKey{levels at}\valmarg{coordinate}\AfterLastParam %^^A levels at/.forward to=/chronos/lefelau at % Although they are not intended to be visible in the \conceptname[idx post={levels\string\textnormal{, rendering visible}},idx font post=\ConceptFont]{timeline}, placeholder nodes may be rendered visible for debugging or development purposes. % As such, it may be useful to move them from their default location. % \Default{chronos mid} % \begin{chronoscode} % \begin{chronos} % [ % levels at=chronos year -200,% make sure this exists! % ] % \end{chronos} % \end{chronoscode} % % To render the nodes temporarily visible, see \cref{sec:dadfygio}. % %^^A END subsubsec:levels % % \subsubsection{Chronos Coordinates}\label{subsubsec:chronos-coords}\chronosdochypertargets{element}{}{chronos coords,chronos coordinate,chronos coordinates,chronos coord} %^^A BEGIN subsubsec:chronos-coords % % In addition to the coordinates and nodes shown in \cref{fig:anatomi-coords}, \pkg{chronos} names a coordinate or node \texttt{chronos year \meta{year}} for each year represented on the \conceptname[idx post=coordinates]{timeline}. % However, depending on your preferred style, this may not provide sufficient horizontal reference points. % In that case, you can create additional coordinates. % Like \conceptname[idx post=cf.~\string\textconcept{chronos coordinates},link]{levels}, \conceptname[idx post=cf.~\string\textconcept{levels},link]{chronos coordinates} are not ordinarily visible; unlike \conceptname[no idx]{levels}, there is nothing there to see\footnote{You could label them, of course, but they are just regular \pgf/\TikZ{} coordinates and so naturally invisible.}. % % \DescribeClistkey{chronos coords}\valmarg{comma-separated list of years}\AfterLastParam % For each \meta{year} in \meta{comma-separated list of years}, \pkg{chronos} will place a single coordinate named \texttt{chronos year \meta{year}} at the appropriate point on the \conceptname[idx post={coordinates, creating additional}]{timeline}. % These may be used together with \conceptname[no idx,link]{levels} to specify coordinates e.g.~\texttt{(chronos year \meta{year} \textbar- level \meta{n})} is the point vertically aligned with \texttt{level \meta{n}} and horizontally aligned with \texttt{chronos year \meta{year}}. % \Default{empty} % %^^A END subsubsec:chronos-coords % % \subsubsection{Miscellaneous}\label{subsubsec:misc} %^^A BEGIN subsubsec:misc % % \DescribeMacro{\chronosbaselineskip}The \enviro{chronos} \envlabelname{} sets this \macrolabelname{} equal to the current \keyname[type=macro,no link]{\cs{baselineskip}}. % It may be used to fine-tune placement in the same way you might use \cs{baselineskip} outside a \keyname[type=env,no link,idx post=\string\cs{chronosbaselineskip}]{tikzpicture}. % %^^A END subsubsec:misc % %^^A END subsec:levels-coords % % \subsection{Headings}\label{subsec:headings} %^^A BEGIN subsec:headings % % \DescribeClistkey{headings,headings+,headings\textquotesingle}\tuplelistvalsmarg{text/coordinate 1/coordinate 2,text/coordinate 1/coordinate 2,\dots}\AfterLastParam % List of value triplets in the format used by \pgf{}'s \cs{foreach}. % The list should consist of one or more triplets where \meta{text} is used in capitalised form for the content of a node which will be aligned with \texttt{chronos main headings} vertically and placed midway between the horizontal positions of \meta{coordinate 1} and \meta{coordinate 2}. % \keyname[type=clistkey,link,no idx]{headings,headings+} add to the current list; \keyname[type=clistkey,link,no idx]{headings\textquotesingle} replaces it. % \Default*{}none\par % See \cref{subsubsec:ee-headings} for an example.\par % % \DescribeKey{heading,heading+,heading\textquotesingle}\valmarg{text}\marg{coordinate 1}\marg{coordinate 2}\AfterLastParam % Add or set a single \conceptname{heading}. % These forms require the same information as \keyname[type=clistkey,no idx]{headings,headings+,headings\textquotesingle} but as three separate arguments. % \Default*{}none\par % See \cref{subsubsec:ee-headings} for an example.\par % % \DescribeClistkey{subheadings,subheadings+,subheadings\textquotesingle}\tuplelistvalsmarg{text/coordinate 1/coordinate 2/coordinate 3,text/coordinate 1/coordinate 2/coordinate 3,\dots}\AfterLastParam % List of value quadruplets in the format used by \pgf{}'s \cs{foreach}. % The list should consist of one or more quadruplets where \meta{text} is used in capitalised form for the content of a node which will be aligned with \meta{coordinate 4} vertically and placed midway between the horizontal positions of \meta{coordinate 1} and \meta{coordinate 2}. % \meta{coordinate 4} should be either \texttt{chronos upper subheadings} or \texttt{chronos lower subheadings}. % \keyname[type=clistkey,link,no idx]{subheadings,subheadings+} add to the current list; \keyname[type=clistkey,link,no idx]{subheadings\textquotesingle} replaces it. % \Default*{}none\par % See \cref{subsubsec:ee-headings} for an example.\par % % \DescribeKey{subheading,subheading+,subheading\textquotesingle}\valmarg{text}\marg{coordinate 1}\marg{coordinate 2}\marg{coordinate 3}\AfterLastParam % Add or set a single \conceptname{subheading} horizontally aligned with the midpoint between the horizontal positions of \meta{coordinate 1} and \meta{coordinate 2} and vertically aligned with \meta{coordinate 3}. % \meta{coordinate 3} should be either \texttt{chronos lower subheadings} or \texttt{chronos upper subheadings}, though this is not enforced. % These forms require the same information as \keyname[type=clistkey,no idx]{subheadings,subheadings+,subheadings\textquotesingle} but as four separate arguments. % \Default*{}none\par % See \cref{subsubsec:ee-headings} for an example.\par % % \DescribeClistkey{century subheadings,century subheadings+,century subheadings\textquotesingle}\valmarg{number list}\marg{text}\AfterLastParam % Create a \conceptname[idx post=century subheadings,idx font post=\KeyFont,link]{subheading} aligned with \texttt{chronos lower subheadings} for each of the centuries specified in \val{number list}, using \meta{text} as the superscript for each. % Note that for the $n$th century \texttt{chronos year} coordinates much exist for both the year $n$00 and the year $(n+1)$00. % \keyname[type=clistkey,no idx]{century subheadings,century subheadings+} add to the current list; \keyname[type=clistkey,no idx]{century subheadings\textquotesingle} replaces it. % \Default*{}none\par % See \cref{subsubsec:ee-headings} for an example.\par % % \DescribeKey{century subheading,century subheading+,century subheading\textquotesingle}\valmarg{number}\marg{text}\AfterLastParam % Add or set a single \conceptname[no idx,link]{century subheading}. % These forms require the same information as \keyname[type=clistkey,no idx]{century subheadings,century subheadings+,century subheadings\textquotesingle} but expect a single \meta{number}. % \Default*{}none\par % See \cref{subsubsec:ee-headings} for an example.\par % % \subsubsection{Example}\label{subsubsec:ee-headings} %^^A BEGIN subsubsec:ee-headings % % For example, here's an excerpt from the code used for \cref{fig:anatomi} which demonstrates the use of \keyslabelname{} to create \conceptname[idx post=use of keys to create\string\idxeg]{headings,subheadings}. % \begin{latexcode} % \begin{chronos} % [ % timeline={% % dates={-500}:1500, % }, % chronos coords={-500,-450,...,1500}, % headings={heading/chronos year 800/chronos year 1500,another heading/chronos year -450/chronos year 1,a third heading/chronos year 100/chronos year 800}, % subheadings={subheading on upper level/chronos year -250/chronos year 500/chronos upper subheadings,subheading on lower level/chronos start/chronos year -100/chronos lower subheadings,another subheading/chronos year 1000/chronos year 1500/chronos upper subheadings,yet another subheading/chronos year 500/chronos year 1000/chronos lower subheadings}, % century subheadings={12,13,...,15}{th}, % century subheading={1}{st}, % ] % \end{chronos} % \end{latexcode} % Note the use of \keyname[type=clistkey,idx post={to add coordinates for \string\textconcept{headings}, \string\textconcept{subheadings} and \string\textconcept{century subheadings}}]{chronos coords} to add coordinates for years which may not be visibly represented on the \conceptsname[idx post=coordinates for unrepresented \string\textconcept{year}]{timeline}. % This ensures the \texttt{chronos year} coordinates needed to place \conceptname[link,idx post=ensuring required coordinates exist]{headings,subheadings,century subheadings} exist. % It is permissible for coordinates to lie beyond the \conceptname[no idx,link]{timeline}'s \keyname[type=datekey,link prefix=timeline/,idx as=timeline/end date]{end date}, though you may get strange results if you create coordinates too distant from the endpoint. % %^^A END subsubsec:ee-headings % % \subsubsection{Headings Configuration}\label{subsubsec:headings-config} %^^A BEGIN subsubsec:headings-config % % \DescribeKey{headings style,headings style+,headings style\textquotesingle}\valmarg{key-value list}\AfterLastParam % \pgf/\TikZ{} options to apply to \conceptname[idx post=style configuration]{headings}. % \keyname[link,no idx]{headings style,headings style\textquotesingle} replace the current list; \keyname[link,no idx]{headings style+} replaces it. % \Default[empty] % \Example{headings style=\{align=center, anchor=base, inner sep=0pt, outer sep=0pt, color=chronos main colour, opacity=.8, font=\bs bfseries\}} % Although the \stylelabelname{} is empty by default, \texttt{anchor=base} is passed to the node prior to the \stylelabelname{}. % If you do not want this alignment, therefore, you must specify an alternative anchor. % % \DescribeKey{subheadings style,subheadings style+,subheadings style\textquotesingle}\valmarg{key-value list}\AfterLastParam % \pgf/\TikZ{} options to apply to \conceptname[idx post=style configuration]{subheadings}. % \keyname[no idx]{subheadings style,subheadings style\textquotesingle} replace the current list; \keyname[no idx]{subheadings style+} replaces it. % \Default[empty] % \Example{subheadings style=\{align=center, anchor=base, inner sep=0pt, outer sep=0pt, font=\bs bfseries\bs itshape\bs footnotesize, color=chronos main colour!75!chronos main background colour, opacity=.8\}} % Although the \stylelabelname{} is empty by default, \texttt{anchor=base} is passed to the node prior to the \stylelabelname{}. % If you do not want this alignment, therefore, you must specify an alternative anchor. % %^^A END subsubsec:headings-config % %^^A END subsec:headings % % \subsection{Colours}\label{subsec:lliwiau}\chronosdocidx[target,type=colour,font=\normalfont,idx as=configuration]{colour} %^^A BEGIN subsec:lliwiau % % For \conceptname[no idx,link]{timeline} colours, see \cref{subsubsec:timeline-lliwiau}. % For basic colours, see \cref{subsec:lliwiau-basic}. % % The \emph{easiest} way to customise colours is to load a \conceptname[type=concept,link,idx post=as customisation]{colour scheme} as explained in \cref{subsec:chronos-schemes}. % % The \emph{simplest} way to make use of colours is to specify colours for \elementslabelname{} manually. % Defaults can be configured in the \conceptname[no idx]{timeline} setup. % % \DescribeColkey{life/default colour,event/default colour,period/default colour,theory/default colour,info/default colour,life/default color,event/default color,period/default color,theory/default color,info/default color}\hypertarget{colkey:/default-colour}{}\val{colour name}\AfterLastParam % Sets the default colour for elements of the specified type. % This provides a fall-back colour and ensures some colour is always found, even when none is specified. % \Default*{}\keyname[type=colour,idx post=as \string\textconcept{tag} default]{chronos main colour}\par % See \keyname[type=colkey]{foreground} in \cref{subsubsec:timeline-lliwiau}. % For example, % \begin{chronoscode} % \begin{chronos} % [ % life/default colour=chronos timeline foreground colour, % event/default colour=chronos timeline foreground colour!50!chronos main colour, % period/default colour=chronos main colour, % theory/default colour=chronos timeline background colour, % info/default colour=chronos main colour!50!chronos main background colour, % ] % \end{chronos} % \end{chronoscode} % % % Alternatively or in addition, colours can be set on a per-element basis (\cref{subsec:add-elements-gconfig,subsec:add-elements-lconfig,subsec:add-elements-glconfig}). % % % \subsubsection{Colour Rotation}\label{subsubsec:troi-lliwiau}\chronosdocidx[type=concept,target,font=\ConceptFont]{colour rotation}\vspace{-\baselineskip} %^^A BEGIN subsubsec:troi-lliwiau % % More complex configuration can be achieved using lists of colours from which \pkg{chronos} selects when adding elements to the \conceptname[idx as=additional,idx post=and \string\textconcept{colour rotation},font=\ConceptFont]{timeline}. % If you wanted to typeset all elements of type \conceptname[type=tag,link,idx post=colours of the rainbow\string\idxeg]{life} in the colours of the rainbow taken in order, for example, it would be error prone and inflexible to assign colours manually. % Instead, we would like \pkg{chronos} to select the colours in turn, keep track of which colour is used for which element and automatically adjust the assignments if items are inserted or removed from the \conceptname[no idx,idx post={elements, additional}]{timeline}. % % To achieve this, \pkg{chronos} supports \conceptname[type=concept,link,no idx]{colour rotation} for \conceptname[type=element,idx as=text tag,link,link to=text tag,idx post=and \string\textconcept{colour rotation}]{text tags}, \conceptname[type=element,idx as=connection,link,link to=connection,idx post=and \string\textconcept{colour rotation}]{connections} and \conceptname[type=element,idx as=line,link,link to=line,idx post=and \string\textconcept{colour rotation}]{lines} of type \conceptname[type=tag,link,idx post=colour rotation,idx font post=\ConceptFont]{life,event,period,theory}. % % \Pkg{chronos} assigns all \conceptsname[link,type=concept,idx post=colour assignment to]{element} belonging to \conceptsname[type=concept,link,idx post=colour assignment to \string\textconcept{elements}]{tag} \conceptname[type=tag,link,idx post=assignment of colours to \string\textconcept{elements} of \string\textconcept{tag} type]{life,event,period,theory,info} a \conceptname[type=colour,no link,font=\normalfont,idx as=assignment by \string\pkg{chronos}]{colour} with a predictable \conceptname[type=colour]{colour name}. % \Pkg{chronos} determines the colour to assign to the \conceptname[link,type=concept,no idx]{element} as follows. % \begin{enumerate} % \item First, \pkg{chronos} checks whether a \keyname[type=colkey,idx post=in assignment of \string\textconcept{colour names}]{colour} has been specified for the \conceptname[link,type=concept,no idx]{element}. % \item[\sqarrow] If it has, that \keyname[type=colkey,no idx]{colour} is assigned. % \item If not, \pkg{chronos} checks whether \conceptname[link,type=concept,idx post=in assignment of \string\textconcept{colour names}]{colour rotation} is enabled for the relevant type of element. % \item[\sqarrow] If it is, \pkg{chronos} assigns the next colour from the specified \conceptname[type=concept,link,idx post=colour assignment from]{colour list} for the type of element in question and according to whether the element will be placed above or below the \conceptname[idx post={elements, additional},no idx]{timeline}. % That colour is then moved to the bottom of the \conceptname[type=concept,idx as=colour list,idx post=rotation,link to=colour list,link]{list}. % \item If \conceptname[link,type=concept,link to=colour rotation,no idx]{rotation} is not enabled, a configurable \keyname[type=colkey,idx as=\meta{tag}/default colour,link pre=\meta{tag}/,idx post=in assignment of \string\textconcept{colour names}]{default colour} is assigned instead. % \end{enumerate} % % 8 sets of colours can be configured which correspond to material placed above and below the \conceptname[idx post={elements, additional},no idx]{timeline} for each of default, \conceptname[type=tag,idx post=colour lists \string\textrm{for} colour rotation,idx font post=\ConceptFont]{life,event,period}. % See \cref{subsubsec:collist} for details. % %^^A END subsubsec:troi-lliwiau % % \subsubsection[Using Colours]{Using \Conceptname[type=colour,font=\normalfont,idx as=using,no link]{colours}}\label{subsubsec:enwau-lliwiau}\chronosdocidx[idx as=accessing,type=colour,target,font=\normalfont]{colours}\hypertarget{colour}{}\vspace{-\baselineskip}%^^A %^^A BEGIN subsubsec:enwau-lliwiau % % There are at least two things you might want \pkg{chronos} to tell you about \elementslabelname{}' \conceptname[type=colour,idx as=colours,no idx]{\colourslabelname{}}. % First, you might want to know the \keyname[type=colour,idx as=colour,no idx,no link]{\colourlabelname{}} assigned to a particular \elementlabelname{} \emph{after} the \elementlabelname{} is created. % Second, you might want to know the \keyname[type=colour,idx as=colour,no idx,no link]{\colourlabelname{}} assigned to the current \elementlabelname{} during creation. % \Cref{par:enwau-lliwiau-ar-ol} addresses the first, \cref{par:enwau-lliwiau-current-tag} the second. % % \paragraph{Colours by Element Name}\label{par:enwau-lliwiau-ar-ol} %^^A BEGIN par:enwau-lliwiau-ar-ol % % Regardless of how the \conceptname[type=colour,idx as=colour,no idx]{\colourlabelname{}} assigned to an \elementlabelname{} ends up being determined, \pkg{chronos} assigns the \conceptname[type=colour,idx as=colour,no idx]{\colourlabelname{}} a name derived from the \elementlabelname{} so that it can be used later, if required. % % The result of this is that, assuming we have created an \elementlabelname{} of type \conceptname[type=tag,idx post=colour names \string\textrm{assigned to} \string\textkey{donald knuth}\string\idxeg,idx font post=\ConceptFont]{life} with \keyname[idx post=as supporting \string\textkey{chronos connect}\string\idxeg]{name}\texttt{=donald knuth}, we can write % \begin{chronoscode}[chronos,connect,life] % \draw [chronos connect=life:donald knuth] (text tag connector donald knuth1) -- (text tag connector metafont2); % \end{chronoscode} % to connect Donald Knuth with an \elementlabelname{} named \texttt{metafont}, which might be of type \conceptname[type=tag,idx post=metafont\idxeg,idx font post=\KeyFont]{theory}. % The code used to draw the \conceptname[no idx,link]{connection} will use the same \keyname[type=style,no link,idx as=matching \string\textconcept{connection},font=\normalfont]{style} and \conceptname[type=colour,idx as=colour,no idx]{\colourlabelname{}} as any \conceptname[link,idx post=Donald Knuth\string\idxeg]{connection} drawn between Donald Knuth and the \conceptname[no idx]{timeline}\footnote{See \cref{subsec:add-cysylltiadau}}. % This \conceptname[type=colour,idx as=colour,no idx]{\colourlabelname{}} can also be (and, by default, is) passed to the \conceptname[type=element,idx as=\meta{tag}/text tag,link,link to=\meta{tag}/text tag,idx post=assigned colour passed to]{text tag}. % For example, a darker shade might be used for the text and outline of the node, and a paler one as a filling. % The \conceptname[type=colour,idx as=colour,no idx]{\colourlabelname{}} may also be accessed directly using \texttt{colour donald knuth}, \texttt{color donald knuth} or, if \keyname[type=boolkey,idx post=donald knuth\string\idxeg,idx font post=\KeyFont]{simple colour names} are enabled\footnote{See \cref{sec:invoke,subsubsec:enwau-lliw-syml}.}, simply \texttt{donald knuth}. % % \DescribeColour{colour \meta{name},color \meta{name}} % \Conceptname[type=colour,idx as=names,idx post=assigned,font=\normalfont]{\colourlabelname{} names} assigned to the \conceptname[idx as=element,type=concept,idx post=names of colours assigned to]{\elementlabelname} created with \keyname[idx post=use in assigned colour names]{name}\val{name}.\fortags{life,event,period,theory,info}\AfterLastParam % \emph{Note these names cannot be used during the \elementlabelname{}'s creation in \keyname[type=macro,no link,no idx]{\cs{chronos\meta{tag}}}.} % % \DescribeColour{\meta{name}}An additional name for \keyname[type=colour,no idx]{colour \meta{name}}.\fortags{life,event,period,theory,info}\AfterLastParam % \emph{Requires \keyname[type=boolkey,no idx]{simple colour names}.} % %^^A END par:enwau-lliwiau-ar-ol % % \paragraph{The Current Tag Colour}\label{par:enwau-lliwiau-current-tag} %^^A BEGIN par:enwau-lliwiau-current-tag % % You may also wish to refer to an \conceptname[idx as=using assigned colour during creation,font=\normalfont]{\elementlabelname}'s assigned \conceptname[type=colour,idx as=in \string\textconcept{tag} context,font=\normalfont]{\colourlabelname} while creating it. % % \DescribeColour{chronos current tag colour,chronos current tag color}The \conceptname[type=colour,idx as=current \string\textconcept{tag},font=\normalfont]{\colourlabelname} assigned to the current \conceptname[idx as=element,type=concept,no idx]{\elementlabelname} during creation.\fortags{life,event,period,theory,info}\AfterLastParam % This \conceptname[type=colour,idx as=colour,no idx]{\colourlabelname} is available when creating an \conceptname[idx as=element,no idx,type=concept]{\elementlabelname} belonging to an appropriate \conceptname[type=concept,idx as=tag]{\taglabelname} i.e.~inside the \conceptname[type=concept,idx as=tag,no idx]{\taglabelname} context setup when using \keyname[type=macro,conj=or,idx post=using assigned colour in]{\cs{chronoslife},\cs{chronosevent},\cs{chronosperiod},\cs{chronostheory}}. % Outside a \conceptname[type=concept,idx as=tag,no idx]{\taglabelname} context, \keyname[type=colour,idx post=outside \string\textconcept{tag} contexts]{chronos current tag colour,chronos current tag color} are equivalent to \keyname[type=colour,idx post=chronos current tag colour \string\textrm{as equivalent to outside \string\textconcept{tag} contexts},idx font post=\KeyFont]{chronos main colour}. % \Example{\bs hypersetup\{urlcolor=chronos current tag colour\}} % \Cref{fig:chronos-dev} uses this code within a \keyname[env,no link]{\enviro{figure}} to override the colour of URL links locally in such a way that each hyperlink's colour is the \conceptname[type=colour,idx as=colour,no idx]{\colourlabelname} of the \conceptname[no idx]{text tag} to which it belongs. % %^^A END par:enwau-lliwiau-current-tag % %^^A END subsubsec:enwau-lliwiau % % \subsubsection{Colour Lists}\label{subsubsec:collist}\chronosdocidx[type=concept,target,font=\ConceptFont]{colour list} %^^A BEGIN subsubsec:collist % % The lists of colours for \conceptname[type=concept,link,no idx]{colour rotation} (\cref{subsubsec:troi-lliwiau}) may be loaded from provided styles, specified directly.%^^A or transferred from another \pkg{chronos} colour list. %^^A For example, you could specify that elements of type \conceptname[type=tag]{event} should use whatever-list-of-colours-is-specified-for-type-\conceptname[type=tag]{life}-above-the-timeline when typeset below the \conceptname{timeline}. % % No specific lists are provided for \conceptname[type=tag,idx post=using default \string\textconcept{colour lists} as \string\textconcept{tag}-specific]{theory}, but you can obviously reserve the default lists for this type, if you want distinct lists for everything. % % \DescribeCollistkey{colours above,colors above}\val{list of colour names}\AfterLastParam %^^A ,lliwiau uchod % When given in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or to \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default colour list for use above the \conceptname[no idx]{timeline} to \meta{list of colour names}. % \Default{Red,Orange,Yellow,Green,Blue,MidnightBlue,Violet} % % \DescribeCollistkey{colours below,colors below}\val{list of colour names}\AfterLastParam %^^A ,lliwiau isod % When given in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or to \keyname[type=macro,no idx]{\cs{chronosset}}, sets the default colour list for use below the \conceptname[no idx]{timeline} to \meta{list of colour names}. % \Default{Red,Orange,Yellow,Green,Blue,MidnightBlue,Violet} % % \DescribeBoolkey{colour rotation,color rotation}\vals{true,false}\AfterLastParam % When given in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or to \keyname[type=macro,no idx]{\cs{chronosset}}, determines whether colours are rotated by default or not. % \Default{true} % This key does not override \taglabelname{}-specific settings. % Depending on other settings, therefore, using this key may have no effect or it may enable \conceptname[type=concept,link,idx post=effect of \string\texttt{colour rotation} key]{colour rotation} for everything. % % \DescribeKey{rotate all colours,rotate all colors} % When given in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or to \keyname[type=macro,no idx]{\cs{chronosset}}, enables both default \conceptname[type=concept,link,no idx]{colour rotation} and \conceptname[type=concept,link,no idx]{colour rotation} for all supported \tagslabelname{}. % This key overrides \taglabelname{}-specific settings. % % \DescribeKey{no colour rotation,no color rotation} % When given in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or to \keyname[type=macro,no idx]{\cs{chronosset}}, disables default \conceptname[type=concept,link,no idx]{colour rotation}. % This key does not override \taglabelname{}-specific settings. % Depending on other settings, therefore, using this key may have no effect or it may prevent \conceptname[type=concept,link,no idx]{colour rotation} completely. % % \DescribeKey{rotate no colours,rotate no colors} % When given in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or to \keyname[type=macro,no idx]{\cs{chronosset}}, disables both default \conceptname[type=concept,link,no idx]{colour rotation} and \conceptname[type=concept,link,no idx]{colour rotation} for all \tagslabelname{}. % This key overrides \taglabelname{}-specific settings. % % Note that, like many \pkg{chronos} keys, the effect of setting these depends on the current key path. % That means that using a key when creating a tag of type \conceptname[type=tag,idx post=as example of \string\textconcept{tag} context]{life}, for example, the key will have a different effect from using in in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}}. % % \DescribeCollistkey{life/colours above,life/colors above}\val{list of colour names}\AfterLastParam %^^A ,byw/lliwiau uchod % Sets the colour list for use with elements of type \conceptname[type=tag,idx post=colour rotation\string\textrm{ (above)},idx font post=\ConceptFont]{life} placed above the \conceptname[no idx]{timeline} to \meta{list of colour names}. % \Default[empty] % % \DescribeCollistkey{life/colours below,life/colors below}\val{list of colour names}\AfterLastParam %^^A ,byw/lliwiau isod % Sets the colour list for use with elements of type \conceptname[type=tag,idx post=colour rotation\string\textrm{ (below)},idx font post=\ConceptFont]{life} placed below the \conceptname[no idx]{timeline} to \meta{list of colour names}. % \Default{empty} % % \DescribeCollistkey{event/colours above,event/colors above}\val{list of colour names}\AfterLastParam %^^A ,digwyddiad/lliwiau uchod % Sets the colour list for use with elements of type \conceptname[type=tag,idx post=colour rotation\string\textrm{ (above)},idx font post=\ConceptFont]{event} placed above the \conceptname[no idx]{timeline} to \meta{list of colour names}. % \Default{empty} % % \DescribeCollistkey{event/colours below,event/colors below}\val{list of colour names}\AfterLastParam %^^A ,digwyddiad/lliwiau isod % Sets the colour list for use with elements of type \conceptname[type=tag,idx post=colour rotation\string\textrm{ (below)},idx font post=\ConceptFont]{event} placed below the \conceptname[no idx]{timeline} to \meta{list of colour names}. % % \DescribeCollistkey{period/colours above,period/colors above}\val{list of colour names}\AfterLastParam %^^A ,parhad/lliwiau uchod % Sets the colour list for use with elements of type \conceptname[type=tag,idx post=colour rotation\string\textrm{ (above)},idx font post=\ConceptFont]{period} placed above the \conceptname[no idx]{timeline} to \meta{list of colour names}. % \Default{empty} % % \DescribeCollistkey{period/colours below,period/colors below}\val{list of colour names}\AfterLastParam %^^A ,parhad/lliwiau isod % Sets the colour list for use with elements of type \conceptname[type=tag,idx post=colour rotation\string\textrm{ (below)},idx font post=\ConceptFont]{period} placed below the \conceptname[no idx]{timeline} to \meta{list of colour names}. % \Default{empty} % %^^A END subsubsec:collist % % % \subsubsection{Simple Colour Names}\label{subsubsec:enwau-lliw-syml} %^^A BEGIN subsubsec:enwau-lliw-syml % % If you wish to enable or disable \keyname[type=boolkey,no idx]{simple colour names} (see \cref{sec:invoke,subsec:lliwiau}) for a particular \conceptname[no idx]{timeline}, use one of the following two options. % % \DescribeBoolkey{simple colour names,simple color names}\vals{true,false}\AfterLastParam % Enable or disable \keyname[type=boolkey,no idx]{simple colour names}. % \Default{true} % \Initial{true} % \Example{simple colour names=false,} % See \cref{sec:invoke} for details, but note that the \keyslabelname{} here are implemented differently. % % \DescribeKey{no simple colour names,no simple color names} % Disable \keyname[type=boolkey,no idx]{simple colour names}. % \Example{no simple colour names,} % See \cref{sec:invoke} for details, but note that the \keyslabelname{} here are implemented differently. % In particular, unlike both \keyname[type=boolkey,no idx]{simple colour names} and the load-time option, \keyname[no idx]{no simple colour names} does \emph{not} take an argument. % %^^A END subsubsec:enwau-lliw-syml % % %^^A END subsec:lliwiau % % \section{Adding Elements to the Timeline}\label{sec:macros-add-elements} %^^A BEGIN sec:macros-add-elements % % See \cref{subsec:mathau} for an overview of the components available for use in the \conceptname[no idx]{timeline}'s \conceptname[type=concept,no idx,link]{\meta{timeline additions specification}}. % % Seven \macroslabelname{} are provided for adding \elementslabelname{} to the \conceptname[idx post={additional \string\textconcept{elements}}]{timeline}. % Conceptually, these are always ‘above’ or ‘below’, though they could also be created to the left or right. % For an overview of the way these commands work, see \cref{sec:anatomy}. % % \subsection{Adding Connectable Elements}\label{subsec:macros-connected-elements} %^^A BEGIN subsec:macros-connected-elements % % The most important kinds of additions \pkg{chronos} supports are those which can be connected to the \conceptname[idx post={additional \string\textconcept{elements}, \string\textsf{timeline-connectable}}]{timeline} itself. % % \subsubsection{Timeline-Connectable Elements}\label{subsubsec:macros-timeline-connectable} %^^A BEGIN subsubsec:macros-timeline-connectable % % \DescribeMacro{\chronoslife}\marg{key-value list} \fortags*{life}\AfterLastParam %^^A \byw{} % Create an element of type \conceptname[type=tag,idx post=create \string\textconcept{element} of \string\textconcept{tag} type]{life}. % The \meta{key-value list} should specify values for \pkg{chronos} \keyslabelname{} and may include arbitrary \TikZ{} \keyslabelname{}. % At a minimum, \keyname[link prefix=life/,idx as=life/name]{name} and \keyname[link prefix=life/,type=datekey,no idx]{birth} must be specified for a living person. % If the person is dead, both \keyname[link prefix=life/,type=datekey,idx as={life/birth,life/death}]{birth,death} or \keyname[link prefix=life/,type=datekey,no idx]{dates} should be given. % If no date of death is specified, \pkg{chronos} assumes the person is living and uses the current date when placing the \elementlabelname{} on the \conceptname[no idx]{timeline}. % % \Cref{tab:tag-options} summarises the \pkg{chronos} \keyslabelname{} supported by \elementslabelname{} of type \conceptname[type=tag,idx post=availability of keys]{life}, with detailed usage information provided in \cref{subsec:add-elements-lconfig,subsec:add-elements-gconfig}. % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \mmzset{disable}% % \caption{Keys which are enabled (\fycheck) and disabled (\fycross) for \taglabelname{} contexts associated with \pkg{chronos} macros.}\label{tab:tag-options} % \chronosdocidx[type=tag,font=\ConceptFont,idx post={options (summary)}]{life,event,period,theory,info,theory circle,main,copyleft,copyright} % \tikzset{tikzmark prefix=cyd-destunau}%^^A memoization aborted % \begin{tabular}{>{\ttfamily}lcccccccc} % \toprule % \sffamily & \sffamily & \sffamily & \sffamily & \sffamily & \sffamily theory & \sffamily & \sffamily & \sffamily copyleft \\ % \tikzmark{o}\sffamily Option & \sffamily life & \sffamily event & \sffamily period & \sffamily theory & \sffamily circle & \sffamily info & \sffamily main & \sffamily copyright \tikzmark{p}\\\midrule % name \tikzmark{e} & \fycheck & \fycheck & \fycheck & \fycheck & \fycheck &\fycheck & \fycheck & \fycheck \\ % as is & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycross & \fycross & \fycross \\ % at & \fycheck & \fycheck & \fycheck & \fycheck & \fycheck &\fycheck & \fycheck & \fycheck \\ % tag anchor & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycheck & \fycheck & \fycheck \\ % colour \textbar{} color & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycheck & \fycross & \fycross \\ % connect & \fycheck & \fycheck & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % connectors \textbar{} connectors+ \textbar{} connectors' & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycross & \fycross & \fycross \\ % place above & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycross & \fycross & \fycross \\ % place below & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycross & \fycross & \fycross \\ % dates & \fycheck & \fycross & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % date & \fycross & \fycheck & \fycross & \fycross & \fycross &\fycross & \fycross & \fycross \\ % birth & \fycheck & \fycross & \fycross & \fycross & \fycross &\fycross & \fycross & \fycross \\ % death & \fycheck & \fycross & \fycross & \fycross & \fycross &\fycross & \fycross & \fycross \\ % start & \fycross & \fycross & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % end & \fycross & \fycross & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % dates content & \fycheck & \fycheck & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % name content & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycheck & \fycheck & \fycheck \\ % text content & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycheck & \fycross & \fycross \\ % event year on line skip & \fycross & \fycheck & \fycross & \fycross & \fycross & \fycross & \fycross & \fycross \\ % caption & \fycross & \fycross & \fycross & \fycross & \fycross &\fycheck & \fycross & \fycross \\ % labels & \fycross & \fycross & \fycross & \fycross & \fycheck &\fycross & \fycross & \fycross \\ % circle texts & \fycross & \fycross & \fycross & \fycross & \fycheck &\fycross & \fycross & \fycross \\ % sizes & \fycross & \fycross & \fycross & \fycross & \fycheck &\fycross & \fycross & \fycross \\ % author& \fycross & \fycross & \fycross & \fycross & \fycross &\fycross & \fycross & \fycheck \\ % copyleft & \fycross & \fycross & \fycross & \fycross & \fycross &\fycross & \fycross & \fycheck \\ % notice & \fycross & \fycross & \fycross & \fycross & \fycross &\fycross & \fycross & \fycheck \\ % rotate & \fycross & \fycross & \fycross & \fycross & \fycross &\fycross & \fycross & \fycheck \\ % year & \fycross & \fycross & \fycross & \fycross & \fycross &\fycross & \fycross & \fycheck \tikzmark{ll} \\ \cmidrule(lr){1-8} % date format\tikzmark{rh} & \fycross & \fycheck & \fycross & \fycross & \fycross &\fycross & \fycross & \fycross \\ % date formats & \fycheck & \fycross & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % full dates & \fycheck & \fycheck & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % only years & \fycheck & \fycheck & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % show eras & \fycheck & \fycheck & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % without eras & \fycheck & \fycheck & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % only text & \fycheck & \fycheck & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % tag \textbar{} tag+ & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycheck & \fycross & \fycross \\ % connection \textbar{} connection+ & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycross & \fycross & \fycross \\ % line \textbar{} line+ & \fycheck & \fycheck & \fycheck & \fycross & \fycross &\fycross & \fycross & \fycross \\ % text tag \textbar{} text tag+ & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycheck & \fycross & \fycross \\ % default colour \textbar{} color & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycheck & \fycross & \fycross \\ % colours \textbar{} colors above & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycross & \fycross & \fycross \\ % colours \textbar{} colors below & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycross & \fycross & \fycross \\ %^^A colours \textbar{} colors above from clist & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycross & \fycross \\ %^^A colours \textbar{} colors below from clist & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycross & \fycross \\ % colour \textbar{} color rotation & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycross & \fycross & \fycross \\ % text tag yshift & \fycheck & \fycheck & \fycheck & \fycheck & \fycross &\fycross & \fycross & \fycross \tikzmark{g} \\ % \bottomrule % \end{tabular} % \begin{tikzpicture}[remember picture,overlay,decoration={brace,mirror,amplitude=5},every node/.style={font=\sffamily}]%^^A memoization aborted % \coordinate [xshift=-2.5pt] (a) at ($(pic cs:o)!.5!({pic cs:o} |- {pic cs:e})$); % \coordinate (b) at (a |- {$(pic cs:rh)!.5!({pic cs:rh} |- {pic cs:ll})$}); % \coordinate (c) at (b |- {pic cs:g}); % \draw [decorate] ([yshift=-1pt]a) -- node [midway,left=10pt,anchor=base,rotate=90] {primarily per item configuration} ([yshift=5pt]b) ; % \draw [decorate] ([yshift=-1pt]b) -- node [midway,left=10pt,rotate=90,anchor=base] {primarily all-of-type-\taglabelname{} configuration} ([yshift=-1pt]c); % \end{tikzpicture}%%^^A memoization aborted % \end{adjustwidth} % \end{table} % % Creating the \elementlabelname{} involves constructing, naming and connecting several components. % These are described in \cref{tab:life-period} for a typical case, but note that additional \conceptname[idx pre=life,idx font pre=\ConceptFont]{connectors} require \keyname[link prefix=life/,idx as=life/connectors]{connectors} to be set, the \conceptname[idx pre=life,idx font pre=\ConceptFont]{connection} is drawn only if \keyname[link prefix=life/,type=boolkey,idx as=life/connect]{connect} is \texttt{true} and some components may be rendered invisibly. % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{Components of \conceptname[idx as=element,type=concept,idx post=components of \textconcept{life} and \textconcept{period}]{elements} of \conceptname[type=concept,no idx,link]{tag} types \conceptname[type=tag,idx post=components of]{life,period}.}\label{tab:life-period} %^^A \chronosdocidx[type=tag,font=\ConceptFont,idx post={components}]{life,period}% % \chronosdocidx[type=tag,idx pre=life,idx font pre=\ConceptFont,font=\ConceptFont]{chronos connector,main connector,text tag connector,connectors,line,text tag,connection}%^^A % \chronosdocidx[type=tag,idx pre=period,idx font pre=\ConceptFont,font=\ConceptFont]{chronos connector,main connector,text tag connector,connectors,line,text tag,connection}%^^A % \begin{tabularx}{\textwidth+\tewadjust}{l>{\ttfamily}lX>{\ttfamily}l} % \toprule % \sffamily \Conceptname[type=concept,no idx]{element} & \sffamily Name & \sffamily Description & \TikZ{} Type \\\midrule % \fycross{} & \keyname[type=coord,no link,idx post=as component of \string\textconcept{life} and \string\textconcept{period}]{\meta{name}} & Point on \conceptname[no idx]{timeline} midway between \meta{birth} and \meta{death} (\conceptname[no idx]{life}) or \meta{start} and \meta{end} (\conceptname[no idx]{period}). & coordinate \\ % \conceptname[idx post=as component of \string\textconcept{life}]{line}\chronosdocidx[type=element,idx post=as component of \string\textconcept{period},font=\ConceptFont]{line} & \fycross{} & Line or rectangle on or near \conceptname[no idx]{timeline} or \conceptname[idx post=as location of \string\textconcept{line}]{timeline border} from \meta{birth} to \meta{death} (\conceptname[no idx]{life}) or \meta{start} to \meta{end} (\conceptname[no idx]{period}). & \cs{path} \\ % \conceptname[idx post=as component of \string\textconcept{life}]{chronos connector}\chronosdocidx[type=element,idx post=as component of \string\textconcept{period},font=\ConceptFont]{chronos connector} & \keyname[type=node,no link,idx post=as component of \string\textconcept{life} and \string\textconcept{period}]{chronos connector \meta{name}} & Connection point midway along \conceptname[no idx]{line}. & node \\ % \conceptname[idx post=as component of \string\textconcept{life}]{text tag}\chronosdocidx[type=element,idx post=as component of \string\textconcept{period},font=\ConceptFont]{text tag} & \keyname[type=node,no link,no link,idx post=as component of \string\textconcept{life} and \string\textconcept{period}]{tag \meta{name}} & Main box representing \elementlabelname{}. By default, contains dates above capitalised \meta{name} (\conceptname[no idx]{life}) or capitalised \meta{name} above dates (\conceptname[no idx]{period}). & node \\ % \conceptname[idx post=as component of \string\textconcept{life}]{main connector}\chronosdocidx[type=element,idx post=as component of \string\textconcept{period},font=\ConceptFont]{main connector} & \keyname[type=node,no link,idx post=as component of \string\textconcept{life} and \string\textconcept{period}]{main connector \meta{name}} & Connection point at \TikZ{} anchor of \conceptname[no idx]{text tag}. & node \\ % \conceptname[idx as=connection,idx post=as component of \string\textconcept{life}]{connection}\chronosdocidx[type=element,idx post=as component of \string\textconcept{period},font=\ConceptFont]{connection} & \fycross{} & Line between the \conceptname[no idx]{chronos connector,main connector}. & \cs{draw} \\ % \conceptname[idx as=text tag connector,idx post=as component of \string\textconcept{life}]{connectors}\chronosdocidx[type=element,idx post=as component of \string\textconcept{period},font=\ConceptFont]{text tag connector} & \keyname[type=node,no link,idx post=as component of \string\textconcept{life} and \string\textconcept{period}]{connector \meta{name}\textrm{\textit{n}}} & Secondary connection point(s) at \TikZ{} anchor(s) of \conceptname[no idx]{text tag}, named in order with $n=1,2,\ldots$. & node \\ \bottomrule % \end{tabularx} % \end{adjustwidth} % \end{table} % % For example, % \begin{chronoscode} % \chronoslife{% % name=leslie lamport, % birth={1941-02-07}, % at=leslie lamport |- u1.north, % connectors=east, % tag anchor=west, % xshift=10pt, % } % \end{chronoscode} % This will create a text node (\conceptname[no idx,link]{text tag}) named \keyname[type=node,no link,symbol=eg]{tag leslie lamport} with two \conceptname[no idx,link,link to=connector]{connectors}, \texttt{10pt} to the right of coordinate \verb+(leslie lamport |- u1.north)+, using the settings for \conceptname[type=tag,no idx,link]{life}. % The main \conceptname[no idx,link]{connector}, named \keyname[type=node,no link,,symbol=eg]{main connector leslie lamport} or \keyname[type=node,no link,symbol=eg]{connector leslie lamport0}, will be at the \TikZ{} anchor \texttt{west}. % This will be used as the \TikZ{} \texttt{anchor} when placing the node and used to connect it to the \conceptname[no idx]{timeline}. % A second \conceptname[no idx]{connector}, named \keyname[type=node,no link,symbol=eg]{connector leslie lamport1} will be created at the \texttt{east}, which may be used to connect the \conceptname[no idx]{text tag} to other \elementslabelname{}. % % A \conceptname[no idx,link]{chronos connector}, named \keyname[type=node,no link,symbol=eg]{chronos connector leslie lamport} will be created on the \conceptname[no idx]{timeline} at the midpoint between \texttt{1941-02-07} and today's date. % A \conceptname[no idx,link]{line} will also be marked on the \conceptname[no idx,link]{timeline border}, on the \conceptname[idx post=as location of \string\textconcept{line}]{timeline} or near the \conceptname[no idx]{timeline}, between these dates. % % Note that the coordinate \keyname[type=coord,no link,symbol=eg]{leslie lamport} need not (and generally should not) exist when this command is given. of coordinates % A coordinate of this name will be created on the \conceptname[idx post=as location of \string\textkey{leslie lamport}\string\idxeg]{timeline} midway between the birth and death dates (or, in this case, between the birth date and today's date) prior to creation of the \conceptname[no idx]{text tag}. % However, \texttt{u1} must exist. % In this case, it refers to a node created using the \keyname[idx post=u1\string\idxeg,idx font post=\KeyFont]{levels}\chronosdocidx[type=key,idx post=level 1\string\idxeg,idx font post=\KeyFont]{levels} option. % \keyname[type=node,no link,symbol=eg]{u1} is also known as \keyname[type=node,no link,symbol=eg]{level 1} and refers the the first level above the \conceptname[no idx]{timeline}. % Lamport will be a bit higher because the \conceptname[no idx,link]{text tag}'s \texttt{west} anchor will be aligned with the \texttt{north} of node \texttt{level 1}. % % Since the \conceptname[idx post=shifted right\string\idxeg]{text tag} is shifted right, the \conceptname[idx post=use of \string\texttt{\textbar-}]{connection} will be drawn using \verb+|-+\chronosdocidx[idx as=\textbar-]{\string\textbar -} rather than \verb|--|\chronosdocidx{\string\verb*\verbatimchar--\verbatimchar}. % If more complex paths are required, \texttt{connect=false} may be used and the \conceptname[no idx,link]{text tag} connected to the \conceptname[idx post={connections, \string\textrm{complex}},idx font post=\ConceptFont]{timeline} manually. % A \conceptname{chronos connector}, \keyname[type=node,no link,symbol=eg,no idx]{chronos connector leslie lamport}, would then be created on the \conceptname[idx post=connectors,idx font post=\ConceptFont]{timeline}, as would the \conceptname[idx as=connector,link,link to=connector,no idx]{connectors} on the \conceptname[no idx,link]{text tag}, but the \conceptname[no idx,link]{connection} itself would be omitted. % % In addition, a colour named \keyname[type=colour,no link,idx as=colour leslie lamport\string\idxeg]{colour leslie lamport} or \keyname[type=colour,no link,idx as=color leslie lamport\string\idxeg]{color leslie lamport} will be created. % This is typically used in the \styleslabelname{} responsible for the appearance of the \conceptname[idx as={text tag,line,connection,text tag connector,chronos connector},idx post=use of \string\texttt{colour leslie lamport} in\string\idxeg]{text tag,line,connection,connectors} and may be referenced and reused later. % If \keyname[type=boolkey,conj=or,idx post=Leslie Lamport\string\idxeg]{simple colour names,simple color names} are used, it may also be referenced as \keyname[type=colour,no link,idx as=leslie lamport\string\idxeg]{leslie lamport}. % % \DescribeMacro{\chronosevent}\marg{key-value list} \fortags*{event}\AfterLastParam %^^A {} % Create an element of type \conceptname[type=tag,idx post=create \string\textconcept{element} of \string\textconcept{tag} type]{event}. % This is intended for events spanning no more than a day. % The \meta{key-value list} should specify values for \pkg{chronos} \keyslabelname{} and may include arbitrary \TikZ{} \keyslabelname{}. % At a minimum, \keyname[link prefix=event/,idx as=event/name]{name} and \keyname[link prefix=event/,type=datekey,idx as=event/date]{date} should be specified. % % \Cref{tab:tag-options} summarises the \pkg{chronos} \keyslabelname{} supported by \elementslabelname{} of type \conceptname[type=tag,idx post=availability of keys]{event}, with detailed usage information provided in \cref{subsec:add-elements-lconfig,subsec:add-elements-gconfig}. % % Creating the \elementlabelname{} involves constructing, naming and connecting several components. % These are described in \cref{tab:dig} for a typical case, but note that additional \conceptname[idx as=text tag connectors]{connectors} require \keyname[link prefix=event/,idx as=event/connectors]{connectors} to be set, the \conceptname[idx pre=event,idx font pre=\ConceptFont,idx as={connection\string\textnormal{conditions for drawing}}]{connection} is drawn only if \keyname[link prefix=event/,type=boolkey,idx as=event/connect]{connect} is \texttt{true} and some components may be rendered invisibly. % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{Components of an \conceptname[type=concept,idx post=components of \string\textconcept{event}]{element} of \conceptname[type=concept,no idx,link]{tag} type \conceptname[type=tag,idx post=components of]{event}.}\label{tab:dig} %^^A \chronosdocidx[type=tag,font=\ConceptFont,idx post={components}]{event} % \chronosdocidx[type=tag,idx pre=event,idx font pre=\ConceptFont,font=\ConceptFont]{chronos connector,main connector,text tag connector,connectors,line,text tag,connection}%^^A % \begin{tabularx}{\textwidth+\tewadjust}{l>{\ttfamily}lX>{\ttfamily}l} % \toprule % \sffamily \Conceptname[type=concept,no idx]{element} & \sffamily Name & \sffamily Description & \TikZ{} Type \\\midrule % \fycross{} & \meta{name} & Point on \conceptname[no idx]{timeline} at \meta{date}. & coordinate \\ % \conceptname[idx post=as component of \string\textsf{event}]{line} & \fycross{} & Line from \conceptname[no idx]{timeline} to the edge of \conceptname[no idx]{timeline border} at \meta{date}. & \cs{path} \\ % \conceptname[idx post=as component of \string\textsf{event}]{chronos connector} & \keyname[type=node,no link,idx post=as component of \string\textconcept{event}]{chronos connector \meta{name}} & Connection point at end of \conceptname[no idx]{line}. & node \\ % \conceptname[idx post=as component of \string\textsf{event}]{text tag} & \keyname[type=node,no link,idx post=as component of \string\textconcept{event}]{tag \meta{name}} & Main box representing \elementlabelname{}. By default, contains the date above the capitalised \meta{name}. & node \\ % \conceptname[idx post=as component of \string\textsf{event}]{main connector} & \keyname[type=node,no link,idx post=as component of \string\textconcept{event}]{main connector \meta{name}} & Connection point at \TikZ{} anchor of \conceptname[no idx]{text tag}. & node \\ % \conceptname[idx post=as component of \string\textsf{event}]{connection} & \fycross{} & Line between the \conceptname[no idx]{chronos connector,main connector}. & \cs{draw} \\ % \conceptname[idx as=text tag connector,idx post=as component of \string\textsf{event}]{connectors} & \keyname[type=node,no link,idx post=as component of \string\textconcept{event}]{connector \meta{name}\textrm{\textit{n}}} & Secondary connection point(s) at \TikZ{} anchor(s) of \conceptname[no idx]{text tag}, named in order with $n=1,2,\ldots$. & node \\ \bottomrule % \end{tabularx} % \end{adjustwidth} % \end{table} % % For example, % \begin{chronoscode} % \chronosevent {% % name=\emph{Common Sense}, % as is, % yshift=5pt, % date=1776, % text=WildStrawberry,% will affect text for the element itself but not drawing, filling or the assigned colour % place below,% does nothing because the positive yshift pushes the element above the timeline % }% % \end{chronoscode} % Note the use of \keyname[link prefix=event/,type=boolkey,idx as=event/as is,link to=as is]{as is} to prevent errors trying to capitalise \cs{emph}. % \keyname[link prefix=event/,type=boolkey,idx as=event/place below]{place below} has no effect here: the item still ends up above the \conceptname[no idx]{timeline} due to \texttt{yshift=5pt}. % Note the use of only a year in \keyname[link prefix=event/,type=datekey,idx as=event/date]{date}. % If you only specify years, you probably want to configure your \conceptname[no idx]{timeline} to avoid printing full dates or you will end up with everything happening on January 1\textsuperscript{st}. % See \cref{subsubsec:dyddiad-output}. % % \DescribeMacro{\chronosperiod}\marg{key-value list} \fortags*{period}\AfterLastParam %^^A {} % Create an element of type \conceptname[type=tag,idx post=create \string\textconcept{element} of \string\textconcept{tag} type]{period}. % This is intended for extended events spanning more than one day. % The \meta{key-value list} should specify values for \pkg{chronos} \keyslabelname{} and may include arbitrary \TikZ{} \keyslabelname{}. % At a minimum, \keyname[link prefix=period/,idx as=period/name,idx post=as mandatory for ongoing]{name} and \keyname[link prefix=period/,type=datekey,idx as=period/start,idx post=as mandatory for ongoing]{start} must be specified for an ongoing \conceptname[type=tag,idx post=mandatory keys for ongoing]{period}. % If the extended event has ended, both \keyname[link prefix=period/,type=datekey,idx as={period/start,period/end},idx post=as mandatory for completed]{start,end} or \keyname[link prefix=period/,type=datekey,idx as=period/dates,idx post=as mandatory for completed]{dates} should be given. % If no end date is specified, \pkg{chronos} assumes the \conceptname[type=tag,idx post=mandatory keys for completed]{period} is ongoing and uses the current date when placing the \elementlabelname{} on the \conceptname[no idx]{timeline}. % % \Cref{tab:tag-options} summarises the \pkg{chronos} \keyslabelname{} supported by \elementslabelname{} of type \conceptname[type=tag,idx post=availability of keys]{period}, with detailed usage information provided in \cref{subsec:add-elements-lconfig,subsec:add-elements-gconfig}. % % Creating the \elementlabelname{} involves constructing, naming and connecting several components. % These are described in \cref{tab:life-period} for a typical case, but note that additional \conceptname[idx as=text tag connector,idx pre=period,idx font pre=\ConceptFont]{connectors} require \keyname[link prefix=period/,idx as=period/connectors]{connectors} to be set, the \conceptname{connection} is drawn only if \keyname[link prefix=period/,type=boolkey,idx as=period/connect]{connect} is \texttt{true} and some components may be rendered invisibly. % % For example, % \begin{chronoscode} % \chronosperiod {% % dates={476-01-01}:{476-10-31}, % name=Fall of the\\Roman Empire, % colour=blue, % line+={draw=gray},% draw ugly grey border around line % } % \end{chronoscode} % This will construct an \elementlabelname{} analogous to the one created for Lamport. % Note that the names of nodes and coordinates will be based on \texttt{Fall of theRoman Empire} because \pkg{chronos} will remove the \verb|\\| and the capitalisation won't change. % \texttt{colour Fall of theRoman Empire} will be \texttt{blue} and the \conceptname[idx post=Fall of theRoman Empire\string\idxeg,idx font post=\KeyFont]{line} representing the \conceptname[type=tag,idx post=representation on \string\textconcept{timeline}]{period} on the \conceptname[no idx]{timeline} will be drawn in \texttt{gray} but potentially filled in \texttt{blue}. % This is because \keyname[link prefix=period/,idx as=period/line+]{line+} adds to any existing \stylelabelname{} rather than replacing it. % %^^A END subsubsec:macros-timeline-connectable % % \subsubsection{Adding Other Connectable Elements}\label{subsubsec:macros-other-connectable} %^^A BEGIN subsubsec:macros-other-connectable % % Of the remaining \elementslabelname{}, only those of type \conceptname[type=tag,link,idx post=as \string\textconcept{connectable}]{theory} are connectable. % While they cannot be connected to the \conceptname[idx post={additional \string\textconcept{elements}, \string\textconcept{connectable}}]{timeline}\footnote{At least, \pkg{chronos} won't connect them for you.}, \pkg{chronos} can create \conceptname[idx as=text tag connector,idx post=creation for \string\textconcept{theories}]{connectors} for them to enable easy \conceptname[idx as=connection,idx post=connectors \string\textrm{as facilitating} connections \string\textrm{to} theories,idx font post=\ConceptFont]{connections} to other \elementslabelname{}. % % \DescribeMacro{\chronostheory}\marg{key-value list} \fortags*{theory}\AfterLastParam %^^A {} % Create an element of type \conceptname[type=tag,idx post=create \string\textconcept{element} of \string\textconcept{tag} type]{theory}. % The \meta{key-value list} should specify values for \pkg{chronos} \keyslabelname{} and may include arbitrary \TikZ{} \keyslabelname{}. % At a minimum, \keyname[link pre=theory/,idx as=theory/name]{name} must be specified, but \keyname[link pre=theory/,idx as=theory/at]{at} is required for placement. % If left unspecified, \pkg{chronos} will place the \conceptname[type=tag,idx post=default placement]{theory} at \keyname[type=coord,idx post=default placement of \string\textconcept{theory}]{chronos origin} and issue a warning. % % \Cref{tab:tag-options} summarises the \pkg{chronos} \keyslabelname{} supported by \elementslabelname{} of type \conceptname[type=tag,idx post=availability of keys]{theory}, with detailed usage information provided in \cref{subsec:add-elements-lconfig,subsec:add-elements-gconfig}. % % Creating the \elementlabelname{} involves constructing and naming components of up to two kinds. % These are described in \cref{tab:theory} for a typical case, but note that a \conceptname[idx post=required keys for \string\textconcept{theory}]{connector} requires \keyname[link pre=theory/,idx as=theory/tag anchor]{tag anchor} or \keyname[link pre=theory/,idx as=theory/connectors]{connectors} to be set. % \Conceptname[idx as=text tag connector,idx post=potential invisibility]{connectors} may be rendered invisibly. % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{Components of an \conceptname[type=concept,idx post=components of \string\textconcept{theory}]{element} of \conceptname[type=concept,no idx,link]{tag} type \conceptname[type=tag,idx post=components of]{theory}.}\label{tab:theory} %^^A \chronosdocidx[type=tag,font=\ConceptFont,idx post={components}]{theory} % \begin{tabularx}{\textwidth+\tewadjust}{l>{\ttfamily}lX>{\ttfamily}l} % \toprule % \sffamily \Conceptname[type=concept,no idx]{element} & \sffamily Name & \sffamily Description & \TikZ{} Type \\\midrule % \fycross{} & \meta{name} & Alias for \conceptname[idx post=as component of \string\textconcept{theory}]{text tag}. & node \\ % \conceptname[type=node,no link,idx post=as component of \string\textconcept{theory}]{text tag} & \keyname[type=node,no link,idx post=as component of \string\textconcept{theory}]{tag \meta{name}} & Main box representing \elementlabelname{}. By default, contains the capitalised \meta{name}. & node \\ % \conceptname[type=node,no link,idx post=as component of \string\textconcept{theory}]{main connector} & \keyname[type=node,no link,idx post=as component of \string\textconcept{theory}]{main connector \meta{name}} & Connection point at \TikZ{} anchor of \conceptname[no idx]{text tag}. & node \\ % \conceptname[idx as=text tag connector,type=node,no link,idx post=as component of \string\textconcept{theory}]{connectors} & \keyname[type=node,no link,idx post=as component of \string\textconcept{theory}]{connector \meta{name}\textrm{\textit{n}}} & Secondary connection point(s) at \TikZ{} anchor(s) of \conceptname[no idx]{text tag}, named in order with $n=1,2,\ldots$. & node \\ \bottomrule % \end{tabularx} % \end{adjustwidth} % \end{table} % %^^A END subsubsec:macros-other-connectable % %^^A END subsec:macros-connected-elements % % \subsection{Adding Non-Connectable Elements}\label{subsec:macros-non-connectable-elements} %^^A BEGIN subsec:macros-non-connectable-elements % % The remaining \elementslabelname{} are \conceptname[idx post={additional \string\textconcept{elements}, \string\textconcept{non-connectable}},idx as=timeline]{non-connectable}. % % \DescribeMacro{\chronostheorycircle}\marg{key-value list} \fortags*{theory circle}\AfterLastParam %^^A {} % Create a \conceptname[,idx post=create \string\textconcept{element} of type]{theory circle}. % The \meta{key-value list} should specify values for \pkg{chronos} \keyslabelname{} and may include arbitrary \TikZ{} \keyslabelname{}. % At a minimum, \keyname[link pre=theory circle/,idx as=theory circle/name,idx post=as mandatory]{name} must be specified, but \keyname[link pre=theory circle/,idx as=theory circle/at]{at} is required for placement. %^^A If left unspecified, \pkg{chronos} will place the \conceptname[type=tag]{theory circle} at \texttt{chronos origin} and issue a warning. % % \Cref{tab:tag-options} summarises the \pkg{chronos} \keyslabelname{} supported by \elementslabelname{} of type \conceptname[type=tag,idx post=availability of keys]{theory circle}, with detailed usage information provided in \cref{subsec:add-elements-lconfig,subsec:add-elements-gconfig}. % % Creating the \elementlabelname{} involves constructing and naming components of several kinds. % Depending on the \stylelabelname{}, the \elementlabelname{} is intended to consist of a ring with text placed on the upper and lower semicircles and labels above and below. % A symbol or picture can then be placed at the centre. % The components are described in \cref{tab:cylch-theori} for a typical case, but note that these are \stylelabelname{}-dependant. % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{Components of an \conceptname[type=concept,idx post=components of \string\textsf{theory circle}]{element} of \conceptname[type=concept,link,no idx]{tag} type \conceptname[type=tag,idx post=components of]{theory circle}.}\label{tab:cylch-theori} %^^A \chronosdocidx[type=tag,font=\ConceptFont,idx post={components}]{theory circle} % \begin{tabularx}{\textwidth+\tewadjust}{l>{\ttfamily}lX>{\ttfamily}l} % \toprule % \sffamily \Conceptname[type=concept,no idx]{element} & \sffamily Name & \sffamily Description & \TikZ{} Type \\\midrule % \fycross{} & \keyname[type=node,no link,idx post=as component of \string\textconcept{theory circle}]{\meta{name}} & A (rectangular!) box containing all other components. & node \\ % \fycross{} & \keyname[type=node,no link,idx post=as component of \string\textconcept{theory circle}]{label above \meta{name}} & Label above the ring. & nodes \\ % \fycross{} & \keyname[type=node,no link,idx post=as component of \string\textconcept{theory circle}]{label below \meta{name}} & Label below the ring. & \\ % \fycross{} & \keyname[type=coord,no link,idx post=as component of \string\textconcept{theory circle}]{\meta{name}1} & Centre of the ring. & coordinate \\ % \bottomrule % \end{tabularx} % \end{adjustwidth} % \end{table} % In practice, this \elementlabelname{} could be used in other ways since it depends primarily on re-definable \styleslabelname{}. % However, in that case, there's no reason to avoid --- and every reason to prefer --- a new name. %^^A The \styleslabelname{} should receive four \meta{text} components, two for the upper and lower semicircles, and two for the upper and lower labels. % % For example, % \begin{chronoscode} % \chronostheorycircle{ % name=gutenberg revolution, % at=chronos end |- printing press.center, % sizes=15pt:9pt, % circle texts=Gutenberg:Revolution, % labels=15\textsuperscript{th}c.\thinspace \celabel:21\textsuperscript{st}c.\thinspace \celabel, % } % \end{chronoscode} % % % \DescribeMacro{\chronosinfo}\marg{key-value list} \fortags*{info}\AfterLastParam %^^A {} % Create an element of type \conceptname[type=tag,idx post=create \string\textconcept{element} of \string\textconcept{tag} type]{info} i.e.~an information box with a distinct caption. % The \meta{key-value list} should specify values for \pkg{chronos} \keyslabelname{} and may include arbitrary \TikZ{} \keyslabelname{}. % At a minimum, \keyname[link pre=info/,idx as={info/name,info/at},idx post=as required]{name,at} must be specified. % % \Cref{tab:tag-options} summarises the \pkg{chronos} \keyslabelname{} supported by \elementslabelname{} of type \conceptname[type=tag,idx post=availability of keys]{info}, with detailed usage information provided in \cref{subsec:add-elements-lconfig,subsec:add-elements-gconfig}. % % Creating the \elementlabelname{} involves constructing and naming two components. % These are described in \cref{tab:info} for a typical case. % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{Components of an \conceptname[type=concept,idx post=components of \string\textsf{info}]{element} of \conceptname[type=concept,link,no idx]{tag} type \conceptname[type=tag,idx post=components of]{info}.}\label{tab:info} %^^A \chronosdocidx[type=tag,font=\ConceptFont,idx post={components}]{info} % \begin{tabularx}{\textwidth+\tewadjust}{l>{\ttfamily}lX>{\ttfamily}l} % \toprule % \sffamily \Conceptname[type=concept,no idx]{element} & \sffamily Name & \sffamily Description & \TikZ{} Type \\\midrule % \fycross{} & \meta{name} & Alias for \conceptname[idx post=as component of \string\textconcept{info}]{text tag}. & node \\ % \conceptname[type=node,no link,idx post=as component of \string\textconcept{info}]{text tag} & \keyname[type=node,no link,idx post=as component of \string\textconcept{info}]{tag \meta{name}} & Main box representing \elementlabelname{}. Empty by default. & node \\ % \conceptname[type=node,no link,idx post=as component of \string\textconcept{info}]{caption} & \keyname[type=node,no link,idx post=as component of \string\textconcept{info}]{caption \meta{name}} & By default, contains the capitalised \meta{name}. & node \\ % \bottomrule % \end{tabularx} % \end{adjustwidth} % \end{table} % % For example, % \begin{chronoscode}[caption,text,content] % \chronosinfo{% % name=syllogism, % at=chronos year 200 |- u4, % text content={All men are\\[-.25em]\hspace*{1.5em}mortal.\\Socrates is a\\[-.25em]\hspace*{1.5em}man.\\$\therefore$ Socrates is\\[-.25em]\hspace*{1.5em}mortal.}, % anchor=north, % caption=A Syllogism, % } % \end{chronoscode} % Note the use of \keyname[link pre=info/,idx as=info/caption]{caption} to override the default reuse of \keyname[link pre=info/,idx as=info/name]{name}. % This allows the box to be captioned ‘A Syllogism’, while allowing references simply to \texttt{syllogism}. % % \DescribeMacro{\chronosmaintitle}\marg{key-value list} \fortags*{main}\AfterLastParam %^^A {} % Create the main title. % The \meta{key-value list} should specify values for \pkg{chronos} \keyslabelname{} and may include arbitrary \TikZ{} \keyslabelname{}. % At a minimum, \keyname[idx post=as required for \string\cs{chronosmaintitle}]{name,at} must be specified. % % \Cref{tab:tag-options} summarises the \pkg{chronos} \keyslabelname{} supported by \elementslabelname{} of type \conceptname[type=tag,idx post=availability of keys]{main}, with detailed usage information provided in \cref{subsec:add-elements-lconfig,subsec:add-elements-gconfig}. % % The result is simply a \TikZ{} node, as described in \cref{tab:prifdeitl}. % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{Components of an \conceptname[type=concept,idx post=components of \string\textsf{main}]{element} of \conceptname[type=concept,no idx,link]{tag} type \conceptname[type=tag,idx post=components of \string\textconcept{main title}]{main}.}\label{tab:prifdeitl} %^^A \chronosdocidx[type=tag,font=\ConceptFont,idx post={components}]{main} % \begin{tabularx}{\textwidth+\tewadjust}{l>{\ttfamily}lX>{\ttfamily}l} % \toprule % \sffamily \Conceptname[type=concept,no idx]{element} & \sffamily Name & \sffamily Description & \TikZ{} Type \\\midrule % \conceptname[type=node,no link,idx post=as component of \string\textconcept{main}]{text tag} & \keyname[type=node,no link,idx post=as component of \string\textconcept{main/main title}]{\meta{name}} & By default, contains the capitalised \meta{name}. & node \\ % \bottomrule % \end{tabularx} % \end{adjustwidth} % \end{table} % % \DescribeMacro{\chronoscopyright}\marg{key-value list} \fortags*{copyleft,copyright}\AfterLastParam %^^A {} % Create a \conceptname[type=tag,no idx]{copyleft} or \conceptname[type=tag,idx post=create \string\textconcept{element} of \string\textconcept{tag} type]{copyright} notice. % The \meta{key-value list} should specify values for \pkg{chronos} \keyslabelname{} and may include arbitrary \TikZ{} \keyslabelname{}. % At a minimum, \keyname[link pre=copyright/,idx as=copyright/at]{at} should be specified to avoid a warning. % % % \Cref{tab:tag-options} summarises the \pkg{chronos} \keyslabelname{} supported by \elementslabelname{} of type \conceptname[type=tag,idx post=availability of keys]{copyleft,copyright}, with detailed usage information provided in \cref{subsec:add-elements-glconfig,subsec:add-elements-gconfig}. % % The result is simply a \TikZ{} node, as described in \cref{tab:hawlfraint}. % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{Components of an \conceptname[type=concept,idx post=components of \string\textsf{copyleft} and \string\textsf{copyright}]{element} of \conceptname[type=concept,no idx,link]{tag} type \conceptname[type=tag,idx post={components of}]{copyleft,copyright}.}\label{tab:hawlfraint} %^^A \chronosdocidx[type=tag,font=\ConceptFont,idx post=components]{copyleft,copyright} % \begin{tabularx}{\textwidth+\tewadjust}{l>{\ttfamily}lX>{\ttfamily}l} % \toprule % \sffamily \Conceptname[type=concept,no idx]{element} & \sffamily Name & \sffamily Description & \TikZ{} Type \\\midrule % \conceptname[type=node,no link,idx post=as component of \string\textconcept{copyleft}/\string\textconcept{copyright}]{text tag} & \keyname[type=node,no link,idx post=as component of \string\textconcept{copyleft} and \string\textconcept{copyright}]{\meta{name}} & By default, contains a standard copyright or copyleft notice utilising whatever details are provided or default values and dummy texts. & node \\ % \bottomrule % \end{tabularx} % \end{adjustwidth} % \end{table} % % \DescribeMacro{\chronoscopyleft}\marg{key-value list} \fortags*{copyleft,copyright}\AfterLastParam %^^A {} % Create a \conceptname[type=tag,idx post=create \string\textconcept{element} of \string\textconcept{tag} type]{copyleft} notice. % Sets \keyname[type=boolkey,link prefix=copyleft/,idx as=copyleft/copyleft]{copyleft} \texttt{true} before passing \marg{key-value list} to \keyname[type=macro,idx post=invoked by \string\cs{chronoscopyleft}]{\cs{chronoscopyright}}. % %^^A END subsec:macros-non-connectable-elements % % % \subsection{Additional Elements: Local Configuration}\label{subsec:add-elements-lconfig}\chronosdocidx[type=tag,font=\ConceptFont,idx post={configuration, local}]{life,event,period,theory,info,theory circle,main,copyleft,copyright}\vspace{-\baselineskip} %^^A BEGIN subsec:add-elements-lconfig % % These \keyslabelname{} are designed for use when creating specific \elementslabelname{}. % That is, they should be used in the argument of a \pkg{chronos} command such as \keyname[type=macro,conj=or,idx post={configuration, local}]{\cs{chronoslife},\cs{chronosevent},\cs{chronosperiod},\cs{chronostheory},\cs{chronosinfo},\cs{chronostheorycircle},\cs{chronosmaintitle},\cs{chronoscopyleft},\cs{chronoscopyright}}. % If used globally (e.g.~in \keyname[type=macro,idx post=setting normally local keys in]{\cs{chronosset}} or the \conceptname[type=concept,idx post=setting normally local keys in]{\meta{chronos preamble}}), they will determine defaults for all \elementslabelname{} (belonging to the relevant \conceptname[link,no idx,type=concept]{tag}). % Where this makes sense, the possibility is noted below; where it is not noted, global usage is unsupported. % % \DescribeKey{name}\val{text} \fortags[names=name,type=key]{life,event,period,theory,info,theory circle,main,copyleft,copyright}\AfterLastParam % The base name of the \conceptname[idx as=naming,font=\normalfont]{element}. % Except for \keyname[type=macro,idx post=name\string\textnormal{ optional for},idx font post=\KeyFont]{\cs{chronosmaintitle},\cs{chronoscopyleft},\cs{chronoscopyright}}, \textbf{this key is required}. % \Default[\conceptname[type=tag,idx post=default name for \string\textconcept{main title}]{main}]{main title} % \Default*{}\texttt{copyleft} \emph{and} \texttt{copyright} (\conceptname[type=tag,idx post=default name]{copyleft,copyright})\par % By default, \meta{text} is used multiple times. % % First, it is capitalised and used for (part of) the content created for the \conceptname[idx as={capitalisation of name},font=\normalfont]{element} added to the \conceptname[no idx]{timeline}. % \keyname[type=boolkey,no idx]{as is} prevents capitalisation. % In the case of \conceptname[type=tag,idx post=use of \string\textkey{name} in content of]{life,event,period}, it is used for the non-date part of the content. % In the case of \conceptname[type=tag,idx post=use of \string\textkey{name} in content of]{theory,main}, it is used for the whole content of the title. % In the case of \conceptname[type=tag,idx post=use of \string\textkey{name} in content of]{info}, it is used to create the caption. % In the case of \conceptname[type=tag,idx post=use of \string\textkey{name} in content of]{copyleft,copyright}, it is used as the author's name if \keyname[link prefix=copyright/,idx as=copyright/author]{author} is unset. % It is not used to create content in the case of \conceptname[type=tag,idx post=non-use of \string\textkey{name} in]{theory circle}. % % Second, it is processed to create multiple names for different parts of the \conceptname[idx as=use by \string\textconcept{chronos},font=\normalfont]{element} e.g.~names for \conceptsname[conj={,},idx post=use of \string\textkey{name} in]{connectors,text tag} etc. % Processing attempts to remove some things which would be problematic when used as part of the names for coordinates and nodes, but markup can still cause problems. % In this case, use \keyname[idx post=problematic markup]{name content} or \keyname[idx post=problematic markup]{text content} for the marked-up version and give \meta{name} a suitably simplified version. % % \DescribeBoolkey{as is}\vals{true,false} \fortags[names=as is,type=boolkey]{life,event,period,theory}\AfterLastParam % Whether to skip capitalisation of \keyname[idx post=whether to capitalise]{name} if using it in the textual content of the \conceptname[type=concept,idx post={capitalisation, preventing}]{element}. % If true, the \keyname[idx post=prevent capitalisation]{name} will \emph{not} be capitalised; if false, it will be. % Capitalisation is never used when setting the names of coordinates, nodes etc. % \Default{false} % % \DescribeKey{at}\val{coordinate} \fortags[names=at,type=key]{life,event,period,theory,info,theory circle,main,copyleft,copyright}\AfterLastParam % Where to place the \conceptname[idx as=placement,font=\normalfont]{element}. % This key is mandatory for \conceptname[type=tag,idx post=at \string\textrm{mandatory},idx font post=\KeyFont]{theory circle,info,main,copyleft,copyright}. % % For \conceptname[type=tag,idx post=at \string\textrm{optional},idx font post=\KeyFont]{life,event,period,theory}, the key is optional. % By default, the text tag will be placed at \meta{name}, which is a point on the \conceptname[no idx]{timeline} calculated according to date, offset vertically by either \keyname[no link]{yshift} or \keyname[type=dimkey]{text tag yshift}. % Since \conceptname[type=tag,idx post=text tags \string\textrm{dateless},idx font post=\ConceptFont]{theory} text tags do not have dates, they are placed at the \keyname[type=coord,no link]{(chronos origin)} and a warning is issued. % \Example{at=\meta{name} \textbar{}- level -2} % This will align \meta{name} horizontally with its placement point on the \conceptname[no idx]{timeline} and vertically with \keyname[type=node,no link,symbol=eg]{level -2}, assuming at least two levels exist below the \conceptname[no idx]{timeline}. % See \cref{subsec:levels-coords}. % % \DescribeKey{tag anchor}\val{node anchor} \fortags[names=tag anchor,type=key]{life,event,period,theory,info,main,copyleft,copyright}\AfterLastParam % The \pgf/\TikZ{} anchor to use for the \conceptname[idx as=main connector,idx post=anchor,idx font post=\KeyFont]{element}'s \conceptname[no idx]{main connector}. % This is the point \pkg{chronos} uses to connect \conceptname[type=tag,idx post=point connected to \string\textsf{timeline}]{life,event,period} text tags to the \conceptname[no idx]{timeline}. % By default, this anchor is also used when placing the text tag. % That is, \keyname[idx post=as \string\textkey{anchor}]{tag anchor} is used as the \TikZ{} \keyname[no link,idx post=used as \string\TikZ]{anchor}. % If you want different anchors to be used for the connection point and for placement, you can use both \keyslabelname. % \begin{chronoscode} % \chronoslife{% % name=friedrich gottlob koenig, % dates={1774-04-17}:{1833-01-17}, % at=friedrich gottlob koenig |- i1.north, % tag anchor=east, % anchor=north east, % xshift=-5pt, % } % \end{chronoscode} % Default[for \elementslabelname{} below the \conceptname[no idx]{timeline}]{north} % Default[for \elementslabelname{} above the \conceptname[no idx]{timeline}]{south} % These defaults may be overridden on a per-\conceptname[type=concept,link,no idx]{tag} basis by setting the \keylabelname{} globally. % For example, % \begin{chronoscode} % \begin{chronos}[% % life/tag anchor=50, % event/tag anchor=north east, % period/tag anchor=south, % ] % \end{chronos} % \end{chronoscode} % % \DescribeColkey{colour,color}\val{colour name} \fortags[names={colour,color},type=colkey]{life,event,period,theory,info}\AfterLastParam % The colour to assign to the \conceptname[type=concept,idx post=colour \string\textrm{to assign}]{element}. % The effect depends on the type of \conceptname[type=concept,no idx]{element} being created and other settings. % To modify the default colours, see \cref{subsec:lliwiau,subsec:add-elements-gconfig}. % % \DescribeBoolkey{connect}\vals{true,false} \fortags[names={connect},type=boolkey]{life,event,period}\AfterLastParam % Whether to connect the \conceptname[idx as=whether to connect to \string\textconcept{timeline},font=\normalfont]{element} to the \conceptname[no idx]{timeline}. % \Default{true} % % \DescribeKey{connectors,connectors+,connectors\textquotesingle}\val{list of node anchors} \fortags[names={connectors,connectors+,connectors\textquotesingle},type=key]{life,event,period,theory}\AfterLastParam % Connection points to create on the \conceptname[type=concept,idx post=connection points]{element}'s \conceptname[idx post=connection points]{text tag}. % Applies to \conceptname[type=tag,idx post={connectors\string\textrm{, creating additional}},idx font post=\ConceptFont]{life,event,period,theory}. % \texttt{connectors} and \texttt{connectors+} \emph{add} to the existing list (if any). % \texttt{connectors\textquotesingle} \emph{replaces} it. % \Default[empty] % \begin{chronoscode}[] % connectors={north,south,east,west}, % connectors'={north}, % connectors+={south}, % connectors={east}, % \end{chronoscode} % This code would result in connection points at the node's \texttt{north}, \texttt{south} and \texttt{east} anchors. % % Note that one connection point is always created if the \conceptname[idx as=main connector \string\textrm{always created}]{element} is of a kind which could be connected to the \conceptname[no idx]{timeline}. % % % \DescribeKey{default colour,default color} Use the \keyname[type=colkey,link pre=\meta{tag}/,idx as=\meta{tag}/default colour,idx post=applying to \string\textconcept{elements}]{default colour} assigned to \conceptname[idx as=default colour,idx post=setting]{elements} of this \conceptname[type=concept,idx post=use \string\textkey{default colour} assigned to \string\textconcept{elements} belonging to]{tag} type. \fortags[names={default colour,default color},type=key]{life,event,period,theory,info,main}\AfterLastParam % \emph{This key does something quite different if used in a global configuration context. % See \cref{subsec:add-elements-gconfig} and \cref{subsec:lliwiau} for details.} % For example, % \begin{chronoscode} % \begin{chronos} % [ % life/colour rotation=true, % life/default colour=gray, % ] % \chronoslife{% use colour from life's colours above colour list % name=chris, % dates={1038-01-10}:{1066:11-19}, % at=u2 -| chris, % } % \chronoslife{% use gray % name=sandy, % dates={1345-11-23}:{1378-12-24}, % at=u3 -| sandy, % default colour, % } % \chronoslife{% use blue % name=alex, % dates={1246-09-22}:{1295-02-07}, % at=u5 -| alex, % colour=blue, % } % \chronoslife{% use colour from life's colours below colour list % name=hilary, % dates={1156-06-12}:{1201-04-01}, % at=i4 -| hilary, % } % \end{chronos} % \end{chronoscode} % Note the lack of an argument when used locally. % % Note that there is no reason to use this \keylabelname{} unless you wish to override \conceptname[type=concept,link,no idx]{colour rotation} for a particular \elementlabelname{}. % It suffices not to specify a \keyname[type=colkey]{colour}. % % \DescribeBoolkey{place below}\vals{true,false} \fortags[names={place below},type=boolkey]{life,event,period,theory}\AfterLastParam % By default, \pkg{chronos} alternates putting \elementslabelname{} of a particular type above and below the \conceptname[no idx]{timeline}, but you may wish to put everything above or below, all \elementslabelname{} of particular type above or below. % Furthermore, you may wish to override the default for particular \elementslabelname. % Densely-packed \conceptname[idx as=timeline,idx post={densely packed, use of space in}]{timelines}, especially, can require considerable intervention in order to make best use of the space while arranging things in a clear and (hopefully) visually appealing way. % \begin{chronoscode}[place,below] % \chronosevent {% % name=red letter day, % date=1750, % place below=false, % } % \end{chronoscode} % \Default{true} % \Initial % % \DescribeKey{place above}A convenience \keylabelname{} equivalent to \lstinline|place below=false|. \fortags[names=place above,type=key]{life,event,period,theory}\AfterLastParam % Thus the previous code could be rewritten as % \begin{chronoscode}[place,above] % \chronosevent {% % name=red letter day, % date=1750, % place above, % } % \end{chronoscode} % % \DescribeDatekey{dates}\cvalsmarg{birth date,death date} \fortags[names={dates},type=datekey]{life}\AfterLastParam % \cvalsmarg{start date,end date} \fortags[names=dates,type=datekey]{period}\AfterLastParam % Dates of a \conceptname[type=tag,conj=or,link,idx post=dates,idx font post=\KeyFont]{life,period}, specified as explained in \cref{subsec:dyddiadau}. % The second date may be empty for a living person or ongoing occurrence. % This key offers a more compact syntax as an alternative to the keys \keyname[type=datekey,no idx]{birth,death} or \keyname[type=datekey,no idx]{start,end} explained below. % That is % \begin{chronoscode}[dates] % dates={1310-02-03}:{1350-06-07}, % \end{chronoscode} % is equivalent to % \begin{chronoscode}[birth,death] % birth={1310-02-03}, % death={1350-06-07}, % \end{chronoscode} % for \conceptname[type=tag,idx post={date specifications, equivalent}]{life} or % \begin{chronoscode}[end,start] % start={1310-02-03}, % end={1350-06-07}, % \end{chronoscode} % for \conceptname[type=tag,idx post={date specifications, equivalent}]{period}. % % By default, these dates are used for both placement on the \conceptname[no idx]{timeline} and the date content of the \conceptname[idx as=text ,idx post=date content in \string\textconcept{life}/\string\textconcept{period}]{element}'s \conceptname[link,link to=\meta{tag}/text tag,idx as=\meta{tag}/text tag,idx post=date content in \string\textconcept{life}/\string\textconcept{period}]{text tag}, but see \keyname[no idx,link]{dates content}. % % \DescribeDatekey{birth}\valmarg{birth date} \fortags[names={birth},type=datekey]{life}\AfterLastParam % The date of birth for a \conceptname[type=tag,link,no idx]{life}, specified as explained in \cref{subsec:dyddiadau}. % See \keyname[type=datekey,no idx,link]{dates} above. % % \DescribeDatekey{death}\valmarg{death date} \fortags[names={death},type=datekey]{life}\AfterLastParam % The date of death for a \conceptname[type=tag,link,no idx]{life}, specified as explained in \cref{subsec:dyddiadau}. % See \keyname[type=datekey,no idx]{dates} above. % % \DescribeDatekey{start}\valmarg{start date} \fortags[names={start},type=datekey]{period}\AfterLastParam % The start date of a \conceptname[type=tag,link,no idx]{period}, specified as explained in \cref{subsec:dyddiadau}. % See \keyname[type=datekey,no idx]{dates} above. % % \DescribeDatekey{end}\valmarg{end date} \fortags[names={end},type=datekey]{period}\AfterLastParam % The end date of a \conceptname[type=tag,link,no idx]{period}, specified as explained in \cref{subsec:dyddiadau}. % See \keyname[type=datekey,no idx]{dates} above. % % \DescribeDatekey{date}\valmarg{date} \fortags[names={date},type=datekey]{event}\AfterLastParam % The date of an \conceptname[type=tag,link,idx post=date,idx font post=\KeyFont]{event}, specified as explained in \cref{subsec:dyddiadau}. % By default, the date is used for both placement on the \conceptname[no idx]{timeline} and the date content of the \conceptname[idx as=text tag,idx post=date content in \string\textconcept{event}]{element}'s \conceptname[link,link to=\meta{tag}/text tag,idx as=\meta{tag}/text tag,idx post=date content in \string\textconcept{event}]{text tag}, but see \keyname[no idx]{dates content}. % % \DescribeKey{event year on line skip} Don't put this particular event's year on the \conceptname[no idx]{timeline}. \fortags[names=event year on line skip,type=key]{event}\AfterLastParam % This can be used if the line would otherwise become too crowded when using \keyname{event years on line}. % Cf.~\keyname[no idx]{special date}. % See \cref{subsubsec:timeline-marks-years}. % \Cref{fig:event-years-on-line} illustrates the effect of using this \keylabelname{}. % % \DescribeKey{special date}\valmarg{text} \fortags[names=special date,type=key]{event}\AfterLastParam % Use \meta{text} rather than the \keyname[type=datekey,no idx]{date} for a particular \conceptname[type=tag,link,no idx]{event} when using \keyname[no idx]{event years on line}. % Cf.~\keyname[no idx]{event year on line skip}. % See \cref{subsubsec:timeline-marks-years}. % \Cref{fig:event-years-on-line} illustrates the effect of using this \keylabelname{}. % % % \DescribeKey{dates content}\valmarg{text} \chronosdochypertargets{key}{life,event,period}{dates content}\fortags{life,event,period}\AfterLastParam % Override the use of specified dates when creating content for the \elementlabelname{}'s \conceptname[type=element,link,link to=\meta{tag}/text tag,no idx]{text tag}. % This is intended for ‘special’ cases e.g.~uncertain, approximate or non-standardly specified dates. % By default, the value is derived from \keyname[type=datekey,no idx]{dates} or \keyname[type=datekey,no idx]{date}. % \Example{dates content=\{c600--1450\bs,\cs{celabel}\}} % % \DescribeKey{name content}\valmarg{text} \fortags[names=name content,type=key]{life,event,period,theory,info,main}\AfterLastParam % Override the use of the \conceptname[type=concept,link,no idx]{element}'s \keyname[idx post=override for \string\textconcept{text tag} content]{name} when creating content for the \elementlabelname's \conceptname[type=element,link,no idx,link to=\meta{tag}/text tag]{text tag}. % This might be necessary if special markup is required. % For example, % \begin{chronoscode} % name content=\LaTeX3 Hummingbird, % \end{chronoscode} % It may also be desirable where longer content would render reuse of a \keyname[no idx]{name} unwieldy. % % \DescribeKey{text content}\valmarg{text} \fortags[names=text content,type=key]{life,event,period,theory,info}\AfterLastParam % Override the use of both \conceptname[type=concept,link,no idx]{element}'s \keyname[no idx]{name} and \keyname[type=datekey,no idx]{dates} when creating content for the \conceptname[type=concept,link,no idx]{element}'s \conceptname[type=element,link,link to=\meta{tag}/text tag,no idx]{text tag}. % \begin{chronoscode}[text,content] % name=block printing, % text content={Block printing, originally used to print pictures and text onto cloth, developed into a method of printing books on paper.}, % \end{chronoscode} % % \DescribeBoolkey{phantom}\vals{true,false} \fortags[names=phantom,type=boolkey]{life,event,period}\AfterLastParam % Create a ‘phantom’ \elementlabelname. % Phantoms have assigned colours, require \keysname[idx post=required for phantoms]{name} and potentially feature \conceptsname[link,idx post=phantoms]{line}, but they do not have \conceptsname[conj=or,idx post=absent in phantoms]{text tag,connection}. % Note that these \conceptsname[idx post=phantoms,idx as=additional]{components} are not invisible; \emph{they are not constructed at all}. % \Default{true} % \Initial{false} % \Example{\cs{chronosperiod}\marg{name=c17,dates=1600:1699,colour=cyan,phantom}} % This \keylabelname{} may be used globally to set a different \conceptname[link,no idx,type=concept]{tag}-specific default. % \begin{chronoscode} % \begin{chronos}[% % period/phantom,% make periods are phantoms by default % event/phantom=true,% make events are phantoms by default % life/phantom=false,% make lives non-phantoms by default (this matches the package default) % ] % \end{chronos} % \end{chronoscode} % For example, this \keylabelname{} may be used to colour stretches of time without visibly labelling them, in conjunction with non-phantom \conceptsname[conj=or,link,no idx]{life,event}\texseans{701743}. % \begin{chronoscode} % \begin{chronos}[% https://tex.stackexchange.com/a/701743/ % ... % period={% % phantom, % colours below={orange,cyan,green,green}, % }, % ... % ] % % these **must** be named, even though they invisible, detached phantoms % \chronosperiod{dates=2018:2019,name={n1}} % \chronosperiod{dates=2019:2022,name={n2}} % \chronosperiod{dates=2022:2023,name={n3}} % \chronosperiod{dates=2023:2024,name={n4}} % ... % \end{chronos} % \end{chronoscode} % % \DescribeKey{caption}\valmarg{text} \fortags[names=caption,type=key]{info}\AfterLastParam % The caption for an \conceptname[type=concept,link,no idx]{element} of type \conceptname[type=tag,link,idx post=setting caption]{info}. % % \DescribeKey{labels}\cvalsmarg{upper label,lower label} \fortags[names=labels,type=key]{theory circle}\AfterLastParam % Labels to be placed above and below a \conceptname[type=element,link,no idx]{theory circle}. % % \DescribeKey{circle texts}\cvalsmarg{upper text,lower text} \fortags[names={circle texts},type=key]{theory circle}\AfterLastParam % The text to place in the upper and lower parts of a \conceptname[link,no idx]{theory circle}. % By default, this uses \lstinline|text effects along path|, so the content must be consistent with the restrictions imposed by use of this \TikZ{} \texttt{decoration}. % % \DescribeDimkey{sizes}\cvals{outer circle dimension,inner circle dimension} \fortags[names={sizes,sizes+,sizes-,sizes\textquotesingle,sizes\textquotesingle +,sizes\textquotesingle -},type=dimkey]{theory circle}\AfterLastParam % The sizes of the inner and outer circles used to create a \conceptname[type=element,link,no idx]{theory circle}. % \Default{15pt:9pt} % The difference between the two dimensions gives the thickness of the ring around which text is placed; the size of the inner circle gives the dimension of the hole in which a symbol or similar may be placed. % This \keylabelname{} may be used globally to set defaults. % \begin{chronoscode} % \begin{chronos}[% % theory/circles/sizes'+=10pt:5pt, % ] % \end{chronos} % \end{chronoscode} % %^^A END subsec:add-elements-lconfig % % \subsection{Additional Elements: Local/Global Configuration}\label{subsec:add-elements-glconfig} % \chronosdocidx[type=tag,font=\ConceptFont,idx post={configuration,local/global}]{life,event,period,theory,info,theory circle,main,copyleft,copyright}\vspace{-\baselineskip} %^^A BEGIN subsec:add-elements-glconfig % % Although you will generally want to use the following keys in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}, they can also be used to influence the format of a particular \elementlabelname{}. % % \DescribeDateformat{\meta{tag}/date format}\valmarg{date format specification} \hypertarget{dateformat:event/date-format}{}\fortags{event}\AfterLastParam % Use \meta{date format specification} to format date. % \begin{chronoscode} % \chronosevent{% % ..., % date format={!a, !d !b},% show short day of week, day of month and short month % } % \end{chronos} % \end{chronoscode} % See \cref{subsec:dyddiadau} for details and defaults. % % \DescribeDateformat{\meta{tag}/date formats}\cvalsmarg{date format spec.,date format spec.,date format spec.} \hypertarget{dateformat:life/date-formats}{}\hypertarget{dateformat:period/date-formats}{}\fortags{life,period}\AfterLastParam % Use \meta{date format spec.}s to format date range. % \begin{chronoscode} % \chronosevent{% % ..., % date formats={!d}:{!d !B},% show day of month for start/birth date and day of month and month name for end/death date % } % \end{chronos} % \end{chronoscode} % See \cref{subsec:dyddiadau} for details and defaults. % % \DescribeKey{full dates,\meta{tag}/full dates}\hypertarget{key:life/full-dates}{}\hypertarget{key:period/full-dates}{}\hypertarget{key:event/full-dates}{}Show full dates. \fortags{life,event,period}\AfterLastParam % \begin{chronoscode} % \chronoslife{% % ..., % full dates, % } % \end{chronos} % \end{chronoscode} % See \cref{subsec:dyddiadau} for details and defaults. % % \DescribeKey{only years,\meta{tag}/only years}\hypertarget{key:life/only-years}{}\hypertarget{key:period/only-years}{}\hypertarget{key:event/only-years}{}Show only years. \fortags{life,event,period}\AfterLastParam % \begin{chronoscode} % \chronoslife{% % ..., % only years,% use only years in all dates % event/full dates,% override to use full dates for events % } % \end{chronos} % \end{chronoscode} % See \cref{subsec:dyddiadau} for details and defaults. % % \DescribeKey{show eras,\meta{tag}/show eras}\hypertarget{key:life/show-eras}{}\hypertarget{key:period/show-eras}{}\hypertarget{key:event/show-eras}{}Show eras. \fortags{life,event,period}\AfterLastParam % \begin{chronoscode}[show] % \chronoslife{% % ..., % show eras,% show eras in all text tags % } % \end{chronos} % \end{chronoscode} % See \cref{subsec:dyddiadau} for details and defaults. % % \DescribeKey{without eras,\meta{tag}/without eras}\hypertarget{key:life/without-eras}{}\hypertarget{key:period/without-eras}{}\hypertarget{key:event/without-eras}{}Omit eras. \fortags{life,event,period}\AfterLastParam % \begin{chronoscode}[without,show] % \chronoslife{% % ..., % without eras,% omit eras in all text tags % life/show eras,% override to show eras in life text tags % } % \end{chronos} % \end{chronoscode} % See \cref{subsec:dyddiadau} for details and defaults. % % \DescribeKey{only text,\meta{tag}/only text}\hypertarget{key:life/only-text}{}\hypertarget{key:period/only-text}{}\hypertarget{key:event/only-text}{}Omit all date information. \fortags{life,event,period}\AfterLastParam % \Default*{}disabled % \begin{chronoscode} % \chronoslife{% % ..., % only text,% omit all dates from all tags % } % \end{chronos} % \end{chronoscode} % % The following six sets of keys all work in the same way\footnote{%^^A % There is a seventh set, \keyname[target,no link]{\meta{tag}/tag,\meta{tag}/tag+,\meta{tag}/tag\textquotesingle}\chronosdochypertargets{key}{life,event,period,theory,info}{tag,tag+,tag\textquotesingle}, which may be of interest to advanced users. % These \keyslabelname{} are also potentially destructive. % Not only \keyname[no link]{\meta{tag}/tag\textquotesingle}, but also \keyname[no link]{\meta{tag}/tag} and even \keyname[no link]{\meta{tag}/tag+}, can overwrite default settings for such things as \conceptname[type=concept,link,no idx]{colour rotation}.}. % If used when creating a specific \elementlabelname{}, they affect that \elementlabelname{}. %^^A If set in the optional argument to \enviro{chronos} or \keyname[type=macro]{\cs{chronosset}} with no prefix, they set a default. %^^A This default is used if no \conceptname[type=concept]{tag}-specific setting is configured. % If set in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or \keyname[type=macro,no idx]{\cs{chronosset}} with a \conceptname[type=concept,no idx]{tag} prefix, they set the \conceptname[type=concept,idx post={prefix, influence on configuration}]{tag}-specific setting and will affect all \elementslabelname{} belonging to that \taglabelname{} unless overridden locally. % % \emph{Note these \keyslabelname{} \emph{require} a \conceptname[type=concept,idx as=tag,idx post=prefix required]{\taglabelname} prefix if used in a global context, such as the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}}. % They do \emph{not} need a prefix if used when creating a particular \elementlabelname{}.} % For example, % \begin{chronoscode} % \begin{chronos} % [ % event/line+={semithick},% prefix required ; event/ explicit % ] % \chronosevent{% % name=dydd dewi sant, % date={1982-03-01}, % line+={double},% no prefix ; event/ implicit % } % \end{chronos} % \end{chronoscode} % % \DescribeKey{\meta{tag}/connection,\meta{tag}/connection+,\meta{tag}/connection\textquotesingle}\valmarg{key-value list} \chronosdochypertargets{key}{life,event,period,theory}{connection,connection+,connection\textquotesingle}\fortags{life,event,period,theory}\AfterLastParam % \meta{key-value list} to apply to this \elementlabelname{}'s \conceptname[type=element]{connection}. % This affects the line drawn between the \elementlabelname{}'s \conceptname[idx post=connection,idx font post=\ConceptFont]{connector} on the \conceptname[no idx]{timeline} and the \conceptname[idx post=connection,idx font post=\ConceptFont]{text tag}'s \conceptname[idx post=connection,idx font post=\ConceptFont]{main connector}. % This is intended for arbitrary \TikZ{} \keyslabelname{}; it should \emph{not} be used for \pkg{chronos} keys as they may not be processed correctly. % \keyname{\meta{tag}/connection,\meta{tag}/connection\textquotesingle} replace any current list; \keyname{\meta{tag}/connection+} adds to it. % % \DescribeKey{\meta{tag}/line,\meta{tag}/line+,\meta{tag}/line\textquotesingle}\valmarg{key-value list} \chronosdochypertargets{key}{life,event,period}{line,line+,line\textquotesingle}\fortags{life,event,period}\AfterLastParam % \meta{key-value list} to apply to this \elementlabelname{}'s \conceptname[idx post=style]{line} on or parallel to the \conceptname[no idx]{timeline}. % This is the line representing the temporal extension of a \conceptname[conj=or,idx post=representation of temporarl extention]{life,period}. % This is intended for arbitrary \TikZ{} \keyslabelname{}; it should \emph{not} be used for \pkg{chronos} keys as they may not be processed correctly. % \keyname{\meta{tag}/line,\meta{tag}/line\textquotesingle} replace any current list; \keyname{\meta{tag}/line+} adds to it. % \Default[on line, life/period]{fill=\#\#1,fill opacity=.25,draw=none} % \Default[on line, event]{draw=\#\#1,fill=none,opacity=.25} % \Default[off line, life/period]{draw=\#\#1,thick,fill opacity=.75} % \Default[off line, event]{draw=\#\#1,draw opacity=.75,fill=none} % % \DescribeDimkey{\meta{tag}/line yshift}\valmarg{dimension}\chronosdochypertargets{dimkey}{life,period}{line yshift}\fortags{life,period}\AfterLastParam % Default vertical displacement of \conceptsname[no idx,link,link to=\meta{tag}/line]{line} from the \conceptname[no idx]{timeline}. % Whether the displacement is reckoned from the centre or border of the \conceptname[no idx]{timeline} depends on the default placement. % % \DescribeMacro{\lineyshift}The \keyname[no idx,link,link to=\meta{tag}/line yshift,type=dimkey]{line yshift}. % This macro is available \emph{only within the \conceptname[link,type=concept]{\meta{timeline specification}}}. % % \DescribeKey{\meta{tag}/text tag,\meta{tag}/text tag+,\meta{tag}/text tag\textquotesingle}\valmarg{key-value list} \chronosdochypertargets{key}{life,event,period,theory,info}{text tag,text tag+,text tag\textquotesingle}\fortags{life,event,period,theory,info}\AfterLastParam % \meta{key-value list} to apply to this \elementlabelname{}'s \conceptname[type=element,idx post=apply arbitrary \string\TikZ{} to]{text tag}. % This is intended for arbitrary \TikZ{} \keyslabelname{}; it should \emph{not} be used for \pkg{chronos} keys as they may not be processed correctly. % \keyname{\meta{tag}/text tag,\meta{tag}/text tag\textquotesingle} replace any current list; \keyname{\meta{tag}/text tag+} adds to it. % \begin{chronoscode} % \chronosset{% % life/text tag+={font=\scshape\small}, % event/text tag+={font=\scshape\footnotesize}, % period/text tag+={font=\itshape\footnotesize}, % } % \end{chronoscode} % See also \keyname[no idx]{\meta{tag}/date font,\meta{tag}/text font}. % % % \DescribeKey{\meta{tag}/chronos connector,\meta{tag}/chronos connector+,\meta{tag}/chronos connector\textquotesingle}\valmarg{key-value list} \chronosdochypertargets{key}{life,event,period,theory}{chronos connector,chronos connector+,chronos connector\textquotesingle}\fortags{life,event,period}\AfterLastParam % Specify \TikZ{} settings to be used when creating \conceptname[idx as=chronos connector]{chronos connectors} on the \conceptname[no idx]{timeline}. % Note that \keyname{\meta{tag}/chronos connector} \emph{adds} options to the current list. % If, for some reason, you want to override this, you must do so explicitly. % In general, it does \emph{not} make sense to change this base option, so consider carefully whether you wish to do so. % \Default{anchor=center,inner sep=0pt,outer sep=0pt} % % \DescribeKey{\meta{tag}/text tag connector,\meta{tag}/text tag connector+,\meta{tag}/text tag connector\textquotesingle}\valmarg{key-value list} \chronosdochypertargets{key}{life,event,period,theory}{text tag connector,text tag connector+,text tag connector\textquotesingle}\fortags{life,event,period,theory}\AfterLastParam % Specify \TikZ{} settings to be used when creating \conceptname[idx as=text tag connector,idx post=configuration]{text tag connectors} on the \conceptname[no idx]{timeline}. % Note that \keyname{\meta{tag}/text tag connector} \emph{adds} options to the current list. % If, for some reason, you want to override this, you must do so explicitly. % In general, it does \emph{not} make sense to change this base option, so consider carefully whether you wish to do so. % \Default{anchor=center,inner sep=0pt,outer sep=0pt} % % \DescribeKey{\meta{tag}/main text tag connector,\meta{tag}/main text tag connector+,\meta{tag}/main text tag connector\textquotesingle}\valmarg{key-value list} \chronosdochypertargets{key}{life,event,period,theory}{main text tag connector,main text tag connector+,main text tag connector\textquotesingle}\fortags{life,event,period,theory}\AfterLastParam % Specify \emph{additional} \TikZ{} settings to be used when creating the main \conceptname[idx as=text tag connector,idx post=additional configuration for main]{connectors} on \conceptname[idx as=text tag,idx post=configuration specific to main connector]{text tags}. % \keyname{\meta{tag}/main text tag connector,\meta{tag}/main text tag connector\textquotesingle} replace any current list; \keyname{\meta{tag}/main text tag connector+} adds to it. % The ‘main’ \conceptname[idx post={main\string\textnormal{, identifying}},idx font post=\ConceptFont]{connector} is the one which connects (or would connect) the \conceptname[idx post={main connector\string\textnormal{, identifying}},idx font post=\ConceptFont]{text tag} to the \conceptname[no idx]{timeline}. % These \keyslabelname{} are rarely needed because, usually, you want all the \conceptname[idx as=text tag connector,no idx]{text tag connectors} to look the same. % Only use one of these three \keyslabelname{} rather than one from the previous set if you \emph{don't} want \meta{key-value list} to apply to all of them. % You do \emph{not} need to duplicate settings here. % % Note that \keyname{\meta{tag}/main text tag connector} \emph{adds} options to the current list. % If, for some reason, you want to override this, you must do so explicitly. % In general, it does \emph{not} make sense to change this base option, so consider carefully whether you wish to do so. % \Default{anchor=center,inner sep=0pt,outer sep=0pt} % % \DescribeKey{\meta{tag}/label,\meta{tag}/label\textquotesingle,\meta{tag}/label+}\valmarg{key-value list} \chronosdochypertargets{key}{info,theory circle}{label,label\textquotesingle,label+}\fortags{info,theory circle}\AfterLastParam % Style to apply to the \conceptname[idx post=style]{caption} of an \elementlabelname{} of \conceptname[type=concept,no idx]{tag} type \conceptname[type=tag,idx post=style of caption]{info} or the \conceptname[idx post=style]{labels} of an \elementlabelname{} of type \conceptname[type=tag,idx post=common style for \string\textconcept{labels}]{theory circle}. % In the latter case, the style applies to both the upper and lower \conceptname[idx post=common style for upper and lower]{label}. % \Default[empty] % \keyname[no idx,link prefix=\meta{tag}/]{label,label\textquotesingle} replace the current list; \keyname[link prefix=\meta{tag}/,no idx]{label+} replaces it. % % \DescribeKey{\meta{tag}/title,\meta{tag}/title\textquotesingle,\meta{tag}/title+}\valmarg{key-value list} \chronosdochypertargets{key}{main}{title,title\textquotesingle,title+}\fortags{main}\AfterLastParam % Style to apply to the \conceptname[idx post=style]{main title}, an \elementlabelname{} of \conceptname[type=concept,no idx]{tag} type \conceptname[type=tag,idx post=style for \string\textconcept{main title}]{main}. % \Default[empty] % \keyname{main/title,main/title\textquotesingle} replace the current list; \keyname{main/title+} replaces it. % % \DescribeStyle{\meta{tag}/title lines}Place \conceptname[idx post=title lines,idx font post=\KeyFont]{main title} between two parallel lines aligned to the width of the text. \chronosdochypertargets{style}{main}{title lines}\fortags{main}\AfterLastParam % This \stylelabelname{} is available when creating a \conceptname[idx post=title lines,idx font post=\KeyFont]{text tag} of type \conceptname[type=tag,no idx]{main} and draws lines along the northern and southern sides of the node. % It is used in \keyname[type=chronosstyle,idx post=use of \string\texttt{title lines}]{somewhat plain,date centric}. % % \DescribeKey{\meta{tag}/author}\valmarg{text} \chronosdochypertargets{key}{copyleft,copyright}{author}\fortags{copyleft,copyright}\AfterLastParam % The author's name for a \conceptname[type=tag,conj=or,no idx]{copyleft,copyright} notice. % This is used only if \keyname{name content} is unset. % \Default[as a last resort]{Author} % If \keyname[link prefix=copyleft/,idx as=copyleft/author]{author} and \keyname[idx post=if unset]{name content} are unset, \pkg{chronos} first tries to figure out a suitable author. % If \keyname[idx post=capitalisation]{name} is set, a capitalised version is used. % Otherwise, if \keyname[type=macro,no link]{\cs{svnauthor}} is defined, \cs{svnFullAuthor}\marg{\cs{svnauthor}} is used, if \keyname[type=macro,no link]{\cs{svnFullAuthor}} is available, or \cs{svnauthor}, if it is not. % If \pkg{chronos} still hasn't found an author, \texttt{Author} is used. % % \DescribeBoolkey{\meta{tag}/copyleft}\vals{true,false} \chronosdochypertargets{boolkey}{copyleft,copyright}{copyleft}\fortags{copyleft,copyright}\AfterLastParam % Whether a \conceptname[type=tag,conj=or,no idx]{copyleft,copyright} notice should specify copyleft or copyright. % \Default*{false} (\keyname[type=macro]{\cs{chronoscopyright}})\par % \Default*{true} (\keyname[type=macro]{\cs{chronoscopyleft}})\par % \keyname[type=macro,no idx]{\cs{chronoscopyright}} respects the global default, so if you set \keyname[type=boolkey,no idx]{\meta{tag}/copyleft} \texttt{true} with \keyname[type=macro,idx post=effect on \string\cs{chronoscopyright}]{\cs{chronosset}}, both \macroslabelname{} will make copyleft notices unless overridden in the \meta{key-value list} of options they absorb when executed. % \keyname[type=macro,no idx]{\cs{chronoscopyleft}} always creates a copyleft notice, regardless of any global settings, unless \keyname[type=boolkey,prefix=copyleft/,no idx]{copyleft} is explicitly set \texttt{false} when invoked. % % \DescribeKey{\meta{tag}/notice}\valmarg{macro definition} \chronosdochypertargets{key}{copyleft,copyright}{notice}\fortags{copyleft,copyright}\AfterLastParam % Template for a \conceptname[type=tag,conj=or,no idx]{copyleft,copyright} notice. % It is used as the definition of the \macrolabelname{} used for the content of the notice and should absorb two arguments: year and author. % \Default*{\{Copyleft \bs textcopyleft\{\} \#1 \#2\}} (if \keyname[type=boolkey,no idx]{\meta{tag}/copyleft} is \texttt{true})\par % \Default*{\{Copyright \bs textcopyright\{\} \#1 \#2\}} (if \keyname[type=boolkey,no idx]{\meta{tag}/copyleft} is \texttt{false})\par % For example, % \begin{chronoscode} % \begin{chronos} % [ % copyright/notice={Created by #2 in the year #1 of the Great Debacle at the behest of His Gracious Grasp Full Acre Fanfare the Nineteenth.}, % ] % \end{chronoscode} % % \DescribeKey{\meta{tag}/rotate}\val{angle} \chronosdochypertargets{key}{copyleft,copyright}{rotate}\fortags{copyleft,copyright}\AfterLastParam % The angle to rotate the node containing a \conceptname[type=tag,conj=or,no idx]{copyleft,copyright} notice. % \Default{90} % % \DescribeKey{\meta{tag}/year}\val{text} \chronosdochypertargets{key}{copyleft,copyright}{year}\fortags{copyleft,copyright}\AfterLastParam % The year of publication for a \conceptname[type=tag,conj=or,no idx]{copyleft,copyright} notice. % \Default[if available]{\cs{svnyear}} % \Default[otherwise]{\cs{today}} % % \subsubsection{Specialist Fonts for Text Tags}\label{subsubsec:text-tags-specialist-fonts} %^^A BEGIN subsubsec:text-tags-specialist-fonts % % \DescribeKey{\meta{tag}/date font}\valmarg{font commands} \hypertarget{key:life/date-font}{}\hypertarget{key:event/date-font}{}\hypertarget{key:period/date font}{}\fortags{life,event,period}\AfterLastParam % Set font macros to be applied to the date content of \conceptsname[link,idx post={font, date(s)}]{text tag}. % \Default{} % \begin{chronoscode} % \chronosset{% % ... % event/date font=\itshape\bfseries\small, % life/date font=\sffamily\large, % period/date font=\upshape\normalsize\mdseries, % } % \end{chronoscode} % Note that if you want to alter the font for the entire contents of the \conceptname[link,no idx]{text tag}, it is better to just use \texttt{\meta{tag}/text tag+={font\valmarg{}}}. % Use \texttt{date font} to modify those settings specifically for date(s). % Note that if \conceptname[link,no idx]{era label} are included, they will not be affected. % % \DescribeKey{\meta{tag}/text font}\valmarg{font commands} \hypertarget{key:life/text-font}{}\hypertarget{key:event/text-font}{}\hypertarget{key:period/text-font}{}\fortags{life,event,period}\AfterLastParam % Set font macros to be applied to the text content of \conceptsname[link,idx post={font, text}]{text tag}. % \Default{} % \begin{chronoscode} % \chronosset{% % ... % event/text font=\uishape\large, % life/text font=\sffamily\Large, % period/text font=\small\bfseries, % } % \end{chronoscode} % Note that if you want to alter the font for the entire contents of the \conceptname[link,no idx]{text tag}, it is better to just use \texttt{\meta{tag}/text tag+={font\valmarg{}}}. % Use \texttt{text font} to modify those settings specifically for names. % % %^^A END subsubsec:text-tags-specialist-fonts % %^^A END subsec:add-elements-glconfig % % \subsection{Additional Elements: Global Configuration}\label{subsec:add-elements-gconfig} % \chronosdocidx[type=tag,font=\ConceptFont,idx post={configuration,global}]{life,event,period,theory,info,theory circle,main,copyleft,copyright}\vspace{-\baselineskip} %^^A BEGIN subsec:add-elements-gconfig % % \emph{Except where otherwise noted, the \keyslabelname{} in this section should not be used locally.} % The following \keyslabelname{} are intended for use in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} or in \keyname[type=macro,no idx]{\cs{chronosset}}. % They are not intended for use when creating particular \conceptname[type=concept,idx as=element,idx post=global colour configuration,link,link to=element]{elements}. % For example, \keyname[type=colkey,link prefix=\meta{tag}/,idx as=\meta{tag}/default colour,idx post=setting \string\emph{vs.}\space using]{default colour} should \emph{not} be used for particular \conceptname[type=concept,idx as=element,link,link to=element,no idx]{elements}, unless you wish to \emph{use} the existing default, as opposed to setting it. % Instead, use \keyname[type=colkey]{colour} to override default settings. % % See \cref{subsec:lliwiau} for further information about \colkeyslabelname{} and \collistkeyslabelname{}. % % \DescribeKey{life,event,period,theory}\valmarg{key-value list} \fortags{life,event,period,theory}\AfterLastParam % Equivalent to prefixing each item in \meta{key-value list} with \meta{tag}. % \begin{chronoscode} % \begin{chronos} % [ % life={% % full dates, % without eras, % text tag+={font=\sffamily}, % text font=\bfseries, % date font=\small, % colours above={red,orange,blue}, % colours below={darkgray,gray,black,magenta}, % }, % period={% % only years, % text tag+={opacity=.75}, % }, % event={% % text tag+={double=blue}, % }, % ] % \end{chronos} % \end{chronoscode} % % \DescribeColkey{\meta{tag}/default colour,\meta{tag}/default color}\val{colour name} \fortags[names={\meta{tag}},type=colkey]{life,event,period,theory,info}\AfterLastParam % The default colour to use for all \conceptname[idx as=element,type=concept,link,link to=element,no idx]{elements} of type \meta{tag}, as explained in \cref{subsec:lliwiau}. % \emph{This key does something quite different if used when creating a specific \elementlabelname. % See \cref{subsec:add-elements-lconfig} for details.} % For example, % \begin{chronoscode} % \begin{chronos}[ % life/default colour=blue, % event/default colour=green, % period/default colour=red, % ] % \end{chronos} % \end{chronoscode} % See \cref{subsec:lliwiau} for details and defaults. % % \DescribeCollistkey[noindex]{colours above,colors above,\meta{tag}/colours above,\meta{tag}/colors above}\valmarg{colour list} \fortags{life,event,period,theory}\AfterLastParam % The default and \conceptname[type=concept,no idx,link]{tag}-specific colour lists for all susceptible \conceptname[idx as=element,type=concept,link,link to=element,no idx]{elements} above the \conceptname[no idx]{timeline}. % \emph{These keys should never be used when creating specific \elementslabelname.} % \begin{chronoscode} % \begin{chronos}[ % colours above={gray,blue,green}, % life/colours above={magenta,pink,purple}, % ] % \end{chronos} % \end{chronoscode} % See \cref{subsec:lliwiau} for details and defaults. % % \DescribeCollistkey[noindex]{colours below,colors below,\meta{tag}/colours below,\meta{tag}/colors below}\valmarg{colour list} \fortags{life,event,period,theory}\AfterLastParam % The default and \conceptname[type=concept,no idx,link]{tag}-specific colour lists for all susceptible \conceptname[idx as=element,type=concept,no idx]{elements} below the \conceptname[no idx]{timeline}. % \emph{These keys should never be used when creating specific \elementslabelname.} % \begin{chronoscode} % \begin{chronos}[ % colours below={red,orange,magenta}, % theory/colours below={black,gray}, % ] % \end{chronos} % \end{chronoscode} % See \cref{subsec:lliwiau} for details and defaults. % %^^A \DescribeCollistkey{colours above from clist,colors above from clist}\val{} \fortags{life,event,period,theory}\AfterLastParam %^^A %^^A \DescribeCollistkey{colours below from clist,colors below from clist}\val{} \fortags{life,event,period,theory}\AfterLastParam % % \DescribeBoolkey[noindex]{colour rotation,color rotation,\meta{tag}/colour rotation,\meta{tag}/color rotation}\vals{true,false} \fortags{life,event,period,theory}\AfterLastParam % Whether \conceptname[type=concept,link,no idx]{colour rotation} is enabled by default. % \Default{true} % \begin{chronoscode} % \begin{chronos}[ % colour rotation=false, % ] % \end{chronos} % \end{chronoscode} % See \cref{subsec:lliwiau} for details and defaults. % % \DescribeKey{copyleft,copyleft\textquotesingle,copyleft+,copyright,copyright\textquotesingle,copyright+}\valmarg{key-value list} \fortags[names={copyleft,copyleft\textquotesingle,copyleft+,copyright,copyright\textquotesingle,copyright+},type=key]{copyleft,copyright}\AfterLastParam % Style to apply to the \conceptname[conj=or,idx post=style]{copyleft,copyright}, an \elementlabelname{} of \conceptname[type=concept,no idx]{tag} type \conceptname[type=tag,conj=/]{copyleft,copyright}. % \Default[empty] % \keyname[link,no idx]{copyleft,copyleft\textquotesingle,copyright,copyright\textquotesingle} replace the current list; \keyname[link,no idx]{copyleft+,copyright+} replace it. % % \DescribeBoolkey{event dates split}\vals{true,false} \fortags{event}\AfterLastParam % Create two \conceptsname[idx post=event dates split,idx font post=\KeyFont]{text tag} for each \conceptname[type=tag,idx post=split \string\textconcept{text tags}]{event}, one above and one below the \conceptname[no idx]{timeline}. % The formatted \keyname[type=datekey,idx post=effect of \string\textkey{event dates split} on use of]{date} or \keyname[idx post=effect of \string\textkey{event dates split} on use of]{dates content} goes into one and the formatted \keyname[idx post=effect of \string\textkey{event dates split} on use of,conj=or]{name,name content} goes into the other. % \emph{This \keylabelname{} has no effect on \conceptname[idx as=text tag,no idx]{text tags} belonging to other \conceptname[type=concept,idx as=tag,no idx]{tags}, such as \conceptname[type=tag,conj=or,idx post=split \string\textconcept{text tags} unsupported]{life,period}.} % \Default{true} % \Initial{false} % % \DescribeStyle{event date split}Additional \stylelabelname{} applied to \conceptname[idx as=text tag,no idx]{text tags} of type \conceptname[type=tag,idx post={split \string\textconcept{text tags}, style}]{event} if \keyname[type=boolkey,no idx]{event dates split} is \texttt{true}. \fortags{event}\AfterLastParam % This \stylelabelname{} is provided primarily for use \emph{outside} the \enviro{chronos} environment, in case you want some \conceptname[idx as=timeline,idx post={split and unsplit \string\textconcept{events}, combining in same document}]{timelines} with split events and some without. % It is \emph{not} intended to support both split and unsplit events on the same \conceptname[idx post={split and unsplit \string\textconcept{events}, combining in same \string\textconcept{timeline} unsupported}]{timeline}. % \Default[empty] % % The next twelve sets of \keyslabelname{} fall into two groups, corresponding to the five sets of corresponding \keyslabelname{} explained in \cref{subsec:add-elements-glconfig}. % \textbf{\emph{None of these keys should be used when creating specific \elementslabelname{}.}} % % The first set of six consists of plural forms, as opposed to the singular forms used for \conceptname[type=concept,no idx]{tag}-specific configuration. % These are available in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} and \keyname[type=macro,no idx]{\cs{chronosset}}. % % \DescribeKey{text tags,text tags+,text tags\textquotesingle}\valmarg{key-value list} \fortags{life,event,period,theory,info}\AfterLastParam % Set or modify the global default \meta{key-value list} to be applied to \conceptname[idx as=text tag,idx post={configuring global defaults}]{text tags} in the absence of a \conceptname[type=concept,idx as=tag,no idx]{\taglabelname}-specific setting (\cref{subsec:add-elements-glconfig}). % \keyname[link,no idx]{text tags,text tags\textquotesingle} replace the current value; \keyname[link,no idx]{text tags+} replaces it. % \Default{outer sep=0pt,text=\#1!75!black} % % The \keylabelname{} are passed a single argument specifying the current \elementlabelname{}'s assigned \conceptname[type=colour,font=\normalfont,idx as=use in keys]{colour}, which may be used in the usual way i.e.~by writing \texttt{\#1} everywhere you would like the \colourlabelname{} to be used. % % Note that, when checking if a more fine-grained value is set, \emph{the lists of \meta{key-value} pairs are regarded as a whole. % They are \emph{not} treated on a \meta{key}-by-\meta{key} basis.} % So if you write % \begin{chronoscode} % \begin{chronos} % [ % event/text tag={}, % text tags+={fill=green}, % ] % \end{chronos} % \end{chronoscode} % you will \emph{not} get green \conceptname[idx as=text tag,idx post=holistic treatment of configuration]{text tags} for \conceptname[type=tag,idx as=event,idx post=holistic treatment of configuration]{events}. % Nor will you get the \pkgoptlabelname{} default. % Instead, no \stylelabelname{} whatsoever will be applied when creating \conceptname[type=tag,idx post=no style]{event} \conceptname[idx as=text tag,idx post=no style]{text tags}. % % \DescribeKey{connections,connections+,connections\textquotesingle}\valmarg{key-value list} \fortags{life,event,period,theory}\AfterLastParam % Set or modify the global default \meta{key-value list} to be applied to \conceptname[idx as=connection,idx post={configuring global defaults}]{connections} in the absence of a \conceptname[type=concept,idx as=tag,no idx]{\taglabelname}-specific setting (\cref{subsec:add-elements-glconfig}). % \keyname[link,no idx]{connections,connections\textquotesingle} replace the current value; \keyname[link,no idx]{connections+} replaces it. % \Default{draw=\#1} % % These \keyslabelname{} are related to the \conceptname[type=concept,no idx]{tag}-specific \keyname{\meta{tag}/connection,\meta{tag}/connection+,\meta{tag}/connection\textquotesingle} in just the same way as \keyname[no idx]{text tags,text tags+,text tags\textquotesingle} are related to \keyname[no idx]{\meta{tag}/text tag,\meta{tag}/text tag+,\meta{tag}/text tag\textquotesingle}. % Please see above for details. % % \DescribeKey{lines,lines+,lines\textquotesingle}\valmarg{key-value list} \fortags{life,event,period}\AfterLastParam % Set or modify the global default \meta{key-value list} to be applied to \conceptname[idx as=line,idx post={configuring global defaults}]{lines} in the absence of a \conceptname[type=concept,idx as=tag,no idx]{\taglabelname}-specific setting (\cref{subsec:add-elements-glconfig}). % \keyname[link,no idx]{lines,lines\textquotesingle} replace the current value; \keyname[link,no idx]{lines+} replaces it. % \Default*{}none (see \cref{subsec:add-elements-glconfig} for \conceptname[type=concept,idx as=tag,no idx]{\taglabelname}-specific defaults.) % % These \keyslabelname{} are related to the \conceptname[type=concept,no idx]{tag}-specific \keyname{\meta{tag}/line,\meta{tag}/line+,\meta{tag}/line\textquotesingle} in just the same way as \keyname[no idx]{text tags,text tags+,text tags\textquotesingle} are related to \keyname[no idx]{\meta{tag}/text tag,\meta{tag}/text tag+,\meta{tag}/text tag\textquotesingle}. % Please see above for details. % % \DescribeKey{chronos connectors,chronos connectors+,chronos connectors\textquotesingle}\valmarg{key-value list} \fortags{life,event,period,theory}\AfterLastParam % Set or modify the global default \meta{key-value list} to be applied to \conceptname[idx as=chronos connector,idx post={configuring global defaults}]{chronos connectors} in the absence of a \conceptname[type=concept,idx as=tag,no idx]{\taglabelname}-specific setting (\cref{subsec:add-elements-glconfig}). % \keyname[no idx,link]{chronos connectors\textquotesingle} replaces the current value; \keyname[no idx,link]{chronos connectors,chronos connectors+} replace it. % \Default{anchor=center,inner sep=0pt,outer sep=0pt} % % These \keyslabelname{} are related to the \conceptname[type=concept,no idx]{tag}-specific \keyname{\meta{tag}/chronos connector,\meta{tag}/chronos connector+,\meta{tag}/chronos connector\textquotesingle} in just the same way as \keyname[no idx]{text tags,text tags+,text tags\textquotesingle} are related to \keyname[no idx]{\meta{tag}/text tag,\meta{tag}/text tag+,\meta{tag}/text tag\textquotesingle}. % Please see above for details. % % \DescribeKey{text tag connectors,text tag connectors+,text tag connectors\textquotesingle}\valmarg{key-value list} \fortags{life,event,period,theory}\AfterLastParam % Set or modify the global default \meta{key-value list} to be applied to \conceptname[idx as=text tag connector,idx post={configuring global defaults}]{text tag connectors} in the absence of a \conceptname[type=concept,idx as=tag,no idx]{\taglabelname}-specific setting (\cref{subsec:add-elements-glconfig}). % \keyname[no idx]{text tag connectors\textquotesingle} replaces the current value; \keyname[no idx]{text tag connectors,text tag connectors+} replace it. % \Default{anchor=center,inner sep=0pt,outer sep=0pt} % % These \keyslabelname{} are related to the \conceptname[type=concept,no idx]{tag}-specific \keyname{\meta{tag}/text tag connector,\meta{tag}/text tag connector+,\meta{tag}/text tag connector\textquotesingle} in just the same way as \keyname[no idx]{text tags,text tags+,text tags\textquotesingle} are related to \keyname[no idx]{\meta{tag}/text tag,\meta{tag}/text tag+,\meta{tag}/text tag\textquotesingle}. % Please see above for details. % % \DescribeKey{main text tag connectors,main text tag connectors+,main text tag connectors\textquotesingle}\valmarg{key-value list} \fortags{life,event,period,theory}\AfterLastParam % Set or modify the global default \meta{key-value list} to be applied to \conceptname[idx as=text tag connector,idx post={configuring global defaults}]{main text tag connectors} in the absence of a \conceptname[type=concept,idx as=tag,no idx]{\taglabelname}-specific setting (\cref{subsec:add-elements-glconfig}). % \keyname[no idx]{main text tag connectors\textquotesingle} replaces the current value; \keyname[no idx]{main text tag connectors,main text tag connectors+} add to it. % \Default[empty] % % These \keyslabelname{} are related to the \conceptname[type=concept,no idx]{tag}-specific \keyname{\meta{tag}/main text tag connector,\meta{tag}/main text tag connector+,\meta{tag}/main text tag connector\textquotesingle} in just the same way as \keyname[no idx]{text tags,text tags+,text tags\textquotesingle} are related to \keyname[no idx]{\meta{tag}/text tag,\meta{tag}/text tag+,\meta{tag}/text tag\textquotesingle}. % Please see above for details. % % The next six sets of \keyslabelname{} are convenience \keyslabelname{} which set or modify the global defaults and the corresponding \keyslabelname{} for all \conceptname[type=concept,idx as=tag,idx post=global defaults for all]{\tagslabelname} at once. % % \DescribeKey{every text tags,every text tags+,every text tags\textquotesingle}\valmarg{key-value list} \fortags{life,event,period,theory,info}\AfterLastParam % A convenience key equivalent to setting the same \meta{key-value list} for all of \keyname[link,idx post=set by \string\textkey{every text tags}]{text tags,life/text tag,event/text tag,period/text tag,theory/text tag,info/text tag} or the \texttt{+} or \texttt{\textquotesingle} variants. % \emph{This key should never be used when creating a specific \elementlabelname.} % See \cref{subsec:add-elements-glconfig} and above for details and defaults. % % \DescribeKey{every connections,every connections+,every connections\textquotesingle}\valmarg{key-value list} \fortags{life,event,period,theory}\AfterLastParam % A convenience key equivalent to setting the same \meta{key-value list} for all of \keyname[link,idx post=set by \string\textkey{every connections}]{connections,life/connection,event/connection,period/connection,theory/connection} or the \texttt{+} or \texttt{\textquotesingle} variants. % \emph{This key should never be used when creating a specific \elementlabelname.} % See \cref{subsec:add-elements-glconfig} and above for details and defaults. % % \DescribeKey{every lines,every lines+,every lines\textquotesingle}\valmarg{key-value list} \fortags{life,event,period}\AfterLastParam % A convenience key equivalent to setting the same \meta{key-value list} for all of \keyname[link,idx post=set by \string\textkey{every lines}]{lines,life/line,event/line,period/line} or the \texttt{+} or \texttt{\textquotesingle} variants. % \emph{This key should never be used when creating a specific \elementlabelname.} % See \cref{subsec:add-elements-glconfig} and above for details and defaults. % % \DescribeKey{every chronos connectors,every chronos connectors+,every chronos connectors\textquotesingle}\valmarg{key-value list} \fortags{life,event,period,theory}\AfterLastParam % A convenience key equivalent to setting \meta{key-value list} for all of \keyname[link,idx post=set by \string\textkey{every chronos connectors}]{chronos connectors,life/chronos connector,event/chronos connector,period/chronos connector,theory/chronos connector} or the \texttt{+} or \texttt{\textquotesingle} variants. % \emph{This key should never be used when creating a specific \elementlabelname.} % See \cref{subsec:add-elements-glconfig} and above for details and defaults. % % \DescribeKey{every text tag connectors,every text tag connectors+,every text tag connectors\textquotesingle}\valmarg{key-value list} \fortags{life,event,period,theory}\AfterLastParam % A convenience key equivalent to setting the same \meta{key-value list} for all of \keyname[link,idx post=set by \string\textkey{every text tag connectors}]{text tag connectors,life/text tag connector,event/text tag connector,period/text tag connector,theory/text tag connector} or the \texttt{+} or \texttt{\textquotesingle} variants. % \emph{This key should never be used when creating a specific \elementlabelname.} % See \cref{subsec:add-elements-glconfig} and above for details and defaults. % % \DescribeKey{every main text tag connectors,every main text tag connectors+,every main text tag connectors\textquotesingle}\valmarg{key-value list} \fortags{life,event,period,theory}\AfterLastParam % A convenience key equivalent to setting the same \meta{key-value list} for all of \keyname[link,idx post=set by \string\textkey{every main text tag connectors}]{main text tag connectors,life/main text tag connector,event/main text tag connector,period/main text tag connector,theory/main text tag connector} or the \texttt{+} or \texttt{\textquotesingle} variants. % \emph{This key should never be used when creating a specific \elementlabelname.} % See \cref{subsec:add-elements-glconfig} and above for details and defaults. % % \DescribeKey{every theory circle circle,every theory circle circle\textquotesingle,every theory circle circle+}\valmarg{key-value list} \fortags{theory circle}\AfterLastParam % Configuration of the base ring for \elementslabelname{} of \conceptname[type=concept,idx post=theory circle,idx font post=\ConceptFont]{tag} type \conceptname[type=tag,idx post=configuring base ring]{theory circle}. % The ring consists of two circles with the smaller forming a hole in the centre by default. % Changing or deleting the filling rule will eliminate the hole. % \Default{fill=\meta{chronos main colour}, draw=\meta{chronos main colour}, even odd rule} % \keyname[link,no idx]{every theory circle circle,every theory circle circle+} add to the current \meta{key-value list}; \keyname[link,no idx]{every theory circle circle\textquotesingle} replaces it. % % \DescribeKey{every theory circle text,every theory circle text\textquotesingle,every theory circle text+}\valmarg{key-value list} \fortags{theory circle}\AfterLastParam % Style applied to the texts used in constructing \elementslabelname of \conceptname[type=concept,no idx]{tag} type \conceptname[type=tag,no idx]{theory circle}. % By default the texts are placed along the semicircular paths corresponding to the upper and lower halves of the ring formed by the theory circle circles. % This means the colour used here should differ from that used to fill the circles, given the default \styleslabelname{}. % \Default{decoration=\{text effects along path, text=\{\#\#1\}, text effects/.cd, fit text to path, text=chronos@prifliw@cefndir, characters=\{text along path, font=\bs scriptsize\bs scshape\}\}, decorate} % \keyname[link,no idx]{every theory circle text,every theory circle text+} add to the current \meta{key-value list}; \keyname[link,no idx]{every theory circle text\textquotesingle} replaces it. % % \DescribeDimkey{text tag yshift}\val{dimension} \fortags{life,event,period,theory}\AfterLastParam % The \texttt{yshift} to apply when placing the \keyname[idx as=\meta{tag}/text tag,link prefix=\meta{tag}/]{text tag} if \texttt{yshift} is otherwise \texttt{0pt} and \keyname[idx post=if unset]{at} is unset. % You should probably never use this key in the context of a particular \elementlabelname{}, because \texttt{yshift} works just as well and will probably be more reliable and certainly faster. % Moreover, unlike \texttt{yshift}, which can be used to adjust a position set with \keyname[no idx]{at}, \keyname[type=dimkey,no idx]{text tag yshift} cannot. % If \keyname[no idx]{at} is used, \keyname[type=dimkey,no idx]{text tag yshift} is ignored. % It makes sense to set this globally if you want all \elementslabelname{} or all \elementslabelname{} belonging to a particular \taglabelname{} to be shifted by some specified distance from the \conceptname[no idx]{timeline}. % For example, % \begin{chronoscode}[text,yshift,tag] % \begin{chronos}[ % life/text tag yshift=10pt, % event/text tag yshift=30pt, % period/text tag yshift=50pt, % theory/text tag yshift=70pt, % ] % \end{chronos} % \end{chronoscode} % % \begin{chronos} % [ % dates=1540:1560, % life/text tag yshift=10pt, % event/text tag yshift=30pt, % period/text tag yshift=50pt, % theory/text tag yshift=70pt, % ] % \chronoslife{name=life,dates=1550:1555} % \chronosevent{name=event,date=1542} % \chronosperiod{name=period,dates=1543:1548} % \chronostheory{name=theory} % \end{chronos} % % The following \keyslabelname{} take the form \arg{every} \meta{tag}, optionally followed by prime or plus. % \emph{They should not be used to configure \elementslabelname{} for which other global \keyslabelname{} exist, such as \conceptname[conj=or,idx as={colour,connection,connector,date format,line,text tag},idx post=cf.\string\space \string\textkey{every} \string\meta{tag}]{colours,connections,connectors,date formats,lines,text tags}.} % Generally, these \keyslabelname{} should be unnecessary and are best avoided, although they may occasionally be convenient. % % \DescribeKey{every life,every life\textquotesingle,every life+}\valmarg{key-value list} \fortags{life}\AfterLastParam % Additional configuration for all \elementslabelname{} of \conceptname[type=concept,link,no idx]{tag} type \conceptname[type=tag,idx post={configuration, global}]{life}. % These do much the same as \keyname[no idx]{life/tag,life/tag+,life/tag\textquotesingle}, but should \emph{never} be used when creating a specific \elementlabelname{}. % \keyname[link,no idx]{every life,every life+} add to the current \meta{key-value list}; \keyname[link,no idx]{every life\textquotesingle} replaces it. % % \DescribeKey{every event,every event\textquotesingle,every event+}\valmarg{key-value list} \fortags{event}\AfterLastParam % Additional configuration for all \elementslabelname{} of \conceptname[type=concept,link,no idx]{tag} type \conceptname[type=tag,idx post={configuration, global}]{event}. % These do much the same as \keyname[no idx]{event/tag,event/tag+,event/tag\textquotesingle}, but should \emph{never} be used when creating a specific \elementlabelname{}. % \keyname[link,no idx]{every event,every event+} add to the current \meta{key-value list}; \keyname[link,no idx]{every event\textquotesingle} replaces it. % % \DescribeKey{every period,every period\textquotesingle,every period+}\valmarg{key-value list} \fortags{period}\AfterLastParam % Additional configuration for all \elementslabelname{} of \conceptname[type=concept,link,no idx]{tag} type \conceptname[type=tag,idx post={configuration, global}]{period}. % These do much the same as \keyname[no idx]{period/tag,period/tag+,period/tag\textquotesingle}, but should \emph{never} be used when creating a specific \elementlabelname{}. % \keyname[link,no idx]{every period,every period+} add to the current \meta{key-value list}; \keyname[link,no idx]{every period\textquotesingle} replaces it. % % \DescribeKey{every theory,every theory\textquotesingle,every theory+}\valmarg{key-value list} \fortags{theory}\AfterLastParam % Additional configuration for all \elementslabelname{} of \conceptname[type=concept,link,no idx]{tag} type \conceptname[type=tag,idx post={configuration, global}]{theory}. % These do much the same as \keyname[no idx]{theory/tag,theory/tag+,theory/tag\textquotesingle}, but should \emph{never} be used when creating a specific \elementlabelname{}. % \keyname[link,no idx]{every theory,every theory+} add to the current \meta{key-value list}; \keyname[link,no idx]{every theory\textquotesingle} replaces it. % % \DescribeKey{every info,every info\textquotesingle,every info+}\valmarg{key-value list} \fortags{info}\AfterLastParam % Additional configuration for all \elementslabelname{} of \conceptname[type=concept,link,no idx]{tag} type \conceptname[type=tag,idx post={configuration, global}]{info}. % These do much the same as \keyname[no idx]{info/tag,info/tag+,info/tag\textquotesingle}, but should \emph{never} be used when creating a specific \elementlabelname{}. % \keyname[link,no idx]{every info,every info+} add to the current \meta{key-value list}; \keyname[link,no idx]{every info\textquotesingle} replaces it. % %^^A END subsec:add-elements-gconfig % %^^A END sec:macros-add-elements % % \subsection{Adding Connections, Using Colours and Accessing Styles}\label{subsec:add-cysylltiadau} % \chronosdocidx[type=tag,font=\ConceptFont,idx post={colours,using}]{life,event,period,theory,info}%^^A % \chronosdocidx[type=tag,font=\ConceptFont,idx post={styles,using}]{life,event,period,theory,info}\vspace{-\baselineskip} %^^A BEGIN subsec:add-cysylltiadau % % To access the \collistlabelname{} used for the \conceptname[no idx]{timeline} etc., see \cref{subsec:lliwiau-basic,subsubsec:timeline-lliwiau}. % For details of the way \collistlabelname{} are assigned to \elementslabelname{}, see \cref{subsec:lliwiau}. % % \Conceptname[type=tag,idx post=as \string\textconcept{connectable} to other \string\textconcept{elements}]{life,event,period,theory} \elementslabelname{} are designed to be connected not only, in the case of those which are connectable, to the \conceptname[no idx]{timeline}, but also to each other. % To ensure consistent styling, this requires the use of \pkg{chronos} \styleslabelname{} in \TikZ{} commands. % % In addition, densely-packed \conceptname[idx as=timeline,idx post={densely packed, non-standard paths}]{timelines} sometimes require non-standard paths be used to connect a minority of \elementslabelname{} to the \conceptname[no idx]{timeline} in an efficient way. % Again, this requires access to \pkg{chronos} \styleslabelname{}. % % \DescribeStyle{chronos connect}\cvalsmarg{tag,\elementlabelname{} name} \fortags{life,event,period,theory}\AfterLastParam % This sets the \stylelabelname{} used for \conceptsname[link,idx post={style, using directly}]{connection} belonging to \elementslabelname{} of type \meta{tag} with the \conceptname[type=colour,font=\normalfont,idx as=use in \string\texttt{chronos connect}]{colour} assigned to \meta{\elementlabelname{} name} (\cref{subsec:lliwiau}). % For example, % \begin{codlatex}[chronos,connect] % \draw [chronos connect=life:johannes gutenberg] (connector johannes gutenberg) -- (connector printing press) (connector johannes gutenberg2) -|- (connector movable type) (connector johannes gutenberg3) -- ++(5pt,0pt) |-| (connector gutenberg bible); % \end{codlatex} % % This will draw a line using the \stylelabelname{} for \conceptsname[idx post=adding with \string\textkey{chronos connect} for \string\textkey{johannes gutenberg}\string\idxeg,link]{connection} of \conceptname[type=concept,no idx,link]{tag} type \conceptname[type=tag,no idx,link]{life} and the \conceptname[type=colour,idx as=assigned to \string\textkey{johannes gutenberg},symbol=eg,font=\normalfont]{colour} assigned to the \elementlabelname{} named \keyname[type=element,no link,symbol=eg]{johannes gutenberg}. % Note the use of \conceptsname[idx as=text tag connector,idx post=johannes gutenberg\string\idxeg,idx font post=\KeyFont]{connector} on both the \elementlabelname{}'s own \conceptname[link,link to=\meta{tag}/text tag,idx as=\meta{tag}/text tag,idx post=chronos connect,idx font post=\KeyFont]{text tag} and on other \elementslabelname{}' \conceptsname[idx as=text tag,no idx,link,link to=\meta{tag}/text tag]{text tag}. % In this case, \keyname[type=element,idx pre=text tag,idx font pre=\ConceptFont,symbol=eg,no link]{tag johannes gutenberg} is being \conceptname[idx as=connection,idx post=between \string\textkey{johannes gutenberg} and other \string\textconcept{elements}\string\idxeg]{connected} to \keyname[type=element,idx pre=text tag,idx font pre=\ConceptFont,symbol=eg,no link]{tag printing press}, \keyname[type=element,idx pre=text tag,idx font pre=\ConceptFont,symbol=eg,no link]{tag movable type} and \keyname[type=element,idx pre=text tag,idx font pre=\ConceptFont,symbol=eg,no link]{tag gutenberg bible}. % % The following four \keyslabelname{} provide analogous access to the \styleslabelname{} and \collistlabelname{} used for \conceptsname[link,no idx]{chronos connector,text tag connector,line,text tag} and are used in the same way. % % \DescribeStyle{chronos create chronos connector}\cvalsmarg{tag,\elementlabelname{} name} \fortags{life,event,period}\AfterLastParam % This sets the \stylelabelname{} used for \conceptsname[idx as=chronos connector,link,idx post={style, using directly}]{chronos connector} belonging to \elementslabelname{} of type \meta{tag} with the \conceptname[type=colour,font=\normalfont,idx as=use in \string\texttt{chronos create chronos connector}]{colour} assigned to \meta{\elementlabelname{} name}. % % \DescribeStyle{chronos create text tag connector}\cvalsmarg{tag,\elementlabelname{} name} \fortags{life,event,period,theory}\AfterLastParam % This sets the \stylelabelname{} used for \conceptsname[idx as=text tag connector,link,idx post={style, using directly}]{text tag connector} belonging to \elementslabelname{} of type \meta{tag} with the \conceptname[type=colour,font=\normalfont,idx as=use in \string\texttt{chronos create text tag connector}]{colour} assigned to \meta{\elementlabelname{} name}. % % \DescribeStyle{chronos mark line}\cvalsmarg{tag,\elementlabelname{} name} \fortags{life,event,period}\AfterLastParam % This sets the \stylelabelname{} used for \conceptsname[idx as=line,link,idx post={style, using directly}]{line} (on or near the \conceptname[no idx]{timeline}) belonging to \elementslabelname{} of type \meta{tag} with the \conceptname[type=colour,font=\normalfont,idx as=use in \string\texttt{chronos mark line}]{colour} assigned to \meta{\elementlabelname{} name}. % % \DescribeStyle{chronos text tag}\cvalsmarg{tag,\elementlabelname{} name} \fortags{life,event,period,theory,info}\AfterLastParam % This sets the \stylelabelname{} used for \conceptsname[idx as=text tag,link,idx post={style, using directly}]{text tag} belonging to \elementslabelname{} of type \meta{tag} with the \conceptname[type=colour,font=\normalfont,idx as=use in \string\texttt{chronos text tag}]{colour} assigned to \meta{\elementlabelname{} name}. % % We can also use the \conceptname[type=colour,font=\normalfont,idx as={using directly}]{colour} assigned to \texttt{johannes gutenberg} directly. % Perhaps, for example, we'd like to put a book symbol near this \elementlabelname{} in the appropriate \conceptname[type=colour,no idx]{colour}. % \Example{\cs{node} [colour johannes gutenberg, above left=5pt and 10pt of tag johannes gutenberg.north west, anchor=south east, inner sep=0pt] \{\meta{book-symbol}\};} % %^^A END subsec:add-cysylltiadau % % \section{Drawing on Chronos Layers}\label{sec:haenau-llunio} %^^A BEGIN sec:haenau-llunio % % See \cref{subsec:haenau}. % % \DescribeStyle{on chronos background layer}Apply to a \keyname[env,no link]{scope} to draw everything inside on \layerlabelname{} \keyname[type=layer]{chronos background}.\AfterLastParam % \begin{chronoscode}[on,chronos,layer,background] % \begin{scope}[on chronos background layer] % \node {Something};% in between the regular background and chronos middle ground % \end{scope} % \end{chronoscode} % % \DescribeStyle{on chronos middle ground layer}Apply to a \keyname[env,no link,no idx]{scope} to draw everything inside on \layerlabelname{} \keyname[type=layer]{chronos middle ground}.\AfterLastParam % \begin{chronoscode}[on,chronos,layer,middle,ground] % \begin{scope}[on chronos middle ground layer] % \node {Something};% behind the main layer and chronos background % \end{scope} % \end{chronoscode} % % \DescribeStyle{on chronos foreground layer}Apply to a \keyname[env,no link,no idx]{scope} to draw everything inside on \layerlabelname{} \keyname[type=layer]{chronos foreground}.\AfterLastParam % \begin{chronoscode}[on,chronos,layer,foreground] % \begin{scope}[on chronos foreground layer] % \node {Something};% above the main layer but behind chronos overlay. % \end{scope} % \end{chronoscode} % % \DescribeStyle{on chronos overlay layer}Apply to a \keyname[env,no link,no idx]{scope} to draw everything inside on \layerlabelname{} \keyname[type=layer]{chronos overlay}.\AfterLastParam % By default, \pkg{chronos} puts only debugging information on \keyname[type=layer]{chronos overlay}, which means drawing on this layer should always draw on top of anything constructed by the package code. % \begin{chronoscode}[on,chronos,layer,overlay] % \begin{scope}[on chronos overlay layer] % \node {Something over everything else.}; % \end{scope} % \end{chronoscode} % % In addition, \pkg{chronos} never puts anything on the non-chronos \pgf{}/\TikZ{} \keyname[type=layer,no link]{background} layer and it would be difficult to persuade it to do so without rewriting internal code. % Drawing on \emph{this} layer, therefore, is almost guaranteed to end up behind everything constructed by the package code\footnote{Unless nefarious \TeX{}nicians have interfered with your installation. % It is even quite unlikely a bug would cause this kind of problem, though bugs will doubtless cause many others.}. % \begin{chronoscode}[on,layer,background] % \begin{scope}[on background layer]% fill area below the timeline % \fill [blue!25!white] (chronos pre |- chronos bottom) rectangle (chronos post-foot); % \end{scope} % \end{chronoscode} % %^^A END sec:haenau-llunio % % \section{Externalising Chronos Timelines with Memoize}\label{sec:external-memoize} %^^A BEGIN sec:external-memoize % % As explained in \cref{sec:compat}, \keyname[type=env,idx post=cannot be externalised with \string\pkg{external}]{chronos} \conceptsname[no idx]{timeline} cannot be externalised with \pgf/\TikZ's \pkgname[type=lib,idx post=incompatibility]{external}. % Since \pgf/\TikZ{}, in general, and \pkg{chronos}, in particular, can be rather slow to compile, this is serious issue. % If you only have a two or three small \conceptsname[no idx]{timeline}, the compilation time will be negligible. % But if you have a large, densely packed \conceptname[no idx]{timeline} or many \conceptsname[no idx]{timeline}, compilation time will quickly become excessive. % % Fortunately, \keyname[type=env,idx post=externalisation with \string\pkg{memoize}]{chronos} \envslabelname{} \emph{can} be externalised. % Moreover, they can be externalised more conveniently, more robustly and more securely, without the need for a separate compilation for each \keyname[type=env,no idx]{chronos}. % This means compilation is only a little slower when the \conceptsname[no idx]{timeline} are being compiled (whereas compilation would be far slower with the \pkg{external} \liblabelname, even if it worked) and subsequent compilations are fast. % % Sašo Živanović's \pkgname{memoize} has no trouble compiling this documentation and externalising its \conceptsname[no idx]{timeline}. % \Pkgname[no idx]{memoize} is a little more trouble to set up initially than the \pkgname[type=lib,no link,idx post=cf.~\string\pkg{memoize}]{external} \liblabelname{}, but requires far less fine-tuning once configured. % % \emph{\bfseries To externalise \pkg{chronos} \conceptsname[no idx]{timeline}, you must first setup memoization as explained in \pkg{memoize}'s documentation\footnote{%^^A % By default, \pkg{memoize} uses \keyname[type=prog,no link]{perl} and requires the installation of a couple of libraries. % If you use Linux or have \keyname[type=prog,no link]{python} already installed, I'd recommend using this method as it requires only a single extra library, is faster and more robust. % If you do not wish to use either \keyname[conj=or,type=prog,no idx,no link]{perl,python}, you can use \TeX{}, but I have not personally tested this method as it is slower and less secure.}.} % % \Pkgname[idx post=memoize\string\textnormal{-ready},idx font post=\PkgFont]{chronos} supports automemoization out-of-the-box\footnote{%^^A % This fantastic feat was accomplished by copying a line of code from \pkg{memoize}'s manual and substituting \texttt{chronos} for the appropriate word. % Even I managed to achieve this without major incident.}: to enable automatic memoization of \keyname[type=env,idx post=enable automemoization]{chronos} \envslabelname{}, simply load \pkg{memoize} early in your preamble. % \Pkgname[no idx]{chronos} will then enable ‘automemoization’ for all \conceptsname[no idx]{timeline}\footnote{%^^A % Of course, memoization can be disabled permanently or temporarily for some or all \conceptsname[no idx]{timeline}. % See \pkg{memoize}'s documentation for details or look at the code for this document, which disables memoization for \cref{fig:chronos-dev} to prevent destruction of hyperlinks.}. % % All \chronosstyleslabelname{} (except default) and all \colschemeslabelname{} (except \keyname[type=colscheme,no link,idx post={modification will not cause \string\pkg{memoize} recompilation}]{default}) are defined so that modification will automatically trigger the recompilation of all \pkg{chronos} \conceptsname[link,no idx]{timeline} which use them. % %^^A END sec:external-memoize % % \section{Deferring Code}\label{sec:defer} %^^A BEGIN sec:defer % % \emph{If you don't know why you might want to use the \keyslabelname{} in this \namecref{sec:defer}, you don't need to use them.} % % \DescribeKey{timeline config,timeline config\textquotesingle,timeline config+}\valmarg{code}\AfterLastParam % Execute additional \meta{code} after \pkg{chronos} has processed the \keyslabelname{} at the start of the \enviro{chronos} environment, but before further processing the resulting configuration and constructing the \conceptname[idx post=additional configuration]{timeline}. % These \keyslabelname{} are provided primarily for use in \chronosstylelabelname{} definitions, but may occasionally be useful elsewhere. % \keyname{timeline config,timeline config+} add to the current code; \keyname{timeline config\textquotesingle} replaces it. % Note that \keyname[idx post=destructiveness]{timeline config\textquotesingle} is destructive: it obliterates any existing code \pkg{chronos} has installed, which may be entirely unrelated to the code now being stored. % \Conceptname[type=concept,idx post=authors should never use \string\textkey{timeline config\string\textquotesingle}]{chronos style} authors should never use this form. % Even if the code is for purely private use in a locked room with no internet access, you should stick to the additive forms unless your memory is infallible \emph{and} you always remember to use it. % %^^A END sec:defer % % \subsection{Additional \TikZ{}}\label{subsec:add-tikz} %^^A BEGIN subsec:add-tikz % % Generally, you can mix arbitrary \TikZ{} code freely into the body of the \keyname[no idx,type=env]{\enviro{chronos}} environment. % For example, this is how to add \conceptname[idx as=connection,idx post=adding between \string\textconcept{text tags}]{connections} between \conceptname[idx as=\meta{tag}/text tag,no idx]{text tags} or to decorate your \conceptname[no idx]{timeline} with symbols or ornaments. % % However, sometimes you might want to add something \emph{after} \keyname[no idx,type=env]{\enviro{chronos}} has finished. % You might, for example, want to do something after the \conceptname[no idx,link,link to=main/frame]{frame} is drawn or place something relative to \conceptname[conj=or,no idx]{headings,subheadings} % Two sets of \keyslabelname{} are provided for this purpose. % One set enable you to execute arbitrary \TikZ{} code within the picture's bounding box; the other enables you to do so outside. % Generally, it is the first set you will want to use; the second are useful in a narrower range of cases and for debugging purposes. % % \DescribeKey{chronos tikz\textquotesingle,chronos tikz,chronos tikz+}\valmarg{\TikZ{} commands}\AfterLastParam % Commands to execute after the \conceptname[no idx,link,type=concept]{\meta{timeline additions specification}} and any \conceptname[idx post=adding code after]{frame,headings,subheadings} are drawn, but before debugging information is added (see \cref{sec:dadfygio}). % \keyname[link,no idx]{chronos tikz,chronos tikz+} add to current material; \keyname[link,no idx]{chronos tikz\textquotesingle} replaces it. % Material added with these \keyslabelname{} is included in the final picture's bounding box. % If you draw outside the \conceptname[no idx,link,link to=main/frame]{frame} and \conceptname[idx pre=chronos tikz,idx font pre=\KeyFont,symbol=eg]{outer border}, for example, the final bounding box expands to accommodate it. % \emph{If you aren't sure which set of \keyslabelname{} to use, choose these.} % % \DescribeKey{chronos tikz outside bb\textquotesingle,chronos tikz outside bb,chronos tikz outside bb+}\valmarg{\TikZ{} commands}\AfterLastParam % Commands to execute after the \conceptname[no idx,link,type=concept]{\meta{timeline additions specification}} and any \conceptname[idx post=adding code after outside bounding box]{frame,headings,subheadings} are drawn, but before debugging information is added (see \cref{sec:dadfygio}). % \keyname[link,no idx]{chronos tikz outside bb,chronos tikz outside bb+} add to current material; \keyname[link,no idx]{chronos tikz outside bb\textquotesingle} replaces it. % Material added with these \keyslabelname{} is excluded when the final picture's bounding box is determined. % If you draw outside the \conceptname[no idx,link,link to=main/frame]{frame} and \conceptname[idx pre=chronos tikz outside bb,idx font pre=\KeyFont,symbol=eg]{outer border}, for example, \TeX{} will treat it as if it didn't exist and you will need to ensure adequate space is available to accommodate it manually. % \emph{If you aren't sure which set of \keyslabelname{} to use, avoid these.} % % Finally, you might want to add material at some specific point in the construction of the picture (e.g.~after \conceptsname[link,no idx]{heading} but before the \conceptname[link,no idx]{frame}). % The following sets of \keyslabelname{} facilitate such additions. % % \DescribeKey{before headings\textquotesingle,before headings,before headings+}\valmarg{\TikZ{} commands}\AfterLastParam % Commands to execute after the \conceptname[no idx,link,type=concept]{\meta{timeline additions specification}}, but before constructing any \conceptname[idx post=adding code before]{headings}. % \keyname[link,no idx]{before headings,before headings+} add to current material; \keyname[link,no idx]{before headings\textquotesingle} replaces it. % % \DescribeKey{before drawing frame\textquotesingle,before drawing frame,before drawing frame+}\valmarg{\TikZ{} commands}\AfterLastParam % Commands to execute after the \conceptname[no idx,link,type=concept]{\meta{timeline additions specification}} and any \conceptname[idx post=adding code after]{headings,subheadings} are drawn, but before constructing any \conceptname[idx post=adding code before]{frame}. % \keyname[link,no idx]{before drawing frame,before drawing frame+} add to current material; \keyname[link,no idx]{before drawing frame\textquotesingle} replaces it. % % %^^A END subsec:add-tikz % % \section{Custom Schemes and Styles}\label{sec:scheme-style-creation} %^^A BEGIN sec:scheme-style-creation % % The \macroslabelname{} and \keyslabelname{} explained in this \namecref{sec:scheme-style-creation} enable you to define custom \conceptname[type=colscheme,idx as=defining custom,font=\normalfont]{colour schemes} and \conceptname[type=chronosstyle,idx as=defining custom,font=\normalfont]{chronos styles}. % These may then be used in the same way as those provided by \pkg{chronos} (\cref{sec:schemes-styles}). % % \textbf{\emph{Customisation is a two-stage process. % \Chronosstyleslabelname{} should not define colours definable by \colschemeslabelname{}.}} % % \Colschemeslabelname{} are straightforward to define; \chronosstyleslabelname{} are a bit trickier. % % \subsection{Defining Chronos Colour Schemes}\label{subsec:chronos-scheme-creation}\chronosdochypertargets{concept}{}{chronos colour scheme} %^^A BEGIN subsec:chronos-scheme-creation % % As explained in \cref{subsec:chronos-schemes}, in addition to the default colours, \pkg{chronos} currently provides \keyname[type=colscheme,idx post=as instance of custom\string\idxeg]{blues,contninety,cronoleg,lavender,modern,offlinebasic,offlinealt,sobriety,xcolseries}\footnote{%^^A % Note that \keyname[no link,no idx]{xcolseries} uses the \texttt{hsb} colour model, which is not supported by \pgf/\TikZ{}. % If loading this set of colours directly, add \texttt{/utils/exec={\selectcolormodel{rgb}}} to \enviro{chronos}'s optional argument. % This is not necessary if loading a \conceptname[no idx,link,type=concept]{chronos style} which utilises \texttt{xcolseries}.% % In either case, all colours in the current \enviro{chronos} \envlabelname{} will be converted to \texttt{rgb}.%^^A % } (\cref{tab:colschemes}). % \keyname[type=colscheme,idx post=use of colour series]{xcolseries} demonstrates the use of \pkg{xcolor} colour series in \pkg{chronos} \collistslabelname{}. % \keyname[type=colscheme,idx post=as example of minimal modification to support \string\textsf{chronos styles}]{contninety,modern,offlinebasic,offlinealt} illustrate the use of \colschemeslabelname{} to support \chronosstyleslabelname{} which require minimal modifications of other \colschemeslabelname{}. % % New \colschemeslabelname{} should follow the examples in \pkg{chronos-lib-colschemes.sty}\footnote{%^^A % For historical reasons, \keyname[type=colscheme,idx post=implementation internal]{cronoleg} is non-standardly defined as it was the default scheme during most \pkg{chronos} development. % The current implementation of this scheme is officially internal. % The implementation --- as opposed to the scheme --- is highly likely to change in backwards-incompatible ways without notice. % This warning does not apply to \emph{usage} of the \colschemelabelname{}, but you should not take it as a model for a new scheme, except to pass it as an option to \keyname[type=macro]{\cs{chronosnewcolourscheme}}.}. % For instance, here's the code to set up \keyname[type=colscheme,idx post=definition]{blues}: % \begin{chronoscode} % \chronosnewcolourscheme{blues}{% chronos-lib-colschemes.sty % timeline foreground=DodgerBlue4, % timeline background=DodgerBlue2, % default below={Cerulean!50!DodgerBlue4,Cerulean!50!DodgerBlue3,Cerulean!50!DodgerBlue2,Cerulean!50!DodgerBlue1,Cerulean}, % default above={Cerulean!50!DodgerBlue4,Cerulean!50!DodgerBlue3,Cerulean!50!DodgerBlue2,Cerulean!50!DodgerBlue1,Cerulean}, % foreground=DodgerBlue4, % background=white, % } % \end{chronoscode} % This is intended for ‘off line’ \conceptname[idx as=timeline,idx post={absence of \string\textconcept{borders} in off-line}]{timelines} so it doesn't include colours for a \conceptname{timeline border}, though \pkg{chronos} will derive such colours anyway, as explained below. % % There are two pitfalls in defining a \colschemelabelname{}. % First, definitions cannot utilise other \pkg{chronos} colours at this stage. % You cannot, therefore, define the middle border colour, for example, in terms of the outer and inner colours. % % Second, scheme names must consist of letters only as they are used to create new \macroslabelname{}. % % \DescribeMacro{\chronosnewcolourscheme}\oarg{existing scheme}\marg{name}\marg{key-value list}\AfterLastParam % \DescribeMacro{\chronosnewcolorscheme}\oarg{existing scheme}\marg{name}\marg{key-value list}\AfterLastParam % If \meta{existing scheme} is specified, it should be the name of an existing \colschemelabelname{}; otherwise, a default set of colours is loaded. % \meta{name} is the name of the new \colschemelabelname{} and must be a unique string of alphabetic characters suitable for use in a \macrolabelname{} name. % \meta{key-value list} is a list of key-value pairs from the list in \cref{tab:colscheme}. % \begin{table} % \begin{adjustwidth}{-\tewadjust}{0pt} % \centering % \caption{Keys for \cs{chronosnewcolourscheme}. % Note that neither ‘colour’ nor ‘color’ appears in any \keylabelname{}.}\label{tab:colscheme} % \chronosdocidx[type=colscheme,font=\normalfont,idx post={options (summary)}]{creating} % \begin{tabularx}\linewidth{>{\ttfamily}ll>{\ttfamily\raggedright\arraybackslash}X} % \toprule % \sffamily Key & \sffamily Expected Argument Type & \sffamily Example \\\midrule % \hypertarget{colschemekey:foreground}{foreground} & \meta{colour name} & chronosblack \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@prifliw}{#1}} %^^A chronos main colour & % \hypertarget{colschemekey:background}{background} & \meta{colour name} & chronoswhite \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@prifliw@cefndir}{#1}} %^^A chronos main background colour & % \hypertarget{colschemekey:timeline-foreground}{timeline foreground} & \meta{colour name} & chronosCerulean \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@lliw@llinell}{#1}} %^^A chronos timeline foreground colour & % \hypertarget{colschemekey:timeline-background}{timeline background} & \meta{colour name} & chronosDodgerBlue4!50!chronosblack \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@lliw@cefndir@llinell}{#1}} %^^A chronos timeline background colour & % \hypertarget{colschemekey:timeline-border-outer}{timeline border outer} & \meta{colour name} & chronoswhite \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@borderouter}{#1}} %^^A timeline border outer colour & % \hypertarget{colschemekey:timeline-border-inner}{timeline border inner} & \meta{colour name} & chronosCerulean \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@borderinner}{#1}} %^^A timeline border inner colour & % \hypertarget{colschemekey:timeline-border-middle}{timeline border middle} & \meta{colour name} & chronosDodgerBlue4!50!chronosblack \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@bordermiddle}{#1}} %^^A timeline border middle colour & % \cmidrule(lr){1-3} % \hypertarget{colschemekey:life/default}{life/default} & \meta{colour name} & chronosDodgerBlue4 \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@byw@lliw@rhagosodedig}{#1}} %^^A life/default colour & % \hypertarget{colschemekey:event/default}{event/default} & \meta{colour name} & chronosDodgerBlue4 \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@digwyddiad@lliw@rhagosodedig}{#1}} %^^A event/default colour & % \hypertarget{colschemekey:period/default}{period/default} & \meta{colour name} & chronosDodgerBlue4 \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@parhad@lliw@rhagosodedig}{#1}} %^^A period/default colour & % \hypertarget{colschemekey:theory/default}{theory/default} & \meta{colour name} & chronosDodgerBlue4 \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@theori@lliw@rhagosodedig}{#1}} %^^A theory/default colour & % \hypertarget{colschemekey:info/default}{info/default} & \meta{colour name} & chronosDodgerBlue4 \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@gwybodaeth@lliw@rhagosodedig}{#1}} %^^A info/default colour & % \cmidrule(lr){1-3} % \hypertarget{colschemekey:default-above}{default above} & \meta{list of colour names} & chronosRed, chronosOrange, chronosYellow, chronosGreen, chronosBlue, chronosMidnightBlue, chronosViolet \\ %^^A \g__chronos_lliwiau_uchod_clist %^^A colours above & % \hypertarget{colschemekey:default-below}{default below} & \meta{list of colour names} & chronosCerulean!50!chronosDodgerBlue4, chronosCerulean!50!chronosDodgerBlue3, chronosCerulean!50!chronosDodgerBlue2, chronosCerulean!50!chronosDodgerBlue1, chronosCerulean \\ %^^A \g__chronos_lliwiau_isod_clist %^^A colours below & % \hypertarget{colschemekey:life/above}{life/above} & \meta{list of colour names} & chronosDeepPink2, chronosDarkOrange1, chronosFirebrick1, chronosPurple0, chronosWildStrawberry, chronosOrangeRed1, chronosDarkGoldenrod1, chronosDarkOrchid3 \\ %^^A \g__chronos_lliwiau_byw_uchod_clist %^^A life/colours above & % \hypertarget{colschemekey:life/below}{life/below} & \meta{list of colour names} & chronosDodgerBlue3, chronosGreen3, chronosBlue3, chronosSpringGreen4, chronosDeepSkyBlue2, chronosForestGreen, chronosPeriwinkle, chronosSeaGreen3 \\ %^^A \g__chronos_lliwiau_byw_isod_clist %^^A life/colours below & % \hypertarget{colschemekey:event/above}{event/above} & \meta{list of colour names} & chronosThistle4, chronosThistle4!.5!chronosThistle3, chronosThistle3, chronosThistle3!.5!chronosThistle2, chronosThistle2 \\ %^^A \g__chronos_lliwiau_digwyddiad_uchod_clist %^^A event/colours above & % \hypertarget{colschemekey:event/below}{event/below} & \meta{list of colour names} & chronosSeashell4, chronosSeashell4!.5!chronosSeashell3, chronosSeashell3, chronosSeashell3!.5!chronosSeashell2, chronosSeashell2 \\ %^^A \g__chronos_lliwiau_digwyddiad_isod_clist %^^A event/colours below & % \hypertarget{colschemekey:period/above}{period/above} & \meta{list of colour names} & chronosMistyRose4, chronosMistyRose4!.5!chronosMistyRose3, chronosMistyRose3, chronosMistyRose3!.5!chronosMistyRose2, chronosMistyRose2 \\ %^^A \g__chronos_lliwiau_parhad_uchod_clist %^^A period/colours above & % \hypertarget{colschemekey:period/below}{period/below} & \meta{list of colour names} & chronosIvory4, chronosIvory4!.5!chronosIvory3, chronosIvory3, chronosIvory3!.5!chronosIvory2, chronosIvory2 \\ %^^A \g__chronos_lliwiau_parhad_isod_clist %^^A period/colours below & % \hypertarget{colschemekey:theory/above}{theory/above} & \meta{list of colour names} & xcolor s2!![0],xcolor s2!![1],xcolor s2!![2],xcolor s2!![3],xcolor s2!![4],xcolor s2!![5],xcolor s2!![6],xcolor s2!![7],xcolor s2!![8],xcolor s2!![9],xcolor s2!![10],xcolor s2!![11], xcolor s2!![12],xcolor s2!![13],xcolor s2!![14],xcolor s2!![15] \\ %^^A \g__xcolor_lliwiau_theori_uchod_clist %^^A theory/colours above & % \hypertarget{colschemekey:theory/below}{theory/below} & \meta{list of colour names} & xcolor g2!![0],xcolor g2!![1],xcolor g2!![2],xcolor g2!![3],xcolor g2!![4],xcolor g2!![5],xcolor g2!![6],xcolor g2!![7],xcolor g2!![8],xcolor g2!![9],xcolor g2!![10],xcolor g2!![11],xcolor g2!![12],xcolor g2!![13],xcolor g2!![14],xcolor g2!![15] \\ %^^A \g__xcolor_lliwiau_theori_isod_clist %^^A theory/colours below & % \bottomrule % \end{tabularx} % \end{adjustwidth} % \end{table} % % Schemes need not use all \keyslabelname{}\footnote{%^^A % In fact, they need not use any, though a \colschemelabelname{} which uses none would serve no purpose.}. % It is sufficient to specify the required deviations from \meta{existing scheme}. % For example, here's the code to set up \keyname[type=colscheme,idx post=sufficient to define deviations from \string\meta{existing scheme}]{offlinealt}, % \begin{chronoscode} % \chronosnewcolourscheme[cronoleg]{offlinealt}{% % timeline foreground=blue!40, % } % \end{chronoscode} % % \subsubsection{How Colour Schemes are Processed}\label{subsubsec:colscheme-process} %^^A BEGIN subsubsec:colscheme-process % % When a \colschemelabelname{} is loaded, \pkg{chronos} processes the settings in six stages. % \begin{enumerate} % \item The specified \meta{existing scheme} or defaults are loaded. % \item \Keyslabelname{} for the ‘core’ \colourslabelname{} \keyname[type=colschemekey,idx pre=processing]{foreground,background} are set and flipped to provide default settings for the ‘core derivative’ \colourslabelname{} \keyname[type=colschemekey,idx post=colour derivation]{timeline foreground,timeline background}. % \item \Keyslabelname{} for the ‘core derivative’ \colourslabelname{} \keyname[type=colschemekey,idx pre=processing]{timeline foreground,timeline background} are set and the resulting four \colourslabelname{} used to derive default settings for the ‘core border’ \colourslabelname{} \keyname[type=colschemekey,idx post=colour derivation]{timeline border inner,timeline border middle,timeline border outer}. % In particular, \keyname[type=colschemekey,no idx]{timeline border inner} is set to match \keyname[type=colschemekey,no idx]{timeline background}, \keyname[type=colschemekey,no idx]{timeline border outer} is set to \keyname[type=colschemekey,no idx]{background} and \keyname[type=colschemekey,no idx]{timeline border middle} is set to a 50-50 mix of the two. % \item \Keyslabelname{} for the ‘core border’ \colourslabelname{} \keyname[type=colschemekey,idx pre=processing]{timeline border inner,timeline border middle,timeline border outer} are set. % The main \keyname[type=colschemekey,no idx]{foreground} \colourlabelname{} is assigned to the ‘elemental’ default \colourslabelname{} \keyname[type=colschemekey,idx post=colour derivation]{life/default,event/default,period/default,theory/default,info/default}. % \item \Keyslabelname{} for the ‘elemental’ default \colourslabelname{} \keyname[type=colschemekey,idx pre=processing]{life/default,event/default,period/default,theory/default} are set. % \item \emph{Much later}, after the user configuration for the \enviro{chronos} \envlabelname{} has been read, \pkg{chronos} potentially flips the ‘core derivative’ \colourslabelname{} \keyname[type=colschemekey,idx pre=processing (delayed)]{timeline foreground,timeline background}. % See \cref{subsec:chronos-style-creation}. % \end{enumerate} % % Only after this sixth stage are the ‘public’ names listed in \cref{tab:colnames} assigned to the final set of \colschemelabelname{}-definable \colourslabelname{}. % %^^A END subsubsec:colscheme-process % % %^^A END subsec:chronos-scheme-creation % % \subsection{Defining Chronos Styles}\label{subsec:chronos-style-creation}\chronosdochypertargets{concept}{}{chronos style} %^^A BEGIN subsec:chronos-style-creation % % The current method for creating \conceptsname[type=chronosstyle,idx as=defining custom,font=\normalfont]{chronos style} is straightforward in theory, but potentially hazardous in practice. % Here's an example from \pkg{chronos-lib-styles.sty}. % \begin{chronoscode} % \pgfqkeys{/chronos}{% % blues below/.style={% % /chronos/.cd, % blues below/.meaning to context, % colour scheme=blues, % rotate all colours, % timeline={% % timeline years=above, % timeline marks, % timeline minor marks, % step minor year=50, % step divisions=10, % step major year=100, % dates=1550:2050, % timeline height'=3pt, % timeline line={chronos timeline foreground colour,double=chronos timeline background colour,line width=\timelineht/3,double distance=\timelineht/3}, % timeline arrow, % conditional timeline arrow={% % timeline/timeline line+={Bar-Latex,shorten <=-\timelineht/3,shorten >=-3pt-2.1\timelineht}, % timeline/timeline width-={3pt+2.43\timelineht}, % before headings+={\path (chronos post) -- ++(3pt+2.1\timelineht,0pt) (chronos pre) -- ++(-\timelineht/3,0pt);}, % }{}, % timeline mark={chronos timeline foreground colour,line width=.6pt,shorten >=-4pt}, % timeline minor mark={chronos timeline foreground colour,line width=.5pt,shorten >=-3.5pt}, % timeline bare mark={chronos timeline foreground colour,line width=.3pt,shorten >=-2.5pt}, % timeline year={fill=none,text=chronos timeline foreground colour,rotate around={45:(chronos year \chronosyeari |- chronos top)}}, % major step font=\sffamily\footnotesize\tlstyle, % timeline years anchor=south west, % minor step font=\sffamily\scriptsize\tlstyle, % timeline margin'=17.5pt, % }, % minor year format={!Y}, % every event below, % every life below, % every period below, % levels=0:3, % headings style+={text=chronos main colour!75!chronos main background colour,font=\small\itshape\bfseries}, % subheadings style+={text=chronos main colour!75!chronos main background colour,font=\footnotesize\itshape}, % main/title+={font=\LARGE,text=chronos timeline foreground colour,draw=chronos timeline background colour,semithick}, % main/frame+={thick,draw,chronos timeline foreground colour,double=chronos timeline background colour}, % copyright={font=\footnotesize\sffamily, inner sep=0pt, outer sep=0pt, text=chronos timeline foreground colour!50!chronos main background colour}, % copyright/rotate=90, % copyright/tag anchor=north west, % }, % } % \end{chronoscode} % This definition is chosen because it is one of the most technically complex examples. % This complexity is a function of several factors: it uses \emph{off-line} years; the year labels are rotated; the line involves two arrow tips; and the line is drawn with \texttt{double}. % % Note the following: % \begin{enumerate} % \item\label{item:col-use} colours listed in \cref{tab:colscheme} are used but not defined; % \item\label{item:custom-col} instead, a custom colour configuration is set by loading an appropriate \colschemelabelname{}; % \item\label{item:weird-i} there is a weird looking \keyname[type=macro,idx post=use in \string\textkey{blues below}]{\cs{chronosyeari}} in the definition of \keyname[link prefix=timeline/,idx as=timeline/timeline year]{timeline year}; % \item\label{item:timeline-arrow} \keyname[type=boolkey,idx post=use in \string\textkey{blues below}\string\idxeg]{timeline/timeline arrow} and \keyname[idx post=use in \string\textkey{blues below}\string\idxeg]{timeline/conditional timeline arrow} enables use of arrow tips to be toggled off; % \item\label{item:def-dyddiadau} \keyname[type=datekey,no idx]{dates} are defined, even though they are almost certainly wrong in most cases; % \item\label{item:meaning2context} \keyname[no link,type=keyhandler,idx post=use in \string\texttt{blues below}\string\idxeg]{.meaning to context} is used, even though the user might not have loaded \pkg{memoize}, which defines it. % \item\label{item:tlstyle} some fonts use a non-standard command \cs{tlstyle}. % \end{enumerate} % % \Cref{item:tlstyle} need not concern us here. % If certain packages are loaded, it ensures tabular, lining figures; if not, \pkg{chronos} provides a command with this name at the end of the preamble by simply \cs{let}ting it to \cs{upshape}. % % Regarding \cref{item:def-dyddiadau}, the standard \chronosstyleslabelname{} all define \keyname[type=datekey,idx post=whether to define in \string\textsf{chronos styles}]{dates}, but whether they should do so is another question. % On the one hand, if they are not defined (as they are not if no \chronosstylelabelname{} is loaded), \pkg{chronos} will generate an error, alerting the user to the deficiency. % Since it is highly unlikely any default choice will suit any user, let alone most of them, an error might be considered appropriate. % On the other hand, some \chronosstyleslabelname{} are far more suitable for some temporal ranges than others. % For example, consider this excerpt from the definition of \keyname[type=chronosstyle,idx post=suitability for temporal ranges of]{contemporary 90}: % \begin{chronoscode} % timeline={% % timeline marks, % timeline minor marks, % timeline mark={ultra thick}, % timeline minor mark={thick}, % step divisions=4, % step major years=2, % }, % \end{chronoscode} % This is fine for a \conceptname[no idx]{timeline} of a decade or two, but quite unsuitable for one representing either the period 3,000\,\bce{}--2025\,\ce{} or the first half of 1857. % While a user can always modify these settings, along with the \keyname[type=datekey,no idx]{dates}, a default range provides a sense of the temporal duration the \chronosstylelabelname{} is suitable for ‘out-of-the-box’. % % The author of this package has found a comfortable spot on a convenient fence and intends to stay there, whatever the provided \chronosstyleslabelname{} might suggest. % The reader is warned to make the most of the fences available here, as there are none whatsoever in the next \namecref{subsubsec:custom-styles-colours}. % % \subsubsection{How (Not) to Customise Colours}\label{subsubsec:custom-styles-colours} %^^A BEGIN subsubsec:custom-styles-colours % % \Cref{item:col-use,item:custom-col} are the most important. % \textbf{\emph{\Chronosstyleslabelname{} \emph{MUST NOT} set core, core derivative or core border colours,} where ‘core, core derivative and core border colours’ refer to those listed in \cref{tab:colscheme,tab:colnames}.} % In many cases, violating this rule may appear to work, but in others doing so will produce weird results or errors. % \begin{table} % \centering % \mmzset{disable}%^^A % \caption{Keys and names for \pkg{chronos} colours. % Note that neither ‘colour’ nor ‘color’ appears in any \keylabelname{} in the first column, but in every key in the second. % In the second column, ‘color’ may be substituted for ‘colour’ in any name.}\label{tab:colnames} % \chronosdocidx[type=colscheme,font=\normalfont,target]{colour names}%^^A %^^A \chronosdochypertargets{colour}{}{core,core derivative,core border}% % \chronosdocidx[type=colour,font=\ConceptFont,target]{core,core derivative,core border,elemental}%^^A % \begin{tabular}{>{\ttfamily}l>{\ttfamily}l} % \toprule\tikzmark{colnames-pen}%^^A memoization aborted % \tikzmark{colnames-a}\sffamily Colour Schemes Key & \sffamily Later Accessible As \\\midrule % \tikzmark{colnames-b}%^^A % \keyname[type=colschemekey]{foreground} & \chronosdochypertargets*{colour}{}{chronos main colour,chronos main color} \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@prifliw}{#1}} %^^A chronos main colour & % \keyname[type=colschemekey]{background} & \chronosdochypertargets*{colour}{}{chronos main background colour,chronos main background color} \tikzmark{colnames-c}\\ %^^A {\__chronos_color_set_from_existing:nn {chronos@prifliw@cefndir}{#1}} %^^A chronos main background colour & % \cmidrule(lr){1-2} % \tikzmark{colnames-d}%^^A % \keyname[type=colschemekey]{timeline foreground} & \chronosdochypertargets*{colour}{}{chronos timeline foreground colour,chronos timeline foreground color} \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@lliw@llinell}{#1}} %^^A chronos timeline foreground colour & % \keyname[type=colschemekey]{timeline background} & \chronosdochypertargets*{colour}{}{chronos timeline background colour,chronos timeline background color} \tikzmark{colnames-e}\\ %^^A {\__chronos_color_set_from_existing:nn {chronos@lliw@cefndir@llinell}{#1}} %^^A chronos timeline background colour & % \cmidrule(lr){1-2} % \tikzmark{colnames-f}%^^A % \keyname[type=colschemekey]{timeline border outer} & \chronosdochypertargets*{colour}{}{chronos timeline border outer colour,chronos timeline border outer color} \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@borderouter}{#1}} %^^A timeline border outer colour & % \keyname[type=colschemekey]{timeline border inner} & \chronosdochypertargets*{colour}{}{chronos timeline border inner colour,chronos timeline border inner color} \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@borderinner}{#1}} %^^A timeline border inner colour & % \keyname[type=colschemekey]{timeline border middle} & \chronosdochypertargets*{colour}{}{chronos timeline border middle colour,chronos timeline border middle color} \tikzmark{colnames-g}\\ %^^A {\__chronos_color_set_from_existing:nn {chronos@bordermiddle}{#1}} %^^A timeline border middle colour & % \cmidrule(lr){1-2} % \tikzmark{colnames-h}%^^A % \keyname[type=colschemekey]{life/default} & \fycross{} \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@byw@lliw@rhagosodedig}{#1}} %^^A life/default colour & % \keyname[type=colschemekey]{event/default} & \fycross{} \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@digwyddiad@lliw@rhagosodedig}{#1}} %^^A event/default colour & % \keyname[type=colschemekey]{period/default} & \fycross{} \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@parhad@lliw@rhagosodedig}{#1}} %^^A period/default colour & % \keyname[type=colschemekey]{theory/default} & \fycross{} \\ %^^A {\__chronos_color_set_from_existing:nn {chronos@theori@lliw@rhagosodedig}{#1}} %^^A theory/default colour & % \keyname[type=colschemekey]{info/default} & \fycross{} \tikzmark{colnames-i}\\ %^^A {\__chronos_color_set_from_existing:nn {chronos@gwybodaeth@lliw@rhagosodedig}{#1}} %^^A info/default colour & % \cmidrule(lr){1-2} % \tikzmark{colnames-j}%^^A % \keyname[type=colschemekey]{default above} & \fycross{} \\ %^^A \g__chronos_lliwiau_uchod_clist %^^A colours above & % \keyname[type=colschemekey]{default below} & \fycross{} \\ %^^A \g__chronos_lliwiau_isod_clist %^^A colours below & % \keyname[type=colschemekey]{life/above} & \fycross{} \\ %^^A \g__chronos_lliwiau_byw_uchod_clist %^^A life/colours above & % \keyname[type=colschemekey]{life/below} & \fycross{} \\ %^^A \g__chronos_lliwiau_byw_isod_clist %^^A life/colours below & % \keyname[type=colschemekey]{event/above} & \fycross{} \\ %^^A \g__chronos_lliwiau_digwyddiad_uchod_clist %^^A event/colours above & % \keyname[type=colschemekey]{event/below} & \fycross{} \\ %^^A \g__chronos_lliwiau_digwyddiad_isod_clist %^^A event/colours below & % \keyname[type=colschemekey]{period/above} & \fycross{} \\ %^^A \g__chronos_lliwiau_parhad_uchod_clist %^^A period/colours above & % \keyname[type=colschemekey]{period/below} & \fycross{} \\ %^^A \g__chronos_lliwiau_parhad_isod_clist %^^A period/colours below & % \keyname[type=colschemekey]{theory/above} & \fycross{} \\ %^^A \g__chronos_lliwiau_theori_uchod_clist %^^A theory/colours above & % \keyname[type=colschemekey]{theory/below} & \fycross{}\tikzmark{colnames-k} \\ %^^A \g__chronos_lliwiau_theori_isod_clist %^^A theory/colours below & % \bottomrule % \end{tabular}\tikzmark{colnames-de} % \begin{tikzpicture}[remember picture,overlay,decoration={brace,mirror,amplitude=5},every node/.style={font=\sffamily}] % \foreach \i in {a,b,...,k} \coordinate (c\i) at (pic cs:colnames-\i); % \foreach \i/\j in {a/b,c/d,d/e,e/f/,f/g,g/h,h/i,i/j,j/k} % \coordinate (c\i\j) at ($(pic cs:colnames-\i)!0.5!(pic cs:colnames-\j)$); % \path (cab) ++(-5pt,0pt) coordinate (ch); % \foreach \i/\j/\k in {ab/c/core,cd/e/{core\\derivative},ef/g/{core\\border},gh/i/{default\\colours},ij/k/colour\\lists} % \draw [decorate] (c\i -| ch) -- (c\j -| ch) node [midway,align=right,anchor=east,xshift=-5pt,name=n\i\j] {\k} ; % \coordinate (ch2) at (ncde.west); % \draw [decorate] ([yshift=1.5pt]{ch2 |- cgh}) -- ([yshift=-1.5pt]{ch2 |- ck}) coordinate [midway,xshift=-5pt] (nghk) ; % \foreach \i/\j/\k in {g/ab/{C\\O\\R\\E}} \draw [decorate] ([yshift=-1.5pt]{{pic cs:colnames-de} |- c\i}) -- ([yshift=1.5pt]{{pic cs:colnames-de} |- c\j}) node [midway,align=center,anchor=west,xshift=5pt,name=core2,font=\sffamily\bfseries\Large] {\k} ; % \foreach \i/\j/\k/\l in {ab/g/{C\\O\\R\\E}/core1,gh/k/{E\\L\\E\\M\\E\\N\\T\\A\\L}/ele} \draw [decorate] ([yshift=1.5pt]{ch2 |- c\i}) -- ([yshift=-1.5pt]{ch2 |- c\j}) node [midway,align=center,anchor=east,xshift=-5pt,name=\l,font=\sffamily\bfseries\Large] {\k} ; % \node [left=5pt of core1.west,align=right,anchor=east,name=mnd] {MUST\\NOT\\define!}; % \node [align=right,anchor=east] at (mnd.east |- nghk) {Should\\NOT\\touch!}; % \end{tikzpicture} % \end{table} % % Moreover, \textbf{\emph{\chronosstyleslabelname{} \emph{should not} set any other \conceptname[type=colkey,no link,idx as=should not be set by,font=\normalfont]{\colkeylabelname{}} or \conceptname[type=collist,idx as=should not be set by,font=\normalfont,no link]{\collistlabelname{}} directly}}. % In many cases, violating this rule may appear to work, but in others doing so will cause things not to work as expected. % % To summarise, \textbf{\emph{if it \emph{can} be done by a \conceptname[type=colscheme,no idx,no link]{\colschemelabelname{}}, it \emph{should} be done by a \conceptname[type=colscheme,no idx,no link]{\colschemelabelname{}}}\footnote{%^^A % That is, ‘can implies ought’.}}. % % The reason for this restriction is that the colours are not finalised and the public colour names are not defined when the \colschemelabelname{} and/or \chronosstylelabelname{} are read. % Initially, \pkg{chronos} assigns colours only to internal names. % When the user configuration in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} has been read, \pkg{chronos} starts the \enviro{tikzpicture} \envlabelname{} and further processes the configuration before drawing the \conceptname[idx post={configuration, further processing}]{timeline}. % As part of this processing, \pkg{chronos} makes changes to colours in specified circumstances. % % In particular, the colours assigned to the \conceptname[idx post={colours, further processing changes}]{timeline} foreground and background are switched if three conditions are satisfied. % \begin{enumerate} % \item The internal colour names for \keyname[type=colour]{chronos timeline foreground colour,chronos timeline background colour} evaluate to the same colour specification. % \item One of the specifications is identical to the colour specification for \keyname[type=colour,no link]{white}. % \item\label{condition:off-line} \keyname[type=choice,idx as=timeline/timeline years,link prefix=timeline/,link]{timeline years} is not \texttt{on line}. % \end{enumerate} % Condition \labelcref{condition:off-line} cannot be determined until the complete configuration has been read. % In particular, it is not known when \colschemeslabelname{} and \chronosstyleslabelname{} are read. % While it is recommended users select a \chronosstylelabelname{} congruent with their preferred setting for \keyname[type=choice,idx as=timeline/timeline years,link prefix=timeline/,link,no idx]{timeline years}, this is intended to make configuration easier and is not a requirement. % % Only \emph{after} colours are potentially switched are the public names listed in \cref{tab:colnames} assigned, long after \conceptname[type=colscheme,idx as=colour scheme,no idx]{colour schemes} and \conceptname[type=chronosstyle,idx as=chronos style,no idx]{chronos styles} have been read. % % It is nonetheless possible, indeed recommended, to \emph{use} the public names in \chronosstyleslabelname{}, though they cannot be used in \colschemeslabelname{}. % It is only \emph{defining} them at this stage which is problematic. % % Here is an example from the definition of \keyname[type=chronosstyle,idx post=use of public colour names in]{modern} in \pkgname[no link]{chronos-lib-styles}: % \cywir\begin{chronoscode} % timeline line={chronos timeline background colour, opacity=1}, % period/line={fill=chronos timeline foreground colour, blend mode=overlay}, % life/line={fill=chronos timeline foreground colour, blend mode=overlay}, % event/line={draw=chronos timeline foreground colour, thick, blend mode=overlay}, % every text tags={fill=chronos main background colour, text=####1, fill opacity=.75, text opacity=1, draw=none, rounded corners, align=center, font=\sffamily\footnotesize}, % \end{chronoscode} % This is perfectly proper\footnote{%^^A % At least, it is fine as far as \pkg{chronos} goes. Whether it is proper \TikZ{} code is not for me to judge.}. % However, if you were to include something such as % \anghywir\begin{chronoscode} % timeline border middle colour=chronos timeline border inner colour!50!chronos timeline border outer colour, % \end{chronoscode} % you would get an error complaining about the use of undefined colours. % The definition of \keyname[type=colkey,link,link prefix=timeline/,idx as=timeline/timeline border middle colour,idx post=illegitimacy of definition in \string\textconcept{chronos style}\string\idxeg]{timeline border middle colour} is the prerogative of the \colschemelabelname{} and shouldn't feature in a \chronosstylelabelname{} at all, but this particular definition is illegitimate in any case because neither \keyname[type=colour,conj=nor,link]{chronos timeline border inner colour,chronos timeline border outer colour} yet exists. % % But why shouldn't \chronosstyleslabelname{} include colour definitions of the kind permitted in \colschemeslabelname{}? % Because \pkg{chronos} processes the definitions in \colschemeslabelname{} as they are read (\cref{subsubsec:colscheme-process}). % If you put % \anghywir\begin{chronoscode} % foreground=SlateBlue4, % background=Snow1, % \end{chronoscode} % in a \chronosstylelabelname{}, \emph{only} these colours will be set. % In particular, neither the \conceptname[idx post={colours, reason not to set in \string\textconcept{chronos style}}]{timeline} nor any default colours will be affected at all. % But if you put this into a \colschemelabelname{}, \pkg{chronos} will derive colours for the \conceptname[idx post={colours for, derivation of}]{timeline} and set default colours for \elementslabelname{} belonging to the various \tagslabelname{}. % If no other changes are made, the result will be a white-on-blue \conceptname[no idx]{timeline} with blue-to-white \conceptname[idx as=timeline border]{timeline borders} and blue as the fallback colour for \conceptname[type=concept,idx post={fallback colour, problems}]{tag} \elementslabelname{}. % (This is probably wrong for \texttt{off line} and \pkg{chronos} won't correct you because \texttt{Snow1} isn't exactly \texttt{white}, but that's why \colschemeslabelname{} should do either a bit more or a bit less than this.) % % If you wish, your \chronosstylelabelname{} can load a \colschemelabelname{} of its own. % This is what many of the standard \conceptname[type=chronosstyle,idx as=loading a \string\textsf{colour scheme},font=\normalfont]{\chronosstyleslabelname} do. % For instance, here is the sum total of \keyname[type=chronosstyle,idx post=use of custom \string\textsf{colour scheme} in]{modern}'s \keyname[type=colscheme,link,no idx]{modern} \colschemelabelname{}, % \cywir\begin{chronoscode} % \chronosnewcolourscheme{modern}{% % timeline foreground=chronosSilver, % } % \end{chronoscode} % %^^A END subsubsec:custom-styles-colours % % \subsubsection{How to Rotate Years}\label{subsubsec:rotate-years} %^^A BEGIN subsubsec:rotate-years % % \Cref{item:weird-i} is a function of this style's rotation of the year labels created for the \conceptname[idx post=weird \string\texttt{\string\cs{chronosyeari}} in \string\textconcept{chronos style}]{timeline}. % The easiest way to do this is to \texttt{rotate around} one of the anchors belonging to the node containing the relevant year. % Obviously, we can't do this for each node. % We don't know how many there are or what they are named. % Instead, we need a hook into the \cs{foreach} loop \pkg{chronos} uses when creating the year labels. % % \DescribeMacro{\chronosyeari} refers to the current \conceptname{year} \emph{inside the \cs{foreach} loop used to mark years on the \conceptname[link,no idx]{timeline}}. % \texttt{(chronos year \cs{chronosyeari})} isn't actually the node, but the point representing the date on the \conceptname[idx post=chronos year \string\cs{chronosyeari},idx font post=\KeyFont]{timeline}, but the node starts there, so we can use it provided \keyname[link prefix=timeline/,idx as=timeline/timeline years anchor]{timeline years anchor} is set appropriately. % \begin{chronoscode} % timeline year={rotate around={45:(chronos year \chronosyeari |- chronos top)}}, % timeline years anchor=south west, % \end{chronoscode} % %^^A END subsubsec:rotate-years % % \subsubsection{Hashes}\label{subsubsec:hashes}\chronosdocidx{\string\verb*\verbatimchar\string#\verbatimchar\string\space (hash)}\chronosdocidx[font=\normalfont]{hash (\string\verb*\verbatimchar\string#\verbatimchar )} %^^A BEGIN subsubsec:hashes % % You may have noticed the following line in the excerpt from \keyname[type=chronosstyle,link,idx post=quadrupling of hashes in]{modern}'s definition above. % \begin{chronoscode} % every text tags={fill=chronos main background colour, text=####1, fill opacity=.75, text opacity=1, draw=none, rounded corners, align=center, font=\sffamily\footnotesize}, % \end{chronoscode} % Anywhere you'd normally use a single hash (e.g.~\#1) in defining a \TikZ{} \stylelabelname{}, you need two (\#\#1) because you're nesting that definition within the definition of another \stylelabelname{}. % So it is not surprising to find lines such as % \begin{chronoscode} % connections={draw=##1, {Triangle[width=0pt 3,reversed,length=0pt 1.5]}-{Triangle[width=0pt 5,reversed,length=0pt 2.5]}}, % \end{chronoscode} % in \keyname[type=chronosstyle,link,no idx]{modern}'s definition, but why \emph{four}? % % Certain \keyslabelname{} require one or more additional doublings of hashes. % Anytime you use an \texttt{every} \keylabelname{}, you need to double. % Double double makes four, so we get \texttt{text=\#\#\#\#1}\footnote{%^^A % For real fun with hashes, may I recommend \pkg{chronos} or \pkg{forest}?}. % % % Elsewhere, a single doubling is generally sufficient, as shown in these lines from the definition of \keyname[type=chronosstyle,link,idx post=doubling of hashes in]{plain arrow} % \begin{chronoscode} % period/line+={line width=2pt,draw=##1}, % life/line+={line width=2pt,draw=##1}, % \end{chronoscode} % Incidentally, \pgf{} doesn't complain if you quadruple the hashes here, though it does so if you make the same mistake elsewhere. % So silence does not always indicate correctness. % This is important if you're debugging: don't assume because a pattern generates no error in one case, it cannot be the source of an error in another. % % Note also that if you say % \anghywir\begin{codchronos} % text tags={draw=####1,sharp corners,text opacity=1,fill opacity=1,draw opacity=1,drop shadow}, % \end{codchronos} % \TeX{} will give you an error suggesting you haven't used \emph{enough} hashes, % \iffalse %<*verb> % \fi \begin{verbatim} ! Illegal parameter number in definition of \tikz@temp. 1 l.113 ] ? h You meant to type ## instead of #, right? Or maybe a } was forgotten somewhere earlier, and things are all screwed up? I'm going to assume that you meant ##. ? \end{verbatim} % \iffalse % % \fi % If you double the hashes \emph{again} (\texttt{\#\#\#\#\#\#\#\#1}), you'll get the same error. % The actual problem is that you've used too many. % \cywir\begin{chronoscode} % text tags={draw=##1,sharp corners,text opacity=1,fill opacity=1,draw opacity=1,drop shadow}, % \end{chronoscode} % is correct in a \chronosstylelabelname{} definition i.e.~twice the number required in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}}. % If you reduce the hashes to one (\texttt{\#1}), you'll get no error but the wrong output as the \elementlabelname{}'s colour won't be used. % % \textbf{\emph{Despite this, \chronosstyleslabelname{} should always use \pkg{chronos} \keyslabelname{} and hashes for colours.}} % % Hashes are essential for two reasons. % \begin{enumerate} % \item Hard-coding colours breaks \conceptname[type=concept,link,idx post=breaking]{colour rotation}. % In order for colours to be not just assigned in rotation, but used for the \elementslabelname{} they are assigned to, \chronosstylelabelname{} definitions must use the colour names passed to them. % So hashes are essential when defining the properties of \conceptname[type=concept,idx post=hashes essential]{tag} \elementslabelname{} subject to \conceptname[type=concept,link,idx post=hashes essential]{colour rotation}. % \item \textbf{\emph{\Pkg{chronos} cannot track colours it doesn't know about and it doesn't know about colours passed directly to \pgf/\TikZ{} \keyslabelname{}.}} % Hard-coding colours breaks the system of colour names \pkgname[no link,idx post=incorrect assignment of colour names]{chronos} provides. % \Pkg{chronos} will assign colour names to colours regardless, but the names will not refer to the colours actually used. % They will merely refer to the colours assigned. % \Chronosstyleslabelname{} are responsible for ensuring assigned colours are used so \pkg{chronos} colour names work correctly. % Suppose a \chronosstylelabelname{} includes \texttt{event/text tag+=\{text=red\},event/connection+=\{draw=red\}}. % \Pkg{chronos} will keep assigning colours to \elementslabelname{} of \conceptname[type=concept,link,no idx]{tag} type \conceptname[type=tag,idx post=colour rotation,idx font post=\ConceptFont]{event}, but it will not assign ‘red’ except by happy chance. % \Example{\bs draw [chronos connect=period:red letter day] \dots{}} % will still work, but may well use black or navy blue rather than the pillar box red expected. % Since this referencing system works for some \elementslabelname{} not subject to \conceptname[type=concept,link,no idx]{colour rotation} at all, such as those belonging to \conceptname[type=concept,link,no idx]{tag} \conceptname[type=tag,idx post=as case of colour assignment without \string\textconcept{colour rotation}]{info} and applies even when \conceptname[type=concept,link,no idx]{colour rotation} is disabled completely, it constitutes a more general reason to avoid hard-coding colours, even if the effects may be less immediately noticeable in some \conceptname[idx as=timeline,idx post={colours, reason to avoid hard-coding}]{timelines}. % \end{enumerate} % %^^A END subsubsec:hashes % % \subsubsection{Timeline Arrow}\label{subsubsec:timeline-arrow} %^^A BEGIN subsubsec:timeline-arrow % % \Chronosstyleslabelname{} must decide whether to support \conceptsname[link,no idx]{timeline} with and/or without one or more % \textconcept{arrow tips} and/or \textconcept{line caps}. % In deciding this, note the following points. % \begin{itemize} % \item Only \keyname[type=choice,link prefix=timeline/timeline years/,idx pre=timeline/timeline years,no idx]{off line} styles can support these features. % \item Adding, removing or modifying a tip or cap requires adjusting the \keyname[type=dimkey,idx post=adjustments for arrow tips and line caps,idx as=timeline/timeline width,link pre=timeline/]{timeline width}. % This is because the length available for representing time is reduced when some proportion of the \conceptname[link,no idx,link pre=timeline/]{timeline line} is used for a tip or cap. % \Pkgname[idx post=adjustments required of styles]{chronos} adjusts automatically for \keysname[type=dimkey,idx pre=timeline,link pre=timeline/]{timeline margin,timeline era margin}, but \styleslabelname{} are responsible for other adjustments. % \item Supporting both arrowed and non-arrowed variants therefore requires conditionalised code. % \item Each arrow tip and line cap requires a bespoke adjustment, even if used in default form. % \item Users may legitimately use \keyname[type=boolkey,idx post=following \string\textconcept{\string\chronosstyleslabelname}]{timeline/timeline arrow} and \keyname[idx post=following \string\textconcept{\string\chronosstyleslabelname}]{timeline/no timeline arrow} after loading a \chronosstylelabelname{}. % \item \Chronosstyleslabelname{} may legitimately ignore these \keyslabelname{}. % \item \Chronosstyleslabelname{} must delay finalising the content of \keyname[no idx]{timeline} until the end of the \conceptname[link,no idx,type=concept]{\meta{chronos preamble}} if they wish to support variants with and without tips and/or caps. % \end{itemize} % % See \keyname[type=boolkey,no idx]{timeline/timeline arrow} and \keyname[no idx]{timeline/no timeline arrow}. % % \DescribeKey{timeline/conditional timeline arrow}\valsmarg{key-value list if arrow/cap}{key-value list otherwise}\AfterLastParam % This \keylabelname{} expects two arguments: \meta{key-value list if arrow/cap} should be a list of key-values to be executed if \keyname[no idx,type=boolkey]{timeline/timeline arrow} is \texttt{true}; \meta{key value list otherwise} should be a list of key-values to be executed if it is \texttt{false}. % \Pkgname[no idx]{chronos} will switch the \keylabelname{} path to \texttt{/chronos/} prior to using the list, but the \texttt{timeline} prefix must be specified if required. % The effect is to add code to the \stylelabelname{} \keyname{timeline/do timeline arrow} which executes \meta{key-value list if arrow/cap} if \keyname[type=boolkey,no idx,link pre=timeline/]{timeline arrow} is \texttt{true} and \meta{key-value list otherwise} otherwise. % More specifically, the code used to implement this mechanism is equivalent to % \begin{chronoscode} % conditional timeline arrow/.code 2 args={% % \pgfqkeys{/chronos}{% % llinell amser/.cd, % timeline@arrow/.style={/chronos/.cd,#1}, % no@timeline@arrow/.style={/chronos/.cd,#2}, % do timeline arrow/.add code={% % \ifchronostimelinearrow % \tikzset{/chronos/llinell amser/timeline@arrow}% % \else % \tikzset{/chronos/llinell amser/no@timeline@arrow}% % \fi % }, % }% % }, % \end{chronoscode} % If the \conceptname[link,no idx]{timeline} uses off line \conceptsname[link,no idx]{years}, \texttt{\cs{pgfqkeys}\marg{/chronos/timeline}\marg{do timeline arrow}} is executed after \keyname[type=dimkey,idx post={finalised before \string\texttt{timeline/do timeline arrow}}]{timeline/timeline height} is finalised. % \Example{\normalfont See below.} % % \DescribeKey{timeline/do timeline arrow}\AfterLastParam % \Chronosstyleslabelname{} are expected to set this \emph{via} \keyname[no idx]{timeline/conditional timeline arrow}, which causes it to be executed in \keyname[link,no idx]{timeline config}, but they could also execute it explicitly if required. % \Default % % For example, \keyname[type=chronosstyle,idx post=use of \string\textkey{conditional timeline arrow}\string\idxeg]{lines on line} supports arrowed and non-arrowed variants using % \begin{chronoscode} % lines on line/.style={% https://tex.stackexchange.com/a/324453/ % /chronos/.cd, % ... % timeline={% % timeline width'=120mm, % ... % timeline arrow, % conditional timeline arrow={% % timeline/timeline width'-=20mm, % timeline/timeline line+={shorten >=-20mm, -{Triangle Cap[length=20mm]}}, % before headings+={% % \path (chronos post) -- +(20mm,0pt); % }, % }{}, % }, % ... % }, % \end{chronoscode} % \texttt{timeline arrow} requests an arrow by default, but does nothing else. % \texttt{conditional timeline arrow} sets up the \stylelabelname{} \keyslabelname{} to execute if \keyname[no idx,link pre=timeline/,type=boolkey]{timeline arrow} is still enabled when \keyname[no idx,link pre=timeline/]{do timeline arrow} is executed. % At this stage, then, no actual changes are applied to the \stylelabelname{} to be applied to the \conceptname[link,no idx]{timeline}. % % The actual effects on the \conceptname[no idx]{timeline}'s \stylelabelname{} are determined only at the end of \conceptname[link,no idx,type=concept]{\meta{chronos preamble}} when \keyname[no idx]{timeline/do timeline arrow} is executed. % Hence, the user may override the \stylelabelname{}'s use of \texttt{timeline arrow} by writing \texttt{timeline/timeline arrow=false} or \texttt{timeline/no timeline arrow} after loading \keyname[type=chronosstyle,no idx]{lines on line}. % % \Styleslabelname{} which support \conceptname[link,no idx]{timeline} arrows must do the following to ensure correct results\footnote{%^^A % This is necessary because \env{chronos} discards the bounding box which includes the arrows immediately after drawing them and it is not possible (as far as I can tell) to extract the required information, even though \pgf{} has just performed all these calculations itself.%^^A % }. % \begin{enumerate} % \item Set \keyname[type=boolkey]{timeline/timeline arrow} if an arrow, non-default line-cap or similar is to be default. % \item Use \keyname{timeline/conditional timeline arrow} if a non-arrow is to be supported and configure the arrow/cap/spacer(s) \emph{only} using this conditional. % \item Decrease \keyname[type=dimkey]{timeline/timeline width} by the total length of arrows, caps and spacers. % At the beginning of the \enviro{chronos} \envlabelname{}, this dimension must equal the actual length available for the \keysname[type=dimkey,no idx,link pre=timeline/]{timeline era margin}, \keysname[type=dimkey,link pre=timeline/,no idx]{timeline margin} and the representation of time, else \conceptname[link,no idx]{marks,years} may be placed onto arrows or caps. % \begin{enumerate} % \item[] The recommended way to do this at present is to % \item calculate the total length of arrows, caps and spacers by hand and use \keyname[link to=timeline/timeline width,type=dimkey,no idx]{timeline/timeline width'}\valmarg{total length} to subtract it from the user-specified \texttt{width}\footnote{%^^A % Accurate calculation requires knowledge of \cs{pgflinewidth}, any use of \texttt{double}, custom options passed to the arrow and details of the formula \pgf{} uses to calculate the length for the specific types of arrow tips and/or line caps configured. % In some cases, this information is included in the \TikZ{} manual but, in most cases, you must consult the source of the \lib{arrows.meta} \liblabelname{}.}; % \item add \texttt{shorten >=} and/or \texttt{shorten <=}, as appropriate, to increase the length of the line just while it is being drawn. % \end{enumerate} % \item Ensure the bounding box includes any arrows, caps and spacers. % \begin{enumerate} % \item[] One way to achieve this is to % \item use \keyname{before headings+} to place coordinates at the tip and very tail of the arrow/cap/spacer(s). % \end{enumerate} % \item Calculations must account for \cs{pgflinewidth} and, if applicable, any use of \texttt{double}, in order to avoid overfull boxes. % \end{enumerate} % %^^A END subsubsec:timeline-arrow % % \subsubsection{Styles and Automemoization}\label{subsubsec:memoizable-style} %^^A BEGIN subsubsec:memoizable-style % % It is recommended that \chronosstyleslabelname{} are configured so that externalised \enviro{chronos} \conceptsname[no idx,no link]{timeline} which use them are automatically recompiled if the \styleslabelname{}' definitions change. % This can be achieved by adding \meta{name of style}\texttt{/.meaning to context} to each \chronosstylelabelname{}'s definition. % For example, the packaged \styleslabelname{} all use the following template to begin their definitions. % \begin{chronoscode} % \pgfqkeys{/chronos}{% % /.style={% % /chronos/.cd, % /.meaning to context, % ... % }, % } % \end{chronoscode} % This is safe, even if \pkg{memoize} isn't used, because \pkg{chronos} provides a fallback \keyhandlerlabelname{}, \keyname[type=keyhandler,no link,idx post=use in \string\textconcept{chronos styles}]{.meaning to context} which does nothing. % %^^A END subsubsec:memoizable-style % %^^A END subsec:chronos-style-creation % % \subsection{Defining Styles for Additional Elements}\label{subsec:element-style-creation} %^^A BEGIN subsec:element-style-creation % % Due to the way \pkg{chronos} manages \conceptname[type=concept,idx post=custom \string\textsf{styles}]{tag} contexts, creating custom \styleslabelname{} to apply to the additional \elementslabelname{} explained in \cref{sec:macros-add-elements} is not necessarily straightforward. % % If you only want to use non-\pkg{chronos} \keyslabelname{} in your \stylelabelname{}, however, it \emph{is} straightforward. % Simply create whatever \pgf{}/\TikZ{} \styleslabelname{} you wish and add them to particular \elementslabelname{} as you deem appropriate. % % The trouble starts if you want to define \stylelabelname{} which include \pkg{chronos} \keyslabelname{}. % More particularly, difficulties arise if you want to use \keyslabelname{} which are specific to \conceptname[type=concept,link,no idx]{tag} contexts such as \keyname[conj=or,idx post=trouble in custom \string\textsf{styles}]{at,tag anchor}. % For example, the \conceptname[no idx]{timeline} in \cref{fig:chronos-dev} uses three custom \styleslabelname{}, \keyname[type=style,no link,idx pre=custom,idx font pre=\normalfont,symbol=eg]{tag left,tag post,tag right} to place \conceptname[idx as=text tag,idx post={custom style using \string\pkg{chronos} keys\string\idxeg}]{text tags}. % Consider the definition of \keyname[type=style,no link]{tag right}, % \begin{chronoscode} % at/.expand once=level -##1.south -| ##2, % tag anchor=north west, % anchor=south west, % xshift=5pt, % connectors=east, % \end{chronoscode} % It uses \keyname[idx post=in custom style\string\idxeg]{at,tag anchor}, which are \conceptname[type=concept,link,no idx]{tag}-specific \pkg{chronos} \keyslabelname{}, as well as the \keyname[no link]{anchor,xshift} \pgf/TikZ{} \keyslabelname{}. % A naïve approach would suggest % \anghywir\begin{chronoscode} % tag right/.style 2 args={% % at/.expand once=level -##1.south -| ##2, % tag anchor=north west, % anchor=south west, % xshift=5pt, % connectors=east, % }, % \end{chronoscode} % but this will fail. % Less naïvely, you might fiddle with path prefixes, but this won't work reliably either because \pkg{chronos} effectively activates\chronosdocidx[type=tag,font=\normalfont,idx post=activated by installation under \string\texttt{/chronos}]{-specific settings} some \conceptname[type=concept,link,no idx]{tag}-specific settings by installing them temporarily under \texttt{/chronos}. % Meanwhile, it redefines\chronosdocidx[type=key,font=\normalfont]{redefinition in \string\textsf{tag}-specific contexts} a subset of both the global and \conceptname[type=concept,link,no idx]{tag}-specific \keyslabelname{} to ensure local \elementlabelname{}-specific settings don't ‘leak’\footnote{\pgf/\TikZ{} has this type of containment down to a fine art. % \Pkg{chronos}'s approach is altogether cruder.}. % % The result of all this is that you cannot generally use standard \pgf/\TikZ{} techniques to define \styleslabelname{} involving \pkg{chronos} \keyslabelname{} for use in creating \pkg{chronos} \elementslabelname{} belonging to \conceptname[type=concept,idx as=tag,link,no idx,link to=tag]{tags}. % Given the aims of \pkg{chronos}, this is a significant limitation only partially mitigated by the following workaround. % % \Pkg{chronos} provides a \pgf{}/\TikZ{} \conceptname[type=keyhandler,idx as=for \string\textsf{style} creation,font=\normalfont]{key handler} to facilitate the creation of straightforward \styleslabelname{}, but the current version has significant limitations I've not been able to solve. % % \DescribeKeyhandler{.chronos key maker}\valmarg{key name}\marg{pgf key handler}\marg{value}\AfterLastParam % \meta{key name} should be a name suitable for a \pgf{}/\TikZ{} \keylabelname{}. % \meta{pgf key handler} should be a \pgf{} key handler, without the leading dot, such as \texttt{style 2 args} or \texttt{ecode}. % \meta{value} should be the value or definition for \meta{key name}. % \emph{Only handlers which expect a single argument may be used.} % This limits the maximum number of arguments \meta{key name} can absorb to two, since the only \pgf{} \keyhandlerslabelname{} capable of absorbing three or more arguments themselves require two or more. % % The \keyhandlerlabelname{} is available in the \conceptname[type=concept,no idx,link]{\meta{chronos preamble}} and in \keyname[type=macro,no idx]{\cs{chronosset}}. % It requires a single doubling of hashes. % \Example{}Here are the definitions of \keyname[type=keyhandler,no link,idx pre=.chronos key maker,idx font pre=\KeyFont,symbol=eg]{tag left,tag post,tag right} mentioned above. % \begin{chronoscode}[chronos,key,maker,end] % tag right/.chronos key maker={tag right}{style 2 args}{% % at/.expand once=level -##1.south -| ##2, % tag anchor=north west, % anchor=south west, % xshift=5pt, % connectors=east, % }, % tag left/.chronos key maker={tag left}{style 2 args}{% % at/.expand once=level -##1.south -| ##2, % tag anchor=north east, % anchor=south east, % xshift=-5pt, % text tag+={align=right}, % }, % tag post/.chronos key maker={tag post}{style}{% % at=level -##1.south -| chronos end, % tag anchor=north west, % anchor=south east, % connect=false, % connectors=east, % }, % \end{chronoscode} % Note \keyname[type=style,no link,idx pre=custom,symbol=eg]{tag post}'s use of the standard \texttt{coordinate} \texttt{chronos end} (\cref{fig:anatomi-coords}). % %^^A END subsec:element-style-creation % %^^A END sec:scheme-style-creation % % \section{Debugging}\label{sec:dadfygio} %^^A BEGIN sec:dadfygio % % \emph{Note that many \keyslabelname{} in this section draw \keyname[type=style]{on chronos overlay layer}. % They will typically draw \textbf{over} content you've created.} % This should not be a concern as they are not intended for use in the final document. % % \DescribeChoice{placeholders}\vals{on,off}\AfterLastParam % If enabled, any helper nodes created with \keyname[idx post=making visible]{levels} will be visible rather than invisible\texsethanks{Qrrbrbirlbel}{694967} and vertical lines corresponding to \conceptname[idx post=vertical lines corresponding to]{headings} will be drawn. % This option is intended to assist in the creation of complex \conceptname[idx as=timeline,idx post={creation of complex}]{timelines}. % \Default{on} % \Initial{off} % % \DescribeStyle{placeholder lines}\valmarg{key-value list}\AfterLastParam % The \stylelabelname{} used to draw any lines created when \keyname[type=choice,idx post=style]{placeholders} is enabled. % The style may be modified or replaced using the usual \TikZ{} techniques, but the settings for nodes should not be altered in a way which changes their size e.g.~by setting \texttt{line width} or similar. % \begin{chronoscode}[placeholder,placeholders,lines] % \begin{chronos} % [ % placeholders, % placeholder lines/.append style={thick},% for the default nodes and similar lines, but thicker % placeholder lines/.style={thin,draw=magenta,<->},% for magenta double-arrowed lines with no changes to nodes % ] % \end{chronos} % \end{chronoscode} % \Default{help lines, every node/.append style={rotate=-90,anchor=south,pos=.25,inner sep=0pt}} % % The following were created for use in developing the package, but some may be more generally useful. % Those which seem most likely to be helpful are listed first. % % \emph{Note that all of the \keyslabelname{} which follow ignore the picture's bounding box. % This means they will disappear (or partially disappear) with no warning if there is insufficient space.} % This may be a concern, but having half the \conceptname[no idx]{timeline} disappear from view is worse. % % \DescribeBoolkey{show coords}\vals{true,false}\AfterLastParam % Labels a selection of \pkg{chronos} coordinates, which may be useful for placement or trouble-shooting purposes. % \Default{true} % \Initial{false} % % \DescribeBoolkey{show bounding box}\vals{true,false}\AfterLastParam % Draws the bounding box of the \enviro{tikzpicture} containing the \conceptname[no idx]{timeline}. % \Default{true} % \Initial{false} % % \DescribeBoolkey{show nodes}\vals{true,false}\AfterLastParam % If, and only if, \keyname[type=boolkey,idx as=timeline/timeline mark eras,idx post=effect of enabling explicitly \string\emph{vs.}~implicitly on \string\textkey{show nodes},link prefix=timeline/,link]{timeline mark eras} is explicitly enabled (as opposed to being enabled just because a \conceptname[no idx]{timeline} spans \bceyearlabel{} and \ceyearlabel{}), draws and labels the nodes containing the era labels on the \conceptname[idx post=show nodes,idx font post=\KeyFont]{timeline}. % \Default{true} % \Initial{false} % % \DescribeKey{debug}A convenience \keylabelname{} which switches on all four of the options above. % \begin{chronoscode}[debug] % \begin{chronos} % debug, % \end{chronos} % \end{chronoscode} % % The following \keyslabelname{} are available to customise the output of the options in this section. % % \DescribeColkey{show coordinate colour,show coordinate color}\val{colour name}\AfterLastParam % \Default{red} % % \DescribeColkey{show bb colour,show bb color}\val{colour name}\AfterLastParam % \Default{green} % % \DescribeColkey{show node colour,show node color}\val{colour name}\AfterLastParam % \Default{blue} % % \DescribeStyle{show coordinate} % A \stylelabelname{} used to show coordinates. % It is used both directly and indirectly by both \keyname[type=style]{show coord} and \keyname[type=style]{show node coord}. % If you want to redefine it, it should take 5 arguments: a colour name, an angle, the name of the coordinate, a dimension and a (possibly empty) key-value list. % \Default{fill=\#1, circle, anchor=center, inner sep=1pt, text=\#1, pin=\{[\#1, inner sep=0pt, pin edge=\{draw=\#1\}, pin distance=\#4, \#5]\#2:\#3\}} % % \DescribeStyle{show coord} % A \stylelabelname{} used to show coordinates. % If you want to redefine it, it should take 2 arguments: the name of the coordinate and an angle. % \Default{/chronos/show coordinate=\{\meta{chronos show coordinate colour}\}\{\#1\}\{\#2\}\{30pt\}\{\}} % % \DescribeStyle{show node coord} % A \stylelabelname{} used to show particular points on nodes. % If you want to redefine it, it should take 2 arguments: the name of the coordinate and an angle. % \Default{/chronos/show coordinate=\{\meta{chronos show node colour}\}\{\#1\}\{\#2\}\{30pt\}\{\}} % % \DescribeMacro{\chronosshowcolour}\oarg{\cs{macroname}}\marg{colour name}\AfterLastParam%^^A \chronos@dangoslliw % \DescribeMacro{\chronosshowcolour*}\oarg{\cs{macroname}}\marg{colour name}\AfterLastParam % \DescribeMacro{\chronosshowcolor}\oarg{\cs{macroname}}\marg{colour name}\AfterLastParam % \DescribeMacro{\chronosshowcolor*}\oarg{\cs{macroname}}\marg{colour name}\AfterLastParam % Extract the colour specification of \meta{colour name} to the \macrolabelname{} \meta{\cs{macroname}}. % The starred forms show \meta{\cs{macroname}}; the remainder merely (re)define it. % In case it is not obvious, don't use a \meta{\cs{macroname}} you care about as it will be overwritten without warning. % By default, an internal \macrolabelname{} is used and reused, so, if you don't specify \meta{\cs{macroname}}, you can only inspect one colour specification at a time. % \Example{\cs{chronosshowcolour*}\{white\}} will show the colour specification of \texttt{white} on the terminal. % % The remainder are unlikely to be helpful except in debugging \pkg{chronos} and no attempt has been made to render their output intelligible. % % \DescribeMacro{\chronosshowpreset}%^^A \chronos@dangos@gosod % Show non-default globalised options. % This shows the properties\footnote{Specifically, the contents of the \pkg{expl3} sequence used to record the names of \pkg{chronos} properties.} currently recorded as set by the user. % This includes selected options set by \chronosstyleslabelname{} and options set with \keyname[type=macro,idx post=showing options]{\cs{chronosset}}, but not defaults set by \pkg{chronos} when loading. % This list is used in deciding whether to change the current setting of an option during \conceptname[no idx]{timeline} configuration. % For example, if a user specifically requests \keyname[type=choice,link prefix=timeline/timeline years/,idx pre=timeline/timeline years,idx font pre=\KeyFont]{off line} \conceptsname[idx post=effects of configuration]{year} with a \keyname[type=dimkey,idx as=timeline/timeline height,link prefix=timeline/,link]{timeline height} of 50mm in white-on-blue, \pkg{chronos} won't override those settings. % But if a user asks for \keyname[type=choice,link prefix=timeline/timeline years/,idx pre=timeline/timeline years,no idx]{off line} \conceptsname[no idx]{year} without specifying \keyname[type=dimkey,idx as=timeline/timeline height,link prefix=timeline/,link,no idx]{timeline height} or changing the default colours, \pkg{chronos} will try to select something reasonable for \keyname[type=dimkey,idx as=timeline/timeline height,no idx,link prefix=timeline/,link]{timeline height} and assume the user wants black-on-white rather than white-on-white. % % The output of \keyname[type=macro]{\cs{chronosshowpreset}} is unlikely to prove especially enlightening unless debugging \pkg{chronos}. % Here, for example, is the output when used at the start of a sample \enviro{chronos} environment, % \iffalse %<*verb> % \fi \begin{verbatim} The sequence \l__chronos_gosod_seq is empty > . \end{verbatim} % \iffalse % % \fi % and right after the optional argument has been processed, % \iffalse %<*verb> % \fi \begin{verbatim} The sequence \l__chronos_gosod_seq contains the items (without outer braces): > {angor@blynyddoedd} > {timeline@years} > {@digwyddiad@llawn} > {@byw@llawn} > {@parhad@llawn} > {markeras} > {llinell} > {cysylltiad} > {llinell amser} > {border}. \end{verbatim} % \iffalse % % \fi % So this user didn't specify any non-default settings in the document preamble or with \keyname[type=macro,idx post=not used\string\idxeg]{\cs{chronosset}}, but has either set or specified a \chronosstylelabelname{} which set various options for this particular \enviro{chronos} \envlabelname{}, which \pkg{chronos} should respect. % Note that the output tells us nothing about {what} has been chosen, but only \emph{that} an explicit choice has been made. % For example, \texttt{markeras} means the user has decided eras should or should not be marked on the \conceptname[idx post=identifying explicit choices]{timeline}, but does not tell us which. % % \DescribeMacro{\chronosshowfeatures}\oarg{tag}\fortags{life,event,period,theory,info}\AfterLastParam %^^A \chronos@dangos@nodweddion | \chronos@dangos@nodweddion@rhag % Shows properties\footnote{Specifically, \pkg{expl3} property lists.} assigned to either the current or \meta{tag} context. % Note that the output uses the original names for \tagslabelname{}, which differ from those documented in this manual. % \texttt{life, event, period, theory} and \texttt{info} correspond to \texttt{byw, digwyddiad, parhad, theori} and \texttt{gwybodaeth}. % % Without an argument, the default list of properties is shown if the command is executed outside a \conceptname[type=concept,idx post={effect on \string\cs{chronosshowfeatures}}]{tag} context; otherwise, the list for the current context is shown. % With an argument, the list of properties for \meta{tag} is shown regardless of execution context. % % There is no list of properties associated with \taglabelname{} \conceptname[type=tag,idx post=no associated list of properties]{main}. % % Here's the output from \keyname[type=macro]{\cs{chronosshowfeatures}} inside a \enviro{chronos} \envlabelname{}, but outside any \taglabelname{} context, % \iffalse %<*verb> % \fi \begin{verbatim} The property list \l__chronos_prop contains the pairs (without outer braces): > {@tag} => {{,/chronos/troi lliwiau=false,/chronos/blynyddoedd yn unig,/chronos/heb gyfnodau,/chronos/troi lliwiau=true}} > {@cysylltwr@chronos} => {{coordinate}} > {@cysylltwr@testun} => {{anchor=center,inner sep=0pt,outer sep=0pt,circle, anchor=center, draw=none, fill=none, minimum size=\pgflinewidth }} > {@llinell} => {{}} > {@testun} => {{fill=chronos main background colour, text=####1, fill opacity=.75, text opacity=1, draw=none, rounded corners, align=center, font=\sffamily \footnotesize ,draw=####1,sharp corners,text opacity=1,fill opacity=1,draw opacity=1,drop shadow}} > {@cysylltiad} => {{draw=##1, {Triangle[width=0pt 3,reversed,length=0pt 1.5]}-{Triangle[width=0pt 5,reversed,length=0pt 2.5]}}}. \end{verbatim} % \iffalse % % \fi % and from \cs{chronosshowfeatures}\texttt{[event]}, % \iffalse %<*verb> % \fi \begin{verbatim} The property list \l__chronos_digwyddiad_prop contains the pairs (without outer braces): > {@cysylltwr@chronos} => {{coordinate}} > {@cysylltwr@testun} => {{circle, anchor=center, draw=none, fill=none, minimum size=\pgflinewidth }} > {@testun} => {{fill=chronos main background colour, text=##1, fill opacity=.75, text opacity=1, draw=none, rounded corners, align=center, font=\sffamily \footnotesize ,draw=##1,sharp corners,text opacity=1,fill opacity=1,draw opacity=1,drop shadow}} > {@tag} => {{/chronos/blynyddoedd yn unig,/chronos/heb gyfnodau,/chronos/troi lliwiau=true}} > {@llinell} => {{draw=chronos timeline foreground colour, thick, blend mode=overlay}}. \end{verbatim} % \iffalse % % \fi % % %^^A END sec:dadfygio % %^^A END sec:macros-add-elements % % \clearpage % % \loadgeometry{safonol}% % \fancyheadoffset[lh]{0pt}% % % \section{Compatibility}\label{sec:compat} %^^A BEGIN sec:compat % % \Pkg{chronos} \conceptname[idx as=timeline,idx post=compatibility]{timelines} cannot be externalised using \TikZ{}'s \lib{external} \liblabelname{}\footnote{%^^A % However, \pkg{chronos} pictures \emph{can} be ‘memoized’. % Moreover, if \pkgname[idx post=compatibility]{memoize} is loaded, \pkg{chronos} will set up ‘automemoization’ by default. % See \cref{sec:external-memoize}.}. % % \TikZ{}'s \lib{spy} \liblabelname{} also appears to be incompatible. % % Arrow tips\chronosdocidx[idx post=compatibility]{arrow tips} and line caps\chronosdocidx[idx post=compatibility]{line caps} from \TikZ{}'s \lib{arrows}\chronosdocidx[idx post=compatibility,font=\PkgFont,type=lib]{arrows} \liblabelname{} are not supported in \keyname[idx post={arrow tips}]{timeline}\chronosdocidx[idx post={line caps},font=KeyFont,type=key]{timeline}. % Please use \lib{arrows.meta}\chronosdocidx[idx post=compatibility,font=\PkgFont,type=lib]{arrows.meta} instead. % % \Pkg{chronos} defines some commands without either marking them as internal or using a package-specific prefix. % These commands are of the following kinds. % \begin{itemize} % \item They use Welsh rather than English (\keyname[type=macro,no link,idx pre=use of Welsh]{\cs{byw},\cs{digwyddiad},\cs{parhad},\cs{gwybodaeth},\cs{theori},\cs{cylchtheori},\cs{prifdeitl}}). % These all use \cs{NewDocumentCommand}. % Should they already be defined, \LaTeXe{} will produce an error and existing definitions will not be overwritten. % \item They are defined only locally within the \conceptname[link,no idx,type=concept]{\meta{timeline specification}}. % These provide local access to \enviro{chronos} internals and do not use a package-specific prefix for reasons of convenience. % These \macroslabelname{} are listed in \cref{tab:enviro}. % \begin{table} % \centering % \caption{Public names for \pkgname[no link,idx post=internal macros defined locally]{chronos} internal macros defined locally within the \conceptname[no idx,type=concept]{\meta{timeline specification}}.}\label{tab:enviro} % \begin{tabular}{ll} % \toprule % \sffamily Public name & \sffamily\keyname[type=pkg,no link,idx as=chronos,font=\PkgFont,idx post=internal macro names]{\Pkg{chronos}} internal name \\\midrule % \keyname[type=macro,no link]{\cs{ceyearlabel}} & \keyname[type=macro,no link]{\cs{chronos@yearce}} \\ % \keyname[type=macro,no link]{\cs{bceyearlabel}} & \keyname[type=macro,no link]{\cs{chronos@yearbce}} \\ % \keyname[type=macro,no link]{\cs{celabel}} & \keyname[type=macro,no link]{\cs{chronos@ce}} \\ % \keyname[type=macro,no link]{\cs{bcelabel}} & \keyname[type=macro,no link]{\cs{chronos@bce}} \\ % \keyname[type=macro,link]{\cs{timelineht}} & \keyname[type=macro,no link]{\cs{chronos@height}} \\ % \keyname[type=macro,link]{\cs{timelineborderht}} & \keyname[type=macro,no link]{\cs{chronos@borderheight}} \\ % \keyname[type=macro,link]{\cs{timelinewd}} & \keyname[type=macro,no link]{\cs{chronos@width}} \\ % \keyname[type=macro,link]{\cs{lineyshift}} & \keyname[type=macro,no link]{\cs{chronos@llinell@yshift}} \\ % \bottomrule % \end{tabular} % \end{table} % \emph{Note that some of these \macroslabelname{} are also defined conditionally at the end of the preamble. % The local definitions described here are unconditional.} % \item They are ‘throwaway’, extremely temporary macros such as \keyname[type=macro,no link,idx pre=throwaway definition,idx as=\cs{tempa}\string\textrm{\string\idxeg}]{\cs{tempa}}. % These are used only very, very locally. % Any macro which needs to retain its definition for more than a few lines uses a \texttt{chronos@} prefix unless it is a variable in a \pgf{} \keyname[type=macro,no link]{\cs{foreach}} loop. % \item They are defined only if undefined at the end of the preamble, so existing definitions are maintained without warning or error. % This applies to cases where either \pkg{chronos} uses a command if it is available (e.g.~\keyname[type=macro,no link,idx pre=conditionally used,idx as=\cs{uishape}\string\textrm{\string\idxeg}]{\cs{uishape}}), but needs a fallback otherwise, or a public macro is made available as a convenience, if the user is not using the name already (e.g.~\keyname[type=macro,idx pre=conditionally defined,idx as=\cs{celabel}\string\textrm{\string\idxeg}]{\cs{celabel}}). % These \macroslabelname{} are listed in \cref{tab:public,tab:provides}. % \begin{table} % \centering % \caption{Public names for \pkgname[no link,idx post=internal macros conditionally defined]{chronos} internal macros defined if undefined at the end of the preamble.}\label{tab:public} % \begin{tabular}{ll} % \toprule % \sffamily Public name & \sffamily\keyname[type=pkg,no link,idx as=chronos,font=\PkgFont,idx post=internal macro names]{\Pkg{chronos}} internal name \\\midrule % \keyname[type=macro,target,no link]{\cs{ceyearlabel}} & \keyname[type=macro,no link]{\cs{chronos@yearce}} \\ % \keyname[type=macro,target,no link]{\cs{bceyearlabel}} & \keyname[type=macro,no link]{\cs{chronos@yearbce}} \\ % \keyname[type=macro,target,no link]{\cs{celabel}} & \keyname[type=macro,no link]{\cs{chronos@ce}} \\ % \keyname[type=macro,target,no link]{\cs{bcelabel}} & \keyname[type=macro,no link]{\cs{chronos@bce}} \\ % \bottomrule % \end{tabular} % \end{table} % \begin{table} % \centering % \caption{Fallback definitions for \macroslabelname{} undefined at the end of the preamble.}\label{tab:provides} % \begin{tabular}{ll} % \toprule % \sffamily Functionality used if defined & \sffamily\keyname[type=pkg,no link,font=\PkgFont,idx as=chronos,idx post=fallback macro definitions]{\Pkg{chronos}} fallback definition \\\midrule % \keyname[type=macro,no link]{\cs{tlstyle}} & \cs{let}\cs{tlstyle}\cs{upshape} \\ % \keyname[type=macro,no link]{\cs{plstyle}} & \cs{let}\cs{plstyle}\cs{upshape} \\ % \keyname[type=macro,no link]{\cs{uishape}} & \cs{let}\cs{uishape}\cs{itshape} \\ % \keyname[type=macro,no link]{\cs{textui}} & \cs{DeclareTextFontCommand}\{\cs{textui}\}\{\cs{uishape}\} \\ % \keyname[type=macro,no link]{\cs{sishape}} & \cs{DeclareRobustCommand}\cs{sishape}\{\cs{itshape}\cs{scshape}\} \\ % \keyname[type=macro,no link]{\cs{textsi}} & \cs{DeclareTextFontCommand}\{\cs{textsi}\}\{\cs{sishape}\} \\ % \bottomrule % \end{tabular} % \end{table} % \item They are differently-named replacements for a subset of \pkgname[no link,idx post=compatibility of \string\textpkg{chronos} replacements]{etoolbox} macros and tests\footnote{%^^A % They are a response to advice not to mix \pkg{expl3} and \pkg{etoolbox}. % Since I'd originally thought it was better to use \pkg{etoolbox} functions than create a slew of wrappers for \pkg{expl3} functions, these are the products of the resulting rewrite. % Despite my best efforts, the dependency on \pkg{etoolbox} remains, but usage is confined to cases where \pkg{expl3} does not offer equivalent functionality.%^^A % }, which are defined only if they do not exist. % If they already exist, \pkg{chronos} produces a warning and continues, hoping for the best. % This set of macros is compatible with \pkgname[no link,idx post=as dependency]{etoolbox}, which \pkg{chronos} depends on for patching purposes. % However, they may be incompatible with packages I'm unaware of or which are not yet published, in which case the warnings may prove informative. % These macros are listed in \cref{tab:etoolbox}. % \begin{table} % \centering % \caption{Approximate replacements for \pkgname[type=pkg,no link,idx post=macros with \string\pkg{chronos} analogues]{etoolbox} macros.}\label{tab:etoolbox} % \begin{tabular}{>{\ttfamily}ll} % \toprule % \sffamily\pkgname[no link]{etoolbox} & \sffamily\keyname[type=pkg,no link,idx as=chronos,font=\PkgFont,idx post=replacements for \string\textsf{etoolbox} macros]{\pkg{chronos}} \pkgname[no link]{expl3} wrapper \\\midrule % \keyname[type=macro,no link]{\cs{ifundef}} & \keyname[type=macro,no link]{\cs{IfFreeTF},\cs{IfFreeT},\cs{IfFreeF}} \\ % \keyname[type=macro,no link]{\cs{ifdef}} & \keyname[type=macro,no link]{\cs{IfExistTF},\cs{IfExistT},\cs{IfExistF}} \\ % \keyname[type=macro,no link]{\cs{ifcsundef}} & \keyname[type=macro,no link]{\cs{IfCSFreeTF},\cs{IfCSFreeT},\cs{IfCSFreeF}} \\ % \keyname[type=macro,no link]{\cs{ifcsdef}} & \keyname[type=macro,no link]{\cs{IfCSExistTF},\cs{IfCSExistT},\cs{IfCSExistF}} \\ % \keyname[type=macro,no link]{\cs{undef}} & \keyname[type=macro,no link]{\cs{Undefine}} \\ % \keyname[type=macro,no link]{\cs{csletcs}} & \keyname[type=macro,no link]{\cs{CSletCS}} \\ % \keyname[type=macro,no link]{\cs{cslet}} & \keyname[type=macro,no link]{\cs{CSlet}} \\ % \keyname[type=macro,no link]{\cs{ifboolexpr}} & \keyname[type=macro,no link]{\cs{IfBooleanExprTF},\cs{IfBooleanExprT},\cs{IfBooleanExprF}} \\ % bool & \keyname[type=macro,no link]{\cs{LegacyBoolean}} \\ % test & \keyname[type=macro,no link]{\cs{CSFreeBoolean}} \\ % \keyname[type=macro,no link]{\cs{ifnumcomp}} & \keyname[type=macro,no link]{\cs{IntCompareBoolean},\cs{IfIntCompareTF},\cs{IfIntCompareT},\cs{IfIntCompareF}} \\ % \bottomrule % \end{tabular} % \end{table} % \end{itemize} % % % \subsection{Compatibility with Code from \TeX{} SE Answers}\label{subsec:compat-texse} %^^A BEGIN subsec:compat-texse % % The CTAN release of \pkg{chronos} is not backwards compatible with versions published on \href{https://tex.stackexchange.com/}{\TeX{} StackExchange}. % However, there are several methods you can use to update most \conceptname[idx as=timeline,idx post=updating from \string\TeX{}\space SE code]{timelines} produced using code from answers there. % Which approach is best depends on the specific case. % % I suggest four possible approaches below. % Of these, \cref{method:complete,method:no-chronos} are strongly recommended. % The remaining \cref{method:cy,method:rename} are for those keen for adventures in the typesetting hinterlands, desperate souls suffering in imminent-deadline hells and the perilously inquisitive with too much time on their hands. % They are included because most of us, at one time or another, find ourselves in situations of the second type, even if we are too home-loving and incurious to dare the others. % % \begin{chronosmethod}%^^A % \item\label{method:complete}\chronosdocidx[type=concept,idx post=updating from \string\TeX{}\space SE code,font=\ConceptFont]{timeline} If you intend to develop work utilising code from \TeX{} SE answers further, I strongly recommend taking the time to switch to the new key-value interface and \enviro{chronos} \envlabelname{}. % This method is the most work, but also the most reliable and flexible. % There is no guarantee that either of the alternative methods \cref*{method:cy,method:rename} will work or continue to work with future \pkg{chronos} releases. % \Cref{method:no-chronos} is an option, but if you are actively developing a \conceptname[no idx]{timeline}, the flexibility of \pkg{chronos} should make things easier and provide options otherwise unavailable. % If you put more work in and then find the code you have insufficient to your needs, you will only have delayed and expanded the task of updating. % \item\label{method:no-chronos}\chronosdocidx[type=concept,idx post=updating with retained \string\TeX{}\space SE code,font=\ConceptFont]{timeline} If you don't intend to develop existing \conceptsname[type=concept,idx as=timeline,idx post=completed using \string\TeX{}\space SE code]{timeline} further, I strongly recommend not loading \pkg{chronos}, renaming any existing file to avoid conflicts and doing an ultra-simple update so existing documents load the renamed file. % This is the simplest, most straightforward option. % Why fix what ain't broke? % If the code you have works and you're satisfied with the results, you need this package like a head needs an ache. % The only thing you should do --- and you really \emph{should} do this --- is rename any conflicting package you created locally. % That is, if you've stuck code from an SE answer in a file named \texttt{chronos.sty}, I strongly recommend renaming it to, for example, \texttt{chronos-se.sty} to avoid conflicts. % Then you can use \pkg{chronos} in new documents and just change the \cs{usepackage} invocation to \pkg{chronos-se} in old ones. % \item\label{method:hinterlands} If \cref{method:complete,method:no-chronos} aren't options --- if, say, you want to use this package for a new \conceptname[no idx]{timeline} in a document with existing \conceptname[type=concept,idx as=timeline,idx post=combining package and \string\TeX{}\space SE code in single document]{timelines} and you don't have time to update those, then one of the following pairs of definitions \emph{may} produce more-or-less the same output from existing or slightly modified code. % Note that there is no guarantee this will work in any particular case or, if it does, that it will continue to work with future releases of \pkg{chronos}. % It may, however, provide a quick-and-dirty fix if you are stuck. % \begin{chronosmethod} % \item\label{method:cy} This requires minimal changes to existing code. % You will need to modify existing \conceptname[type=concept,idx as=timeline,idx post=combining package and \string\TeX{}\space SE code in single document with minimal changes]{timelines} to use the \enviro{chronos} \envlabelname{} if they are currently in \enviro{tikzpicture} \envslabelname{}. % Then place the following code \emph{into the preamble} of your document: % \iffalse %<*verb> % \fi \begin{verbatim} \usepackage{chronos} \makeatletter % The following definitions **MUST** be in the premable. % They will **NOT** work if placed after \begin{document} % or before \usepackage{chronos}. % BEGIN \chronosevent \NewDocumentCommand \chronosevent { O {} m O {} +m D () { \chronos@testun@yshift } } {% #1 [] % #2 {} % #3 [] % #4 {} % #5 () \digwyddiad{% date=#2, name=#4, yshift=#5, text tag+={#3}, connection+={#1}, }% } % END \chronosevent % BEGIN \chronosperiod \NewDocumentCommand \chronosperiod { O {} m O {} m O {} +m D () { \chronos@testun@yshift } } {% #1 [] % #2 {} % #3 [] % #4 {} % #5 [] % #6 {} % #7 () \parhad{% start=#2, end=#4, name=#6, yshift=#7, connection+={#3}, text tag+={#5}, line+={#1}, }% } % END \chronosperiod \makeatother \end{verbatim} % \iffalse % % \fi % If you use this method, you \emph{cannot} use the key-value versions of \keyname[type=macro,idx post=method incompatible with key-value version of]{\cs{chronosevent},\cs{chronosperiod}}. % Instead, you will need to use \keyname[type=macro,no link]{\cs{digwyddiad}} for events and \keyname[type=macro,no link]{\cs{parhad}} for periods when you wish to make use of the new features. % \item\label{method:rename}\chronosdocidx[type=concept,font=\ConceptFont,idx post=combining package and \string\TeX{}\space SE code in single document with legacy names]{timeline} Alternatively, update all existing \envslabelname{} to use \enviro{chronos} as explained in \cref{method:cy}, if required. % Then replace every occurrence of \keyname[type=macro,idx post=renaming \string\TeX{}\space SE version]{\cs{chronosevent},\cs{chronosperiod}} with \keyname[type=macro,no link]{\cs{chronoslegacyevent},\cs{chronoslegacyperiod}} and place the following in your document preamble\footnote{The location isn't crucial in this case, provided the definitions are read before you use them and after \pkg{chronos} is loaded, but it is bad practice to define new commands in the body of documents.}: % \iffalse %<*verb> % \fi \begin{verbatim} \usepackage{chronos} \makeatletter % BEGIN \chronoslegacyevent \NewDocumentCommand \chronoslegacyevent { O {} m O {} +m D () { \chronos@testun@yshift } } {% #1 [] % #2 {} % #3 [] % #4 {} % #5 () \chronosevent{% date=#2, name=#4, yshift=#5, text tag+={#3}, connection+={#1}, }% } % END \chronoslegacyevent % BEGIN \chronoslegacyperiod \NewDocumentCommand \chronoslegacyperiod { O {} m O {} m O {} +m D () { \chronos@testun@yshift } } {% #1 [] % #2 {} % #3 [] % #4 {} % #5 [] % #6 {} % #7 () \chronosperiod{% start=#2, end=#4, name=#6, yshift=#7, connection+={#3}, text tag+={#5}, line+={#1}, }% } % END \chronoslegacyperiod \makeatother \end{verbatim} % \iffalse % % \fi % This allows you to use \keyname[type=macro,idx post=method allowing use of key-value interface in]{\cs{chronosevent},\cs{chronosperiod}} with the key-value interface in new \conceptname[idx as=timeline,idx post=key-value interface]{timelines}. % \end{chronosmethod} % \end{chronosmethod} % % %^^A END subsec:compat-texse %^^A END sec:compat % % \changes{v0.9}{2025-03-01}{First CTAN release.} % % \changes{v0.7?}{2023-07-01}{First repo release. (Ish.) Earlier versions were published informally on \href{https:tex.stackexchange.com}{\TeX{} StackExchange}.} % % % \MaybeStop{% %^^A \loadgeometry{safonol}% %^^A \setlength\tewadjust{\marginparwidth+\marginparsep}% %^^A \fancyheadoffset[lh]{0pt}%^^A REQUIRED - do NOT remove this line!! %^^A \pagestyle{fancy}% %^^A \thispagestyle{fancyplain}% % \def\glossaryname{Change History}% % \PrintChanges % \PrintIndex % } % % You do not need to read the remainder of this document in order to install or use the package. % % \iffalse %<*doc> \RequirePackage{svn-prov} \def\GetFileBaseName#1-#2\nil{#1} \edef\MyFileBaseName{\expandafter\GetFileBaseName\jobname\nil} \ProvidesFileSVN[\MyFileBaseName-doc]{$Id: chronos.dtx 10925 2025-03-07 15:07:59Z cfrees $}[v0.9.1 \revinfo] \DefineFileInfoSVN \AddToHook{begindocument}{\OnlyDescription} \expandafter\newif\csname ifchronoscodetoo\endcsname \chronoscodetoofalse \input{\MyFileBaseName.dtx} % % \fi % \iffalse %<*doc-code> \RequirePackage{svn-prov} \def\GetFileBaseName#1-#2\nil{#1} \edef\MyFileBaseName{\expandafter\GetFileBaseName\jobname\nil} \ProvidesFileSVN[\MyFileBaseName-imp]{$Id: chronos.dtx 10925 2025-03-07 15:07:59Z cfrees $}[v0.9.1 \revinfo] \DefineFileInfoSVN \AddToHook{begindocument}{\AlsoImplementation} \expandafter\newif\csname ifchronoscodetoo\endcsname \chronoscodetootrue \input{\MyFileBaseName.dtx} % % \fi % % \ifchronoscodetoo\relax % \else %\Finale % \fi % %^^A vim: et:tw=0:sw=2:ts=2:foldmethod=marker:fmr=<<<,>>>: