summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/fnpct
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-02-04 03:01:19 +0000
committerNorbert Preining <norbert@preining.info>2022-02-04 03:01:19 +0000
commitb7a48c5e229d2c195b6a32bfd73a1036a31f2df3 (patch)
tree0de52f1cd71e177264b40f03cfcae565537e941c /macros/latex/contrib/fnpct
parent5f2b3969a73a6756d3cd224240ae1be6408d5801 (diff)
CTAN sync 202202040301
Diffstat (limited to 'macros/latex/contrib/fnpct')
-rw-r--r--macros/latex/contrib/fnpct/README2
-rw-r--r--macros/latex/contrib/fnpct/fnpct-manual.cls5
-rw-r--r--macros/latex/contrib/fnpct/fnpct-manual.pdfbin489507 -> 509779 bytes
-rw-r--r--macros/latex/contrib/fnpct/fnpct-manual.tex29
-rw-r--r--macros/latex/contrib/fnpct/fnpct.sty103
5 files changed, 101 insertions, 38 deletions
diff --git a/macros/latex/contrib/fnpct/README b/macros/latex/contrib/fnpct/README
index a867454221..88d9dc33ef 100644
--- a/macros/latex/contrib/fnpct/README
+++ b/macros/latex/contrib/fnpct/README
@@ -1,5 +1,5 @@
--------------------------------------------------------------------------
-the FNPCT package v1.0b 2022/01/29
+the FNPCT package v1.1 2022/02/03
footnotes' interaction with punctuation
diff --git a/macros/latex/contrib/fnpct/fnpct-manual.cls b/macros/latex/contrib/fnpct/fnpct-manual.cls
index 6b3aa77698..95cfab1a77 100644
--- a/macros/latex/contrib/fnpct/fnpct-manual.cls
+++ b/macros/latex/contrib/fnpct/fnpct-manual.cls
@@ -23,7 +23,7 @@
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
\RequirePackage[multiple]{fnpct}
-\ProvidesClass{fnpct-manual}[2021/01/17]
+\ProvidesClass{fnpct-manual}[2022/02/03]
\LoadClass[load-preamble,add-index]{cnltx-doc}
\RequirePackage{imakeidx}
@@ -327,5 +327,8 @@
\fnpct@add@version{2019-10-05}{0.5}
\fnpct@add@version{2020-01-12}{0.5a}
\fnpct@add@version{2021-01-21}{1.0}
+\fnpct@add@version{2022-01-04}{1.0a}
+\fnpct@add@version{2022-01-29}{1.0b}
+\fnpct@add@version{2022-02-03}{1.1}
\endinput
diff --git a/macros/latex/contrib/fnpct/fnpct-manual.pdf b/macros/latex/contrib/fnpct/fnpct-manual.pdf
index 9f60e1b59a..bd6098e43f 100644
--- a/macros/latex/contrib/fnpct/fnpct-manual.pdf
+++ b/macros/latex/contrib/fnpct/fnpct-manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/fnpct/fnpct-manual.tex b/macros/latex/contrib/fnpct/fnpct-manual.tex
index ceebe632fc..99968777c7 100644
--- a/macros/latex/contrib/fnpct/fnpct-manual.tex
+++ b/macros/latex/contrib/fnpct/fnpct-manual.tex
@@ -105,7 +105,8 @@ full stop. Additional punctuation marks can be added to the switching
behavior and the amount of kerning can be set for each punctuation mark
individually. This behavior can also be turned off.
-\subsection{Basics}
+\subsection{New Behavior of \cs*{footnote}}
+\subsubsection{Interaction With Punctuation}
The \fnpct\ package basically does two things to footnotes:
\begin{itemize}
\item if footnote marks are followed by a comma or a full stop\footnote{More
@@ -163,6 +164,20 @@ amount specified with the option \option{before-punct-space}.
\caption{The effect of \fnpct.}\label{fig:effects}
\end{figure}
+\subsubsection{Space Before Footnotes}\label{sec:space-before}
+\fnpct\sinceversion{1.1} tries to help you in one more way: it removes a
+possible space before a footnote command:
+
+\begin{example}
+ The three little pigs built their houses out of straw \footnote{not to be
+ confused with hay}, sticks \footnote{or lumber according to some sources}
+ and bricks \footnote{probably fired clay bricks}.
+\end{example}
+
+For this behavior it uses \pkg{biblatex}'s (or \pkg{csquotes}') command
+\cs{unspace} if available. Otherwise it defines the command for itself. This
+behavior can be turned off by an option.
+
\subsection{Temporarily disable (or enable) switching -- new syntax of the
\cs*{footnote} command}
One maybe want to put some footnote marks \emph{before} the punctuation and
@@ -209,6 +224,9 @@ In case you set \keyis{reverse}{true} the \sarg\ argument temporarily
Switches of \fnpct's mechanism.
\keybool{reverse}\Default{false}
This option reverses the behavior of starred and un-starred footnotes.
+ \keybool{unspace}\Default{true}
+ \sinceversion{1.1}This option turns the behavior described in
+ section~\ref{sec:space-before} off or on.
\keybool{ranges}\Default{false}
Activates ranges for multiple footnotes. This is not compatible with
\pkg{hyperref} and does not work for the marks of some packages.
@@ -356,6 +374,14 @@ reliable as it is now. For that reason it defined the following command:
confused with hay}, sticks\footnote{or lumber according to some sources}
and bricks\multfootnote{probably fired clay bricks;or something else}.
\end{example}
+\begin{options}
+ \keyval{mult-variant-prefix}{letters}\Default{mult}
+ \sinceversion{1.1}Determines how the variant commands created by the
+ \option{multiple} option are named. Choosing
+ \keyis{mult-variant-prefix}{m} would create \cs*{mfootnote} etc.\@ instead
+ of \cs{multfootnote}.
+\end{options}
+
This command splits its content at every occurrence of \code{;} and creates a
footnote for each. This delimiter can be changed:
\begin{options}
@@ -591,6 +617,7 @@ You could use another token for the star, though, if needed:
\IfNoValueTF{#2}
{#NOTE*{#4}}
{\IfNoValueTF{#3}{#NOTE*[#2]{#4}}{#NOTE*[#2][#3]{#4}}}%
+ }%
}
\end{sourcecode}
Testing showed no problems whatsoever but \fnpct\ does not adapt the command
diff --git a/macros/latex/contrib/fnpct/fnpct.sty b/macros/latex/contrib/fnpct/fnpct.sty
index 9236dcfdde..175aa7c43f 100644
--- a/macros/latex/contrib/fnpct/fnpct.sty
+++ b/macros/latex/contrib/fnpct/fnpct.sty
@@ -27,10 +27,10 @@
\DeclareHookRule {begindocument} {fnpct} {after} {hyperref}
-\tl_const:Nn \c_fnpct_date_tl {2022/01/29}
+\tl_const:Nn \c_fnpct_date_tl {2022/02/03}
\tl_const:Nn \c_fnpct_version_major_number_tl {1}
-\tl_const:Nn \c_fnpct_version_minor_number_tl {0}
-\tl_const:Nn \c_fnpct_version_subrelease_tl {b}
+\tl_const:Nn \c_fnpct_version_minor_number_tl {1}
+\tl_const:Nn \c_fnpct_version_subrelease_tl {}
\tl_const:Nx \c_fnpct_version_number_tl
{
\c_fnpct_version_major_number_tl .
@@ -85,6 +85,7 @@
\bool_new:N \g__fnpct_multiple_bool
\bool_new:N \g__fnpct_text_bool
\bool_new:N \l__fnpct_debug_bool
+\bool_new:N \l__fnpct_unspace_bool
\tl_new:N \l_fnpct_action_tl
\tl_new:N \l_fnpct_last_action_tl
@@ -93,7 +94,7 @@
\tl_new:N \l__fnpct_range_tl
\tl_new:N \l__fnpct_separate_tl
\tl_new:N \l__fnpct_multiple_footnotes_delimiter_tl
-\tl_set:Nn \l__fnpct_multiple_footnotes_delimiter_tl {;}
+\tl_new:N \l__fnpct_mult_variant_prefix_tl
\tl_new:N \g__fnpct_this_note_tl
\prop_new:N \l__fnpct_trailing_tokens_prop
@@ -123,11 +124,12 @@
You~ need~ to~ use~ \token_to_str:N \usepackage [#1] {fnpct} .
}
-\msg_new:nnn {fnpct} {unknown-option}
+\msg_new:nnn {fnpct} {unknown-load-time-option}
{
Unknown~ option~ `#1'! \\
I~ don't~ know~ the~ option~ `#1'.~ Please~ make~ sure~ there~ is~ no~
- typo.~ Check~ the~ manual~ for~ help.
+ typo.~ Check~ the~ manual~ for~ help.~ Did~ you~ mean~ to~ use~ it~ in~
+ \token_to_str:N \setfnpct ?
}
\msg_new:nnn {fnpct} {dont-mess-around}
@@ -198,7 +200,7 @@
\cs_new_protected:Npn \__fnpct_loadtime_warning:n #1
{ \msg_warning:nnV {fnpct} {#1} \l_keys_key_str }
-\keys_define:nn {fnpct/package}
+\keys_define:nn {fnpct/load-time}
{
multiple .bool_gset:N = \g__fnpct_multiple_bool ,
multiple .initial:n = false ,
@@ -213,12 +215,12 @@
dont-mess-around .default:n = true ,
dont-mess-around .initial:n = false ,
unknown .code:n =
- \__fnpct_loadtime_warning:n {unknown-option}
+ \__fnpct_loadtime_warning:n {unknown-load-time-option}
}
-\ProcessKeysPackageOptions {fnpct/package}
+\ProcessKeysPackageOptions {fnpct/load-time}
-\keys_define:nn {fnpct/package}
+\keys_define:nn {fnpct/load-time}
{
multiple .code:n = \__fnpct_loadtime_error:n {load-time-option} ,
debug .code:n = \__fnpct_loadtime_error:n {load-time-option} ,
@@ -277,7 +279,7 @@
\cs_generate_variant:Nn \fnpct_skip_nobreak:N {c}
% --------------------------------------------------------------------------
-% checking for trailing tokens - reuse an idea from acro
+% checking for trailing tokens - reuse an idea from `acro'
% #1: name
\cs_new_protected:Npn \fnpct_new_class:n #1
{
@@ -294,14 +296,14 @@
% #1: name
% #2: code
-\cs_new_protected:Npn \fnpct_do_action:nnw #1#2 \fnpct_end:
+\cs_new_protected:Npn \__fnpct_do_action:nnw #1#2 \fnpct_end:
{
\prop_if_in:NnTF \g__fnpct_actions_prop {#1}
{ \fnpct_end: \prop_item:Nn \g__fnpct_actions_prop {#1} }
{ \fnpct_end: \use:n }
{#2}
}
-\cs_generate_variant:Nn \fnpct_do_action:nnw {V}
+\cs_generate_variant:Nn \__fnpct_do_action:nnw {V}
% #1: name
% #2: class
@@ -678,9 +680,37 @@
\cs_new_protected:Npn \__fnpct_execute: {}
+\hook_gput_code:nnn {begindocument} {fnpct}
+ {
+ \bool_lazy_or:nnTF
+ { \fnpct_if_package_loaded_p:n {biblatex} }
+ { \fnpct_if_package_loaded_p:n {csquotes} }
+ {
+ \cs_new_protected:Npn \fnpct_unspace:
+ { \bool_if:NT \l__fnpct_unspace_bool { \unspace } }
+ }
+ {
+ \cs_new_protected:Npn \fnpct_unspace:
+ {
+ \bool_if:NT \l__fnpct_unspace_bool
+ {
+ \mode_if_horizontal:T
+ {
+ \dim_compare:nNnTF \lastskip > {0pt}
+ { \unskip \fnpct_unspace: }
+ {
+ \int_compare:nNnT \lastpenalty > {0pt}
+ { \unpenalty \fnpct_unspace: }
+ }
+ }
+ }
+ }
+ }
+ }
+
% #1: boolean
\cs_new_protected:Npn \fnpct_begin:
- { \__fnpct_check_after_end:w }
+ { \fnpct_unspace: \__fnpct_check_after_end:w }
% #1: code
\cs_new_protected:Npn \__fnpct_check_after_end:w #1 \fnpct_end:
@@ -692,7 +722,7 @@
\prop_get:NVN \l__fnpct_trailing_actions_prop
\l_fnpct_trailing_token_tl
\l_fnpct_action_tl
- \fnpct_do_action:Vnw \l_fnpct_action_tl {#1}
+ \__fnpct_do_action:Vnw \l_fnpct_action_tl {#1}
}
{
% no trailing punctuation
@@ -716,8 +746,7 @@
{
\bool_if:NF \l__fnpct_dont_mess_around_bool
{
- \fnpct_if_switched:F
- { \fnpct_add_punctuation_space:n {after} }
+ \fnpct_if_switched:F { \fnpct_add_punctuation_space:n {after} }
\bool_if:NF \l_fnpct_trailing_action_bool
{ % no punctiation following
\bool_if:NF \l__fnpct_end_collection_bool
@@ -758,7 +787,6 @@
% #1: command
% #2: argument spec
% #3: code where #NOTE refers to the original note
-
\cs_new_protected:Npn \fnpct_adapt_note:Nnn #1#2#3
{
\fnpct_if_adapted:NF #1
@@ -804,7 +832,7 @@
{
\bool_if:NTF \l__fnpct_reverse_bool
{ \bool_if:nF }
- { \bool_if:NT }
+ { \bool_if:nT }
{#1} { \bool_set_true:N \l__fnpct_switched_bool }
}
@@ -834,22 +862,17 @@
\NewDocumentCommand \AdaptNote {mmom}
{
\fnpct_adapt_note:Nnn #1 {#2} {#4}
- \IfNoValueF {#3}
- { \fnpct_set_counter_name:Nn #1 {#3} }
+ \IfNoValueF {#3} { \fnpct_set_counter_name:Nn #1 {#3} }
}
\NewDocumentCommand \AdaptNoteName {mmom}
{
\fnpct_adapt_note:cnn {#1} {#2} {#4}
- \IfNoValueF {#3}
- { \fnpct_set_counter_name:cn {#1} {#3} }
+ \IfNoValueF {#3} { \fnpct_set_counter_name:cn {#1} {#3} }
}
\NewDocumentCommand \AdaptText {mmm}
- {
- \fnpct_adapt_note:Nnn #1 {#2}
- { \fnpct_text: #3 }
- }
+ { \fnpct_adapt_note:Nnn #1 {#2} { \fnpct_text: #3 } }
\NewDocumentCommand \innernote {+m}
{ \msg_warning:nn {fnpct} {command-removed} \use:n {#1} }
@@ -890,17 +913,20 @@
keep-ranges .initial:n = false ,
dont-mess-around .bool_set:N = \l__fnpct_dont_mess_around_bool ,
dont-mess-around .initial:n = false ,
- mult-fn-delim .code:n =
- \tl_set:Nn \l__fnpct_multiple_footnotes_delimiter_tl {#1} ,
- separation-symbol .code:n =
- \renewcommand* \multfootsep {#1} ,
- range-symbol .code:n =
- \renewcommand* \multfootrange {#1} ,
+ unspace .bool_set:N = \l__fnpct_unspace_bool ,
+ unspace .initial:n = true ,
+ mult-fn-delim .tl_set:N = \l__fnpct_multiple_footnotes_delimiter_tl ,
+ mult-fn-delim .initial:n = {;} ,
+ mult-variant-prefix .tl_set:N = \l__fnpct_mult_variant_prefix_tl ,
+ mult-variant-prefix .initial:n = mult ,
+ separation-symbol .code:n = \renewcommand* \multfootsep {#1} ,
+ range-symbol .code:n = \renewcommand* \multfootrange {#1} ,
print-separation .tl_set:N = \l__fnpct_separate_tl ,
print-separation .initial:n = \textsuperscript { \multfootsep } ,
print-range .tl_set:N = \l__fnpct_range_tl ,
print-range .initial:n = \textsuperscript { \multfootrange } ,
reverse .bool_set:N = \l__fnpct_reverse_bool ,
+ punct-after .code:n = \fnpct_deprecate_option:n {reverse} ,
after-punct-space .code:n =
\fnpct_foreach_action:nn {punctuation}
{ \keys_set:nn {fnpct} { after-##1-space = #1 } } ,
@@ -946,7 +972,7 @@
\cs_new_protected:Npn \fnpct_create_mult_variant:N #1
{
\exp_args:Nc \NewDocumentCommand
- { mult \__fnpct_remove_backslash:N #1 }
+ { \l__fnpct_mult_variant_prefix_tl \__fnpct_remove_backslash:N #1 }
{ sm }
{
\seq_set_split:NVn \l__fnpct_tmpa_seq
@@ -1056,6 +1082,7 @@
{ \bool_set_true:N \l__fnpct_makepagenote_bool }
}
+% `sepfootnotes' package:
\fnpct_special_treatment:nn {sepfootnotes}
{
\cs_new_eq:NN \fnpct_sepfootnote_new:n \sep@new
@@ -1123,7 +1150,7 @@
{ \IfNoValueTF {#1} {#NOTE} {#NOTE[#1]} }
\fnpct_if_multiple:T { \MultVariant \sidenote }
}
- % sidenotes:
+ %% sidenotes:
\fnpct_treatment:nn {sidenotes}
{
% `sidenotes' implements its \sidenote in terms of the user
@@ -1131,6 +1158,7 @@
% difficult if not impossible to adapt its commands
\msg_warning:nnn {fnpct} {cannot-adapt} {sidenotes}
}
+ %% tufte-latex:
\bool_lazy_or:nnT
{ \fnpct_if_class_loaded_p:n {tufte-handout} }
{ \fnpct_if_class_loaded_p:n {tufte-book} }
@@ -1302,6 +1330,7 @@
}
}
}
+
\file_input_stop:
% --------------------------------------------------------------------------
@@ -1396,3 +1425,7 @@ tablefootnote
future versions, depending on user feedback)
2022/01/04 v1.0a - correct file hooks
2022/01/29 v1.0b - remove erroneously inserted horizontal skip
+2022/02/03 v1.1 - add \fnpct_unspace: (similar/equal to biblatex's \unspace),
+ see https://tex.stackexchange.com/questions/467561/
+ - new option `mult-variant-prefix'
+ - new option `unspace'