From 1d444b81d53d885a68ef7096605fc3bf3dba5fe8 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 31 Jan 2022 21:14:32 +0000 Subject: autopuncitems (31jan22) git-svn-id: svn://tug.org/texlive/trunk@61825 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/lualatex/autopuncitems/autopuncitems.pdf | Bin 41875 -> 38603 bytes .../doc/lualatex/autopuncitems/autopuncitems.tex | 36 +++++++++++++++++++-- .../tex/lualatex/autopuncitems/autopuncitems.lua | 13 ++++++-- .../tex/lualatex/autopuncitems/autopuncitems.sty | 6 ++-- 4 files changed, 48 insertions(+), 7 deletions(-) diff --git a/Master/texmf-dist/doc/lualatex/autopuncitems/autopuncitems.pdf b/Master/texmf-dist/doc/lualatex/autopuncitems/autopuncitems.pdf index d2a5da00ed8..c377b41f50e 100644 Binary files a/Master/texmf-dist/doc/lualatex/autopuncitems/autopuncitems.pdf and b/Master/texmf-dist/doc/lualatex/autopuncitems/autopuncitems.pdf differ diff --git a/Master/texmf-dist/doc/lualatex/autopuncitems/autopuncitems.tex b/Master/texmf-dist/doc/lualatex/autopuncitems/autopuncitems.tex index 06f3f5e9bed..e30c85e26fb 100644 --- a/Master/texmf-dist/doc/lualatex/autopuncitems/autopuncitems.tex +++ b/Master/texmf-dist/doc/lualatex/autopuncitems/autopuncitems.tex @@ -1,5 +1,5 @@ % Kale Ewasiuk (kalekje@gmail.com) -% 2022-01-18 +% 2022-01-30 % Copyright (C) 2021-2022 Kale Ewasiuk % % Permission is hereby granted, free of charge, to any person obtaining a copy @@ -62,7 +62,6 @@ \begin{document} \maketitle -{\Huge TODO make an environment that can be used outside of itemize, useful for beamer possibly} \section{Introduction} This package provides environments \cmd{AutoPuncItemize}, \cmd{AutoPuncItemizeO}, and \cmd{AutoPuncItemizeE} (beta) @@ -209,5 +208,38 @@ If you disable auto-pass nested lists, and don't use \cmd{\APpass}, here is what \end{itemize} \end{LTXexample} +You may want to use the \cmd{AutoPuncItems} environment outside a list environment instead, +say perhaps if you're using the \cmd{beamer}. +Note that nested lists are normally not punctuated, and since the first-level list is inside the environment, it's considered nested. +If you would like to disable the prevention of auto-punctuating all nested lists, use the \cmd{\disableAPprotectnest}. +Note that nested lists will cause an error to occur. + +\begin{LTXexample} +\disableAPprotectnest +\begin{AutoPuncItems} +\begin{itemize} + \item one + \item two + \item three + \item four +\end{itemize} +\end{AutoPuncItems} +\end{LTXexample} + +The normal way to use the environment should be inside the first list, like so. + +\begin{LTXexample} +\enableAPautopassnest % default settn +\begin{itemize} +\begin{AutoPuncItems} + \item one + \item two + \item three + \item four +\end{AutoPuncItems} +\end{itemize} +\end{LTXexample} + + \end{document} diff --git a/Master/texmf-dist/tex/lualatex/autopuncitems/autopuncitems.lua b/Master/texmf-dist/tex/lualatex/autopuncitems/autopuncitems.lua index fc0a4b38b5e..07b68e3ed44 100644 --- a/Master/texmf-dist/tex/lualatex/autopuncitems/autopuncitems.lua +++ b/Master/texmf-dist/tex/lualatex/autopuncitems/autopuncitems.lua @@ -1,5 +1,5 @@ --% Kale Ewasiuk (kalekje@gmail.com) ---% 2022-01-18 +--% 2022-01-30 --% Copyright (C) 2021-2022 Kale Ewasiuk --% --% Permission is hereby granted, free of charge, to any person obtaining a copy @@ -41,6 +41,7 @@ ap.pass = '\\APpass' -- flag for passing item from punc, but still considered in ap.code = 0 -- code for skipping punc if > 0, keep in count if == 1, omit from count if == 2 ap.autopassnested = true +ap.skipnextprot = false function ap.start(s) ap.curr = 0 @@ -70,6 +71,8 @@ function ap.getdelim() return d end + + function ap.protectnest(s) local x = '' if ap.autopassnested then x = ap.pass..'{}' end @@ -88,12 +91,16 @@ end function ap.go(s) - s = ap.protectnest(s) + if ap.skipnextprot then + s = s:gsub(ap.item, ap.itemp) + else + s = ap.protectnest(s) + end ap.start(s) -- start counters --texio.write_nl('yooo...'..s) s = s:gsub(ap.itemp, '\0\0'):gsub('\0', '', 1) -- make all items \0\0 then change first item to one \0 s = s:gsub('(%z)(%Z*)(%z?)', -- find betwen \0 .. \0 - function(it, s, _it) -- discarding duplicate item '_it' that was made in first gsub + function(it, s) -- discarding duplicate item '_it' that was made in first gsub ap.addcount(s) -- add count, helps determine delimiter return ap.rtrim(it..s)..ap.getdelim()..' ' end diff --git a/Master/texmf-dist/tex/lualatex/autopuncitems/autopuncitems.sty b/Master/texmf-dist/tex/lualatex/autopuncitems/autopuncitems.sty index 81c3f2dd6c3..11a4c66f69e 100644 --- a/Master/texmf-dist/tex/lualatex/autopuncitems/autopuncitems.sty +++ b/Master/texmf-dist/tex/lualatex/autopuncitems/autopuncitems.sty @@ -1,5 +1,5 @@ % Kale Ewasiuk (kalekje@gmail.com) -% 2022-01-18 +% 2022-01-30 % Copyright (C) 2021-2022 Kale Ewasiuk % % Permission is hereby granted, free of charge, to any person obtaining a copy @@ -23,7 +23,7 @@ % OR OTHER DEALINGS IN THE SOFTWARE. -\ProvidesPackage{autopuncitems}[2022-01-18] +\ProvidesPackage{autopuncitems}[2022-01-30] \RequirePackage{luacode} \RequirePackage{etoolbox} @@ -40,6 +40,8 @@ \newcommand{\disableAPautopassnest}{\luadirect{autopuncitems.autopassnested = false}} \newcommand{\enableAPautopassnest}{\luadirect{autopuncitems.autopassnested = true}} +\newcommand{\disableAPprotectnest}{\luadirect{autopuncitems.skipnextprot = true}} +\newcommand{\enableAPprotectnest}{\luadirect{autopuncitems.skipnextprot = false}} \NewDocumentCommand{\setAPeach}{m m m}{\setAPdef{#1}\setAPseclast{#2}\setAPlast{#3}} % set each one, default, second last, last \NewDocumentCommand{\setAPall}{m}{\setAPdef{#1}\setAPseclast{#1}\setAPlast{#1}} % set all the same -- cgit v1.2.3