diff options
Diffstat (limited to 'macros/latex/contrib/jwjournal/jwjournal.cls')
-rw-r--r-- | macros/latex/contrib/jwjournal/jwjournal.cls | 150 |
1 files changed, 127 insertions, 23 deletions
diff --git a/macros/latex/contrib/jwjournal/jwjournal.cls b/macros/latex/contrib/jwjournal/jwjournal.cls index fc8b091952..f7d1da7f64 100644 --- a/macros/latex/contrib/jwjournal/jwjournal.cls +++ b/macros/latex/contrib/jwjournal/jwjournal.cls @@ -12,7 +12,7 @@ \NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplClass {jwjournal} - {2023/08/26} {} + {2023/08/29} {} {JW's journal class} \keys_define:nn { jwjournal } @@ -55,6 +55,8 @@ \colorlet { jwjournal-color-6 } { yellow!20!orange } \colorlet { jwjournal-color-7 } { red!20!orange } +\colorlet { jwjournal-entry } { . } + \NewDocumentCommand \JWJournalEntry { m m } { \skip_vertical:n { .5 \baselineskip } @@ -98,7 +100,7 @@ } \RequirePackage { enumitem } -\setlist [ description ] { font = \normalfont\sffamily, leftmargin = 3em} +\setlist [ description ] { font = \normalfont\sffamily, leftmargin = 3em, topsep = 0pt } \RenewDocumentCommand \descriptionlabel { m } { \skip_horizontal:n { \labelsep } @@ -117,6 +119,54 @@ \end{description} } +\NewDocumentCommand \JWJournalSkip { O{.5} } + { + % \vspace{#1\baselineskip} + \vskip#1\baselineskip + } +\NewDocumentCommand \JWJournalBack { O{.5} } + { + % \vspace{-#1\baselineskip} + \vskip-#1\baselineskip + } + +\newenvironment{JWJournalCompactCenter} + {\parskip=0pt\par\nopagebreak\centering} + {\par\noindent\ignorespacesafterend} +\newenvironment{JWJournalCenter} + {\parskip=0pt\par\medskip\nopagebreak\centering} + {\par\noindent\ignorespacesafterend} +\newenvironment{JWJournalLeft} + {\parskip=0pt\par\medskip\nopagebreak\raggedright} + {\par\noindent\ignorespacesafterend} +\newenvironment{JWJournalRight} + {\parskip=0pt\par\medskip\nopagebreak\raggedleft} + {\par\noindent\ignorespacesafterend} +\NewDocumentCommand \JWJournalCompactCenterText { m } + { + \begin{JWJournalCompactCenter} + #1 + \end{JWJournalCompactCenter} + } +\NewDocumentCommand \JWJournalShowImageCenter { O{1} m } + { + \begin{JWJournalCenter} + \includegraphics[width=#1\linewidth]{#2} + \end{JWJournalCenter} + } +\NewDocumentCommand \JWJournalShowImageLeft { O{1} m } + { + \begin{JWJournalLeft} + \includegraphics[width=#1\linewidth]{#2} + \end{JWJournalLeft} + } +\NewDocumentCommand \JWJournalShowImageRight { O{1} m } + { + \begin{JWJournalRight} + \includegraphics[width=#1\linewidth]{#2} + \end{JWJournalRight} + } + \tl_new:N \g_jwjournal_content_tl \NewDocumentEnvironment { jwjournal } { +b } { @@ -126,7 +176,10 @@ } {} +\tl_const:Nn \c_jwjournal_new_line_with_skip_tl { \\[.3\baselineskip] } +\bool_new:N \l_jwjournal_regex_no_more_match_bool \seq_new:N \l_jwjournal_tmp_seq +\tl_new:N \l_jwjournal_tmp_tl \cs_generate_variant:Nn \regex_split:nnN { nVN } \cs_new:Nn \jwjournal_parse_content:N { @@ -134,56 +187,107 @@ \tl_set:Nn \g_jwjournal_content_tl {} \seq_map_inline:Nn \l_jwjournal_tmp_seq { - \tl_set:Nn \l_tmpa_tl { ❄️ ##1 } + \tl_set:Nn \l_jwjournal_tmp_tl { ❄️ ##1 } + \regex_replace_all:nnN { ={3,} } { } - \l_tmpa_tl + \l_jwjournal_tmp_tl + \regex_replace_all:nnN + { -> } + { \c{JWJournalSkip} } + \l_jwjournal_tmp_tl + \regex_replace_all:nnN + { <- } + { \c{JWJournalBack} } + \l_jwjournal_tmp_tl + \regex_replace_all:nnN + { \|\| } + { \c{JWJournalShowImageCenter} } + \l_jwjournal_tmp_tl + \regex_replace_all:nnN + { \(\( } + { \c{JWJournalShowImageLeft} } + \l_jwjournal_tmp_tl + \regex_replace_all:nnN + { \)\) } + { \c{JWJournalShowImageRight} } + \l_jwjournal_tmp_tl \regex_replace_once:nnN { \| } { \c{hfill} } - \l_tmpa_tl - \regex_match:nVT { ❄️ +++ (.*) } \l_tmpa_tl + \l_jwjournal_tmp_tl + \regex_replace_all:nnN + { // } + { \c{c_jwjournal_new_line_with_skip_tl} } + \l_jwjournal_tmp_tl + + % \regex_replace_all:nnN + % { >> (.*) } + % { \c{JWJournalCompactCenterText}\{\1\} } + % \l_jwjournal_tmp_tl + \exp_args:Nno \regex_split:nnN { >> } { \l_jwjournal_tmp_tl } \l_tmpa_seq + \seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl + \tl_clear:N \l_jwjournal_tmp_tl + \tl_put_right:NV \l_jwjournal_tmp_tl \l_tmpa_tl + \seq_map_inline:Nn \l_tmpa_seq { - \tl_gput_right:Nn \g_jwjournal_content_tl { \g_jwjournal_enlarge_page_by_one_line_tl } - \regex_replace_once:nnN - { ❄️ +++ (.*) } - { ❄️ \1 } - \l_tmpa_tl + \tl_put_right:Nn \l_jwjournal_tmp_tl + { \JWJournalCompactCenterText { ####1 } } } + + \bool_set_false:N \l_jwjournal_regex_no_more_match_bool + \bool_do_until:nn \l_jwjournal_regex_no_more_match_bool + { + \regex_match:nVTF { ❄️ \ *? \+{3} } \l_jwjournal_tmp_tl + { + \tl_gput_right:Nn \g_jwjournal_content_tl { \c_jwjournal_enlarge_page_by_one_line_tl } + \regex_replace_once:nnN + { ❄️ \ *? \+{3} (.*) } + { ❄️ \1 } + \l_jwjournal_tmp_tl + } + { + \bool_set_true:N \l_jwjournal_regex_no_more_match_bool + } + } + \regex_replace_once:nnN { ❄️ (\ *)? (\d{4}-\d{1,2}-\d{1,2}) (\ *)? (.*) } { \c{JWJournalEntry} {\2} {\4} } - \l_tmpa_tl + \l_jwjournal_tmp_tl \regex_replace_once:nnN { ❄️ (\ *)? (\d{1,2}-\d{1,2}-\d{4}) (\ *)? (.*) } { \c{JWJournalEntry} {\2} {\4} } - \l_tmpa_tl + \l_jwjournal_tmp_tl \regex_replace_once:nnN { ❄️ (\ *)? (\d{4} \D \d{1,2} \D \d{1,2}) (\ *)? (.*) } { \c{JWJournalEntry} {\2} {\4} } - \l_tmpa_tl + \l_jwjournal_tmp_tl \regex_replace_once:nnN { ❄️ (\ *)? (\d{1,2} \D \d{1,2} \D \d{4}) (\ *)? (.*) } { \c{JWJournalEntry} {\2} {\4} } - \l_tmpa_tl + \l_jwjournal_tmp_tl + \regex_replace_once:nnN - { ❄️ (\[.*\] .*) } + { ❄️ \ *? (\[.*\] .*) } { \c{JWJournalItem} {\1} } - \l_tmpa_tl + \l_jwjournal_tmp_tl \regex_replace_once:nnN - { ❄️ 【(.*)】(.*) } + { ❄️ \ *? 【(.*)】(.*) } { \c{JWJournalItem} { \[\1\] \2 } } - \l_tmpa_tl - \regex_replace_once:nnN { ❄️ } { } \l_tmpa_tl - \tl_gput_right:NV \g_jwjournal_content_tl \l_tmpa_tl + \l_jwjournal_tmp_tl + + \regex_replace_once:nnN { ❄️ } { } \l_jwjournal_tmp_tl + + \tl_gput_right:NV \g_jwjournal_content_tl \l_jwjournal_tmp_tl \tl_gput_right:Nn \g_jwjournal_content_tl { \par } } } \bool_if:NTF \l__jwjournal_scroll_bool { - \tl_const:Nn \g_jwjournal_enlarge_page_by_one_line_tl {} + \tl_const:Nn \c_jwjournal_enlarge_page_by_one_line_tl {} \geometry{ papersize={7in,\maxdimen}, top=.75in,bottom=.75in, @@ -212,7 +316,7 @@ } } { - \tl_const:Nn \g_jwjournal_enlarge_page_by_one_line_tl { \enlargethispage*{\baselineskip} } + \tl_const:Nn \c_jwjournal_enlarge_page_by_one_line_tl { \enlargethispage{\baselineskip} } \geometry{ papersize={7in,10in}, top=.75in,bottom=.75in, |