From b5dd4cad90908b9b2c1fa8e6eb4be53f350ef970 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sat, 17 Aug 2024 03:01:50 +0000 Subject: CTAN sync 202408170301 --- macros/latex/contrib/harmony/README | 27 +- macros/latex/contrib/harmony/harmony.pdf | Bin 150295 -> 177261 bytes macros/latex/contrib/harmony/harmony.sty | 186 +++++++--- macros/latex/contrib/harmony/harmony.tex | 111 +++--- macros/latex/contrib/magicwatermark/README.md | 2 +- .../magicwatermark/doc/magicwatermark-cn.pdf | Bin 0 -> 134688 bytes .../magicwatermark/doc/magicwatermark-cn.tex | 373 +++++++++++++++++++ .../magicwatermark/doc/magicwatermark-en.pdf | Bin 0 -> 93645 bytes .../magicwatermark/doc/magicwatermark-en.tex | 400 +++++++++++++++++++++ .../contrib/magicwatermark/doc/magicwatermark.pdf | Bin 134525 -> 0 bytes .../contrib/magicwatermark/doc/magicwatermark.tex | 373 ------------------- .../contrib/magicwatermark/magicwatermark.sty | 13 +- 12 files changed, 976 insertions(+), 509 deletions(-) create mode 100644 macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.pdf create mode 100644 macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.tex create mode 100644 macros/latex/contrib/magicwatermark/doc/magicwatermark-en.pdf create mode 100644 macros/latex/contrib/magicwatermark/doc/magicwatermark-en.tex delete mode 100644 macros/latex/contrib/magicwatermark/doc/magicwatermark.pdf delete mode 100644 macros/latex/contrib/magicwatermark/doc/magicwatermark.tex (limited to 'macros/latex/contrib') diff --git a/macros/latex/contrib/harmony/README b/macros/latex/contrib/harmony/README index da777f5964..39f72b35f7 100644 --- a/macros/latex/contrib/harmony/README +++ b/macros/latex/contrib/harmony/README @@ -1,43 +1,26 @@ -harmony.sty 2007/05/04 +harmony 2024/08/01 -Copyright 2005 - 2007 +Copyright 2005 - 2024 Dagny Wegner -Arnim Wegner +Arnim Wegner This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license or (at your option) any later version. -The latest version of this license is in -http://www.latex-project.org/lppl.txt -and version 1.3 or later is part of all distributions -of LaTeX version 2005/12/01 or later. - -This work has the LPPL maintenance status `maintained'. - -The Current Maintainers of this work are -Dagny Wegner and Arnim Wegner. This work consists of the files harmony.sty, harmony.tex, harmony.pdf, and Readme. -------------------------------------------------------- - -harmony.sty uses the packages ifthen and amssymb -and the fonts lcirclew10, musix11, and musix13. - -------------------------------------------------------- +harmony.sty uses the packages ifthen, mathtools and amssymb +and the fonts lcircle10, musix11 and musix13. harmony.sty is a LaTeX2e package for typesetting harmony symbols etc. in musicological texts; usage: cf. harmony.pdf. -Many commands in this package are only suitable -for size 12pt ! harmony.sty ist ein LaTeX2e-Package zum Setzen von Harmoniesymbolen etc. in musikwissenschaftlichen Texten; Benutzung: vgl. harmony.pdf. -Viele Befehle in diesem Package sind -nur fr die Schriftgre 12pt geeignet! diff --git a/macros/latex/contrib/harmony/harmony.pdf b/macros/latex/contrib/harmony/harmony.pdf index 4b523de911..b792390663 100644 Binary files a/macros/latex/contrib/harmony/harmony.pdf and b/macros/latex/contrib/harmony/harmony.pdf differ diff --git a/macros/latex/contrib/harmony/harmony.sty b/macros/latex/contrib/harmony/harmony.sty index ce528cf085..1145113c4d 100644 --- a/macros/latex/contrib/harmony/harmony.sty +++ b/macros/latex/contrib/harmony/harmony.sty @@ -1,29 +1,30 @@ -%% harmony.sty 2007/05/04 -%% Copyright 2005 - 2007 +%% harmony.sty 2024/08/01 +%% Copyright 2005 - 2024 %% Dagny Wegner -%% Arnim Wegner +%% Arnim Wegner % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either % version 1.3 of this license or (at your option) any % later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions -% of LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainers of this work are -% Dagny Wegner and Arnim Wegner. % % This work consists of the files harmony.sty, % harmony.tex, harmony.pdf, and Readme. % ================================================================================== +\ProvidesPackage{harmony}[2024/08/01] \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{harmony}[2007/05/04] \RequirePackage{ifthen} \RequirePackage{amssymb} +\RequirePackage{mathtools} % contains \overbracket +% +\newcounter{notekorr} +\DeclareOption{8pt}{\setcounter{notekorr}{800}} +\DeclareOption{9pt}{\setcounter{notekorr}{900}} +\DeclareOption{10pt}{\setcounter{notekorr}{1000}} +\DeclareOption{11pt}{\setcounter{notekorr}{1100}} +\DeclareOption{12pt}{\setcounter{notekorr}{1200}} +\DeclareOption{13pt}{\setcounter{notekorr}{1300}} +\DeclareOption{14pt}{\setcounter{notekorr}{1400}} \DeclareOption{sf}{\def\FAM{\sffamily}} \DeclareOption{rm}{\def\FAM{\rmfamily}} \ExecuteOptions{sf} @@ -43,14 +44,31 @@ \newbox\nbxg \newbox\nbxh \newbox\nbxi -\newfont{\KREIS}{lcirclew10} -\newfont{\NOTEN}{musix13} -\newfont{\noten}{musix11}% 2007/05/03 +\newcounter{notescl} +\newcounter{fontscl} % -\newcommand{\Ohne}[2][0em]{% +\ifthenelse{\value{notekorr}=0}% +{\ifthenelse{\@ptsize<-2}{\setcounter{notescl}{800}}{} +\ifthenelse{\equal{\@ptsize}{-2}}{\setcounter{notescl}{800}}{} +\ifthenelse{\equal{\@ptsize}{-1}}{\setcounter{notescl}{900}}{} +\ifthenelse{\equal{\@ptsize}{0}}{\setcounter{notescl}{1000}}{} +\ifthenelse{\equal{\@ptsize}{1}}{\setcounter{notescl}{1100}}{} +\ifthenelse{\equal{\@ptsize}{2}}{\setcounter{notescl}{1200}}{} +\ifthenelse{\equal{\@ptsize}{3}}{\setcounter{notescl}{1300}}{} +\ifthenelse{\equal{\@ptsize}{4}}{\setcounter{notescl}{1400}}{} +\ifthenelse{\@ptsize>4}{\setcounter{notescl}{1400}}{}} +{\setcounter{notescl}{\value{notekorr}}} +% +\newfont{\NOTEN}{musix13 scaled \value{notescl}} +\newfont{\noten}{musix11 scaled \value{notescl}} +\setcounter{fontscl}{\value{notescl}} +\addtocounter{fontscl}{1000} +\newfont{\KREIS}{lcircle10 scaled \value{fontscl}} +% +\newcommand{\Ohne}[2][0.17em]{% \setbox\nbxi=\hbox{% \FAM% -\setbox\nbxa=\hbox{\sl\large /}% +\setbox\nbxa=\hbox{\textsl\large\raisebox{0.2ex}{/}}% #2% \kern-0.8em% \kern#1% @@ -60,8 +78,14 @@ }% \unhbox\nbxi% } +\let\Sans\Ohne % \newcommand{\Dohne}{\Ohne{D}} +\let\Dsans\Dohne +\newcommand{\DohneR}{\framebox{\Dohne}} +\let\DsansR\DohneR +\newcommand{\Dohner}{\frame{\Dohne}} +\let\Dsansr\Dohner % \newcommand{\DD}{% \setbox\nbxi=\hbox{% @@ -73,6 +97,9 @@ \unhbox\nbxi% } % +\newcommand{\DDR}{\framebox{\DD}} +\newcommand{\DDr}{\frame{\DD}} +% \newcommand{\DS}{% \setbox\nbxi=\hbox{% \FAM% @@ -96,7 +123,7 @@ \newcommand{\DDohne}{% \setbox\nbxi=\hbox{% \FAM% -\setbox\nbxa=\hbox{\sl\large /}% +\setbox\nbxa=\hbox{\textsl\large\raisebox{0.25ex}{/}}% \raise0.2ex\hbox{D}% \kern-0.5em% \lower0.2ex\hbox{D}% @@ -107,17 +134,23 @@ }% \box\nbxi% } +\let\DDsans\DDohne +% +\newcommand{\DDohneR}{\framebox{\DDohne}} +\let\DDsansR\DDohneR +\newcommand{\DDohner}{\frame{\DDohne}} +\let\DDsansr\DDohner % \newcommand{\VM}{% \setbox\nbxg=\hbox{>}% \setbox\nbxh=\hbox to \wd\nbxg{% -\raise0.24ex\hbox{{\boldmath$\scriptscriptstyle{>}$\unboldmath}\hss}}% 2005/05/10 +\raise0.24ex\hbox{{\boldmath$\scriptscriptstyle{>}$\unboldmath}\hss}}% \box\nbxh} % \newcommand{\UB}{% \setbox\nbxg=\hbox{<}% \setbox\nbxh=\hbox to \wd\nbxg{% -\raise0.24ex\hbox{\boldmath$\scriptscriptstyle{<}$\unboldmath\hss}}% 2005/05/10 +\raise0.24ex\hbox{\boldmath$\scriptscriptstyle{<}$\unboldmath\hss}}% \box\nbxh} % \newcommand{\HAa}[3]{% @@ -243,6 +276,9 @@ {\HAc{#1}{#2}{#3}{#4}{#5}}% } % +\def\HHR.#1.#2.#3.#4.#5.{\framebox{\HH.#1.#2.#3.#4.#5.}}% +\def\HHr.#1.#2.#3.#4.#5.{\frame{\HH.#1.#2.#3.#4.#5.\hspace{0.17em}}}% +% \newcommand{\FERM}[2][0.1pt]{% \setbox\nbxi=\hbox{% \FAM% @@ -287,15 +323,13 @@ \kern-\tmpdima\box\nbxb% }} % -\newcommand{\Kr}[1]{% -\ifthenelse{\equal{\@ptsize}{2}}{\@tempcnta=110}% -{\ifthenelse{\equal{\@ptsize}{1}}{\@tempcnta=109}% -{\@tempcnta=108}}% +\newcommand{\Kr}[2][102]{% +\ifthenelse{#1>110}{\@tempcnta=110}% +{\ifthenelse{#1<100}{\@tempcnta=100}{\@tempcnta=#1}} \setbox\nbxi=\hbox{% -\FAM\small% \setbox\nbxa=\hbox{#1}% \setbox\nbxb=\hbox{\KREIS\char\@tempcnta}% -\setbox\nbxc=\hbox to \wd\nbxb{\hss #1\hss}% +\setbox\nbxc=\hbox to \wd\nbxb{\hss #2\hss}% \tmpdima=0.5\ht\nbxa% \advance\tmpdima by -0.4\dp\nbxa\relax% \copy\nbxc% @@ -332,8 +366,8 @@ {\raisebox{0.58ex}[8pt][2pt]{\kern-1pt\NOTEN\symbol{82}\kern0.3em}}}% {\kern0.05em\ueber{#1}{#2}\kern0.05em% }}} -% -\newcommand{\Ganz}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{9}}\kern1.35em}} +% Noten +\newcommand{\Ganz}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{9}}\kern1.5em}} \newcommand{\Halb}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{8}\kern0.936em% \raisebox{0.55ex}{\symbol{16}}}\kern0.2em}} \newcommand{\Vier}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{7}\kern0.955em% @@ -343,7 +377,7 @@ \newcommand{\Sech}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{7}\kern0.955em% \raisebox{0.55ex}{\symbol{16}}}\symbol{41}\kern0.9em}} \newcommand{\Zwdr}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{7}\kern0.955em% -\raisebox{0.55ex}{\symbol{16}}}\symbol{42}\kern0.9em}} +\raisebox{0.55ex}{\symbol{16}}\raisebox{1.3ex}{\symbol{16}}}\symbol{42}\kern0.9em}} \newcommand{\GaPa}{{\NOTEN\kern0.055em\raisebox{0.25ex}{\symbol{60}}\kern0.05em}} \newcommand{\HaPa}{{\NOTEN\kern0.055em\raisebox{0.25ex}{\symbol{60}}\kern0.05em}} \newcommand{\ViPa}{{\NOTEN\kern0.05em\raisebox{-0.8ex}{\symbol{62}}\kern0.955em}} @@ -351,28 +385,76 @@ \newcommand{\SePa}{{\NOTEN\kern0.15em\raisebox{-0.4ex}{\symbol{64}}\kern1.3em}} \newcommand{\ZwPa}{{\NOTEN\kern0.25em\raisebox{-0.8ex}{\symbol{65}}\kern1.4em}} \newcommand{\Pu}{{\NOTEN\kern-0.2em\raisebox{-0.5ex}{\symbol{24}}\kern1em}} -\newcommand{\AAcht}{\Vier\kern0.1em\Vier{\NOTEN\kern-1.72em\raisebox{3.1ex}% +\newcommand{\AAcht}{{\NOTEN\Vier\kern0.3em\Vier\kern-1.72em\raisebox{3.1ex}% {\symbol{61}\kern-0.87em\symbol{61}}}} -\newcommand{\AchtBL}% 2007/05/03 -{\kern0.135em\Vier% -{\NOTEN\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern0.09em}} -\newcommand{\SechBL}% 2007/05/03 -{\kern0.135em\Vier% -{\NOTEN\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}% +\newcommand{\AchtBL}{{\NOTEN\Vier\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}}} +\newcommand{\AchtBR}{{\NOTEN\Vier\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}}} +\newcommand{\SechBL}{{\NOTEN\Vier\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}% \kern-1.63em\raisebox{2.3ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern0.09em}} -\newcommand{\SechBl}% 2007/05/03 -{\kern0.135em\Vier% -{\NOTEN\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}% +\newcommand{\SechBl}{{\NOTEN\Vier\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}% \kern-1.63em\raisebox{2.3ex}{{\noten\kern0.9em\symbol{61}}}\kern0.09em}} -\newcommand{\AchtBR}% 2007/05/03 -{\kern0.135em\Vier% -{\NOTEN\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern-1em}} -\newcommand{\SechBR}% 2007/05/03 -{\kern0.135em\Vier% -{\NOTEN\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}% -\kern-1.63em\raisebox{2.3ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern-1.01em}} -\newcommand{\SechBr}% 2007/05/03 -{\kern0.135em\Vier% -{\NOTEN\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}% -\kern-1.63em\raisebox{2.3ex}{{\noten\kern-0.12em\symbol{61}}}\kern-0.3em}} -% etc. ... ! Define your own commands! \ No newline at end of file +\newcommand{\SechBR}{{\NOTEN\Vier\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}% +\kern-1.63em\raisebox{2.3ex}{\symbol{61}\kern-0.87em\symbol{61}}}} +\newcommand{\SechBr}{{\NOTEN\Vier\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}% +\kern-1.63em\raisebox{2.3ex}{{\noten\kern-0.12em\symbol{61}}}\kern0.87em}} +% +\newcommand{\Blkn}[2]{\raisebox{#2}{{\NOTEN\kern#1\symbol{61}}}}% +% +\newcommand{\Overset}[3][0pt]{\ensuremath{\overset{\raisebox{#1}{\scriptsize\ensuremath{#2}}}{#3}}} +% +\newcommand\achteltriole{% + \ensuremath{\NOTEN% + \Overset[-1ex]% + {\text{\itshape\tiny\kern0.7em 3}}% + {\AchtBR\kern-1.1em\Vier\kern0.4em\AchtBL}% + }% +} +% +\newcommand\vierteltrioleA{% + \ensuremath{\NOTEN% + \Overset[-1ex]% + {\text{\itshape\tiny 3}}% + {\overbracket[0.45pt]{% + \rule{0pt}{2.4ex}\Vier\kern0.5em\Vier\kern0.5em\Vier\kern0.25em}% + }% + }% +} +% +\newcommand\vierteltrioleB{% + \ensuremath{\NOTEN% + \Overset% + {\raisebox{1ex}{% + \rule{0.45pt}{1ex}% + \kern0.25em\raisebox{0.88ex}{\kern-0.3em\rule{1.15em}{0.45pt}}% + \raisebox{0.53ex}{\text{\itshape\tiny 3}}% + \raisebox{0.88ex}{\rule{1.15em}{0.45pt}}% + \kern-0.05em\rule{0.45pt}{1ex}% + }}% + {\Vier\kern0.5em\Vier\kern0.5em\Vier\kern0.3em}% + }% +} +% +\newcommand\halbetrioleA{% + \ensuremath{\NOTEN% + \Overset[-1ex]% + {\text{\itshape\tiny 3}}% + {\overbracket[0.45pt]{% + \rule{0pt}{2.4ex}\Halb\kern0.5em\Halb\kern0.5em\Halb\kern0.25em}% + }% + }% +} +% +\newcommand\halbetrioleB{% + \ensuremath{\NOTEN% + \Overset% + {\raisebox{1ex}{% + \rule{0.45pt}{1ex}% + \kern0.25em\raisebox{0.88ex}{\kern-0.3em\rule{1.15em}{0.45pt}}% + \raisebox{0.53ex}{\text{\itshape\tiny 3}}% + \raisebox{0.88ex}{\rule{1.15em}{0.45pt}}% + \kern-0.05em\rule{0.45pt}{1ex}% + }}% + {\Halb\kern0.5em\Halb\kern0.5em\Halb\kern0.3em}% + }% +} +% ================================================================================== \ No newline at end of file diff --git a/macros/latex/contrib/harmony/harmony.tex b/macros/latex/contrib/harmony/harmony.tex index 326aff42c3..7b163dc7ab 100644 --- a/macros/latex/contrib/harmony/harmony.tex +++ b/macros/latex/contrib/harmony/harmony.tex @@ -1,38 +1,29 @@ -%% harmony.sty 2007/05/04 -%% Copyright 2005 - 2007 +%% harmony.sty 2024/08/01 +%% Copyright 2005 - 2024 %% Dagny Wegner -%% Arnim Wegner +%% Arnim Wegner % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either % version 1.3 of this license or (at your option) any % later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions -% of LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainers of this work are -% Dagny Wegner and Arnim Wegner. % % This work consists of the files harmony.sty, % harmony.tex, harmony.pdf, and Readme. -%==================================================================================== -\documentclass[12pt,origlongtable,pdftex]{scrartcl} +% ================================================================================== +\documentclass[paper=a4,fontsize=12pt,origlongtable]{scrartcl} % \usepackage[ngerman]{babel} \usepackage[T1]{fontenc} \usepackage{mathpazo} -\usepackage[ansinew]{inputenc} \usepackage{array} \usepackage{longtable} -\usepackage[pdftex,a4paper]{hyperref} +\usepackage[pdftex]{hyperref} % -\usepackage{harmony} +\usepackage[12pt]{harmony} % options: 8pt 9pt 10pt 11pt 12pt 13pt 14pt % -\setlength{\textheight}{240mm} +\setlength{\voffset}{-10mm} +\setlength{\textheight}{255mm} \setlength{\overfullrule}{0pt} \setlength{\extrarowheight}{2ex} \setlength{\parindent}{0pt} @@ -49,45 +40,37 @@ pdfstartview = {Fit}, %------------------------------------------------------------------------------------- \begin{document} % -\title{harmony.sty} -\author{Dagny Wegner \and Arnim Wegner} -\date{2007/05/04} +\title{harmony} +\author{Dagny Wegner \and Arnim Wegner} +\date{2024/08/01} \maketitle % \vfill % \begin{center} -Copyright 2005 - 2007\\ +Copyright 2005 - 2024\\ Dagny Wegner \\ -Arnim Wegner +Arnim Wegner \end{center} This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either +conditions of the \LaTeX\ Project Public License, either version 1.3 of this license or (at your option) any later version. -The latest version of this license is in -http://www.latex-project.org/lppl.txt -and version 1.3 or later is part of all distributions -of LaTeX version 2005/12/01 or later. -This work has the LPPL maintenance status `maintained'. -The Current Maintainers of this work are -Dagny Wegner and Arnim Wegner. This work consists of the files harmony.sty, harmony.tex, harmony.pdf, and Readme. % \newpage % \begin{center} -This work was developed for the doctoral dissertation in musicology of\\ +The package harmony was first developed for the doctoral dissertation in\\ musicology of Dagny Wegner; cf. this dissertation for further examples.\\ -(Look at http://www.sub.uni-hamburg.de/opus/volltexte/2006/3047/ or -http://www.chmtl.indiana.edu/ddm/DNclassical.html)\\[2ex] -\textbf{Many commands in this package therefore are only suitable for size 12pt !} +(Look at https://ediss.sub.uni-hamburg.de/handle/ediss/1483)\\[1ex] +This package accepts the optional parameters 8pt, \dots ,14pt for the size\\ of the notes + independent of the fontsize of the document. \end{center} % -\vspace{2ex} -% -\begin{longtable}{|l|l|} +\vspace*{-5mm} +\begin{longtable}{|l|c|} % \caption*{\textbf{Usage and Examples}} \endfirsthead @@ -95,9 +78,11 @@ http://www.chmtl.indiana.edu/ddm/DNclassical.html)\\[2ex] \endhead % \hline -input & output\\ +Input & Output\\ \hline\hline \verb|\HH.X.u.v.w.z.|&\HH.X.u.v.w.z.\\ +\verb|\HHR.X.u.v.w.z.|&\HHR.X.u.v.w.z.\\ +\verb|\HHr.X.u.v.w.z.|&\HHr.X.u.v.w.z.\\ \verb|\HH.D.....|&\HH.D.....\\ \verb|\HH.D..7...|&\HH.D..7...\\ \verb|\HH.D.3....|&\HH.D.3....\\ @@ -105,19 +90,26 @@ input & output\\ \verb|\HH.D.3.9.7..|&\HH.D.3.9.7..\\ \verb|\HH.D.3.9.7.5.|&\HH.D.3.9.7.5.\\ \hline -\verb|\Dohne|&\Dohne\\ +\verb|\Dohne, \Dsans|&\Dohne\\ +\verb|\DohneR, \DsansR|&\DohneR\\ +\verb|\Dohner, \Dsansr|&\Dohner\\ \verb|\DD|&\DD\\ -\verb|\DDohne|&\DDohne\\ +\verb|\DDR|&\DDR\\ +\verb|\DDr|&\DDr\\ +\verb|\DDohne, \DDsans|&\DDohne\\ +\verb|\DDohneR, \DDsansR|&\DDohneR\\ +\verb|\DDohner. \DDsansr|&\DDohner\\ \verb|\DS|&\DS\\ \verb|\Ds|&\Ds\\ \verb|\UB|&\UB\\ \verb|\VM|&\VM\\ -\verb|\Ohne{D}|&\Ohne{D}\\ -\verb|\Ohne[3pt]{D}|&\Ohne[3pt]{D}\\ -\verb|\Ohne[-3pt]{D}|&\Ohne[-3pt]{D}\\ \hline \newpage \hline +\verb|\Ohne{D}, \Sans{D}|&\Ohne{D}\\ +\verb|\Ohne[3pt]{D}, \Sans[3pt]{D}|&\Ohne[3pt]{D}\\ +\verb|\Ohne[-3pt]{D}, \Sans[-3pt]{D}|&\Ohne[-3pt]{D}\\ +\hline \verb|\Fermi{X}|&\Fermi{X}\\ \verb|\Ferli{X}|&\Ferli{X}\\ \verb|\Ferli[5pt]{T}|&\Ferli[5pt]{T}\\ @@ -125,10 +117,9 @@ input & output\\ \hline \verb|\Umd{D}|&\Umd{D}\\ \verb|\Umd[5pt]{D}|&\Umd[5pt]{D}\\ -\hline \verb|\Kr{a:}|&\Kr{a:}\\ \verb|\Kr{f:} \Kr{g:}|&\Kr{f:} \Kr{g:}\\ -\verb|\Kr{\small fis:}|&\Kr{\small fis:}\\ +\verb|\Kr[105]{fis:} (#1: 100 - 110)|&\Kr[105]{fis:}\\[1ex] \hline \verb|\Takt{u}{v}|&\Takt{u}{v}\\ \verb|\Takt{3}{4}|&\Takt{3}{4}\\ @@ -142,12 +133,12 @@ input & output\\ \verb|\Umd{\HH.D.3.9.7.5.}|&\Umd{\HH.D.3.9.7.5.}\\ \verb|\Umd[5pt]{\HH.D.3.9.7.5.}|&\Umd[5pt]{\HH.D.3.9.7.5.}\\ \verb|\HH.\DDohne.5\VM.9\VM.7..|&\HH.\DDohne.5\VM.9\VM.7..\\ -\verb|\HH.\Ohne[0,1em]{Es}.5-3.7...|&\HH.\Ohne[0,1em]{Es}.5-3.7...\\ +\verb|\HH.\Ohne[0.1em]{Es}.5-3.7...|&\HH.\Ohne[0,1em]{Es}.5-3.7...\\ \verb|\Ferli[-1pt]{\HH.\DDohne.5\VM.9\VM.7..}|&\Ferli[-1pt]{\HH.\DDohne.5\VM.9\VM.7..}\\ \hline \newpage \hline -\verb|\Ganz|&\Ganz\\ +\verb|\Ganz|&\kern-0.1em\Ganz\\ \verb|\Halb|&\Halb\\ \verb|\Vier|&\Vier\\ \verb|\Acht|&\Acht\\ @@ -167,18 +158,28 @@ input & output\\ \verb|\SechBr|&\SechBr\\ \hline \verb|\Vier\AchtBL|&\Vier\AchtBL\\ +\verb|\Vier\kern0.2em\AchtBL|&\Vier\kern0.2em\AchtBL\\ \verb|\Vier\SechBL|&\Vier\SechBL\\ +\verb|\Vier\kern0.2em\SechBL|&\Vier\kern0.2em\SechBL\\ \verb|\Vier\SechBl|&\Vier\SechBl\\ +\verb|\Vier\kern0.2em\SechBl|&\Vier\kern0.2em\SechBl\\ \verb|\AchtBR\Vier|&\AchtBR\Vier\\ \verb|\SechBR\Vier|&\SechBR\Vier\\ \verb|\SechBr\Vier|&\SechBr\Vier\\ -\verb|\SechBr\Vier\SechBl|&\SechBr\Vier\SechBl\\ +\verb|\SechBr\Vier\kern0.2em\SechBl|&\SechBr\Vier\kern0.2em\SechBl\\ \verb|\AchtBR\AchtBR\AchtBL|&\AchtBR\AchtBR\AchtBL\\ -\verb|\AchtBR\kern-0.15em\AchtBR\kern-0.15em\AchtBL|% -&\AchtBR\kern-0.15em\AchtBR\kern-0.15em\AchtBL\\ \hline \newpage \hline +\verb|\Blkn{0em}{0ex}|&\Blkn{0ex}{0em}\\ +\verb|\AchtBR\Blkn{0.04em}{2.07ex}|&\AchtBR\Blkn{0.04em}{2.07ex}\\ +\hline +\verb|\achteltriole|&\kern-0.6em\achteltriole\\ +\verb|\vierteltrioleA|&\vierteltrioleA\\ +\verb|\vierteltrioleB|&\vierteltrioleB\\ +\verb|\halbetrioleA|&\halbetrioleA\\ +\verb|\halbetrioleB|&\halbetrioleB\\ +\hline \verb|\GaPa|&\GaPa\\ \verb|\HaPa|&\HaPa\\ \verb|\ViPa|&\ViPa\\ @@ -217,13 +218,13 @@ rm&rmfamily\\ \newcommand{\Str}[2][0.5]{\raise#1ex\hbox to #2em{\hrulefill}} \newcommand{\ST}{\h0.03h\Str[0.65]{0.27}\h0.03h} % -\h9h\Kr{g:}% +\h9h\Kr[103]{g:}% \h1h\HH.\DDohne.5\VM.9\VM.7..% \h0,5h\HH.D..6.4..% \h0,5h\HH.\DDohne.3.9\VM.7..% \h0,5h\HH.\Dohne.7.9\VM...% \h0,5h\HH.T.3....\\[1ex] -\h17h\Kr{d:}% +\h17h\Kr[102]{d:}% \h0,5h\Umd[1ex]{\HH.S.3....}% \h0,5h\HH.\DD.5\VM.7...% \h0,5h\HH.D..8\Str[0,65]{1,2}7\ST6\ST5.8\ST6\ST4\Str[0,65]{2}3.6\ST5\ST8% @@ -237,13 +238,13 @@ rm&rmfamily\\ \newcommand{\Str}[2][0.5]{\raise#1ex\hbox to #2em{\hrulefill}} \newcommand{\ST}{\h0.03h\Str[0.65]{0.27}\h0.03h} % -\h9h\Kr{g:}% +\h9h\Kr[103]{g:}% \h1h\HH.\DDohne.5\VM.9\VM.7..% \h0,5h\HH.D..6.4..% \h0,5h\HH.\DDohne.3.9\VM.7..% \h0,5h\HH.\Dohne.7.9\VM...% \h0,5h\HH.T.3....\\[1ex] -\h17h\Kr{d:}% +\h17h\Kr[102]{d:}% \h0,5h\Umd[1ex]{\HH.S.3....}% \h0,5h\HH.\DD.5\VM.7...% \h0,5h\HH.D..8\Str[0,65]{1,2}7\ST6\ST5.8\ST6\ST4\Str[0,65]{2}3.6\ST5\ST8% diff --git a/macros/latex/contrib/magicwatermark/README.md b/macros/latex/contrib/magicwatermark/README.md index 4bdaad4b2f..39615d2bb4 100644 --- a/macros/latex/contrib/magicwatermark/README.md +++ b/macros/latex/contrib/magicwatermark/README.md @@ -3,4 +3,4 @@ - Repository: https://github.com/ljguo1020/magicwatermark - License: The LaTeX Project Public License 1.3c -> magicwatermark is based on tikz and expl3, and can flexibly set backgrounds or watermarks. +magicwatermark is based on tikz and expl3, and can flexibly set backgrounds or watermarks. diff --git a/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.pdf b/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.pdf new file mode 100644 index 0000000000..c43ac7ff92 Binary files /dev/null and b/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.pdf differ diff --git a/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.tex b/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.tex new file mode 100644 index 0000000000..883f2b6808 --- /dev/null +++ b/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.tex @@ -0,0 +1,373 @@ +\documentclass{article} + +\usepackage{lipsum} + +\usepackage{../magicwatermark} + +\usepackage[margin = 2.51828cm]{geometry} + + +\def\pkgname{\textcolor{teal}{\texttt{magicwatermark}}} +\usepackage{indentfirst} +\pagestyle{empty} + +\usepackage[UTF8, scheme=plain, fontset=none, heading=true, zihao=-4]{ctex} +\setCJKmainfont[BoldFont={LXGWWenKai-Bold},ItalicFont={LXGWWenKai-Light}]{LXGWWenKai-Regular} +\setCJKsansfont[BoldFont={LXGWWenKai-Bold}]{LXGWWenKai-Regular} +\setCJKmonofont[BoldFont={LXGWWenKaiMono-Bold},ItalicFont={LXGWWenKaiMono-Light}]{LXGWWenKaiMono-Regular} + +\ctexset{ +% chapter={ +% format+=\raggedright, +% name = {第,部分}, +% afterskip = .5cm +% }, + section={ + format+=\raggedright, + afterskip = .5cm + }, + contentsname = {目次} +} + +\usepackage{fontspec} +\IfFontExistsTF{calibri.ttf} +{ + \setmainfont{calibri.ttf}[ + BoldFont = calibrib.ttf, + ItalicFont = calibrii.ttf, + BoldItalicFont = calibriz.ttf + ] +} +{} + +\usepackage[listings,breakable]{tcolorbox} + +\ExplSyntaxOn +\clist_new:N \l_function_variant_list %fuction variant list +\NewDocumentCommand{\function}{svo} % #1:function name #2: variant list +{ + \IfBooleanTF{#1} + { + \IfNoValueTF{#3} + { + \begin{tcolorbox}[width=\textwidth,left=1mm,right=1mm,top=1mm,bottom=1mm,sharp~corners,colback=white,boxrule=.5pt,colback=lime!30] + \texttt{Function}\hskip -2pt \Triangle\hskip -3pt \texttt{#2}\hfill \examplelabel* + \end{tcolorbox} + } + { + \clist_gset:Nn \l_function_variant_list {#3} + \begin{tcolorbox}[width=\textwidth,left=1mm,right=1mm,top=1mm,bottom=1mm,sharp~corners,colback=white,boxrule=.5pt,colback=lime!30] + \texttt{Function}\hskip -2pt \Triangle\hskip -3pt \texttt{#2\textcolor{gray}{(\clist_use:Nn \l_function_variant_list{|})}} \hfill \examplelabel* + \end{tcolorbox} + } + } + { + \IfNoValueTF{#3} + { + \def\functionn{ + \texttt{#2} + } + } + { + \clist_gset:Nn \l_function_variant_list {#3} + \def\functionn{ + \texttt{ + #2 + \textcolor{gray}{(\clist_use:Nn \l_function_variant_list{|})} + } + } + } + } + +} +\NewDocumentCommand{\examplelabel}{s} +{ + \IfBooleanTF{#1}{ + \raisebox{-0.5ex}{ + \tikz{ + \node[ball~color=purple,circle,outer~sep=0pt,scale=0.5] {\phantom{2}}; + }} + }{ + \raisebox{-0.5ex}{ + \tikz{ + \node[ball~color=cyan,circle,outer~sep=0pt,scale=0.5,font=\bfseries] {\theexample}; + }} + } +} +\ExplSyntaxOff +\def\Triangle{ % triangle icon + \raisebox{-0.3ex}{ + \tikz{ + \fill[scale=2,outer sep=0pt] (240:0.5ex) -- (0:0.5ex) -- (120:0.5ex); + } +}} +\newcounter{example} +\tcbset{ + example style/.style={ + sharp corners, + colback=white, + boxrule=.5pt, + breakable, + left=1mm,right=1mm,top=1mm,bottom=1mm, + fonttitle=\bfseries, + colbacktitle=lime!30, + coltitle=black, + % title={MagicWatermark}, + listing only + } +} + +\newtcblisting[use counter=example]{example}[1][]{ + listing options={ + style=tcblatex, + tabsize = 1, + language={[LaTeX]TeX}, + classoffset=0, + morekeywords = {MagicWatermark, foreach, includegraphics}, + keywordstyle={\color[RGB]{178,34,34}\bfseries}, + commentstyle={\color[RGB]{102,205,170}\itshape}, + classoffset=1, + morekeywords = {setup, pages, content, is, append, style}, + keywordstyle=\color{cyan!50!green}\bfseries, + }, + example style, + #1 + } + + +\MagicWatermark{ + setup = { + pages = {*}, + content = {P-\thepage}, + style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily} + }, + setup = { + pages = {even}, + style = {scale = 5, text = pink}, + content = {Watermark}, + is append + }, + setup = { + pages = {1}, + style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large\linespread{1}\selectfont, opacity = .1}, + content = { + \foreach \x in {0, ..., 500} {Magic Watermark } + }, + is append + } +} + + +\def\opt#1{\textcolor{magenta}{\texttt{#1}}} +\def\para#1{\textcolor[rgb]{0.13, 0.67, 0.8}{\texttt{#1}}} + +\usepackage[hidelinks]{hyperref} +\begin{document} + + +\vspace*{\fill} +\begin{center} + {\Huge \textcolor{teal}{\texttt{magicwatermark}} 宏包\footnote{\url{https://github.com/ljguo1020/magicwatermark}}} \\[.5cm] + {\Large 郭李军} \\[.5cm] + {\Large V1.2B}\\[1cm] +\begin{example}[] +\MagicWatermark{ + setup = { + pages = {*}, + content = {P-\thepage}, + style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily} + }, + setup = { + pages = {even}, + style = {scale = 5, text = pink}, + content = {Watermark}, + is append + }, + setup = { + pages = {1}, + style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large, opacity = .1}, + content = { + \foreach \x in {0, ..., 500} {Magic Watermark } + }, + is append + } +} +\end{example} +\end{center} + +\vspace*{\fill} + +\newpage + + +\linespread{1.3}\selectfont +\tableofcontents + +\section{介绍} + +\pkgname{} 是一个全新的水印宏包, 在 2022 年 6 月 17 日发布了第一版, 本次更新并不是基于第一版, 而是进行了重构. + +\pkgname{} 基于 \texttt{tikz} 和 \texttt{expl3}, 可以灵活的设置背景或水印. + +\section{使用} +\pkgname{} 的使用, 相比于其它同类功能的包来说, 可以说是易用性最高的, 它只提供了一个命令 \verb|\MagicWatermark|, 命令参数由多个 \opt{setup} 规则组成. +\begin{example}[] +\MagicWatermark{ + setup = {}, + setup = {}, + ... +} +\end{example} + +\opt{setup} 内部接受四个键值选项, 用于配置水印的表现形式. + +\subsection{pages} +\opt{pages} 接受一个逗号分割列表, 用于配置水印作用范围, 例如 \verb|pages = {2, 4, 5, 8-10}|, 表示选中页码为第 2, 4, 5, 8, 9, 10 这些页面. + +\opt{pages} 共接受 4 种配置规则, +\begin{itemize} + \item \para{*}, 表示所有页面; + \item \para{odd} 和 \para{oven}, 表示奇偶页; + \item 范围, 形如 \para{3-5}, \para{12-ii}; + \item 表达式, 形如 \para{2X+1}, \para{2X\^{}2+X+1}, 但是变量必须为 \para{X}. +\end{itemize} + +这里假定页面总页数为 24 页, +\begin{example}[title = pages 配置规则] +pages = {*} => 1, 2, 3, ..., 24 +pages = {odd} => 1, 3, 5, ..., 23 +pages = {1, 3, 5-10} => 1, 3, 5, 6, 7, ..., 10 +pages = {1-5, 8, 20-ii} => 1, 2, ..., 5, 8, 20, 21, ..., 23 +pages = {3X + 1} => 1, 4, 7, 10, ..., 22 +\end{example} + +\subsection{tikz} +\opt{tikz} 用于设置是否将水印内容放置在 \texttt{tikz} 的 \texttt{node} 中, 见下文, 可选值为 \para{true} 和 \para{false}, 默认为 \para{true}. 当你需要使用 \opt{tikz} 时, 需要手动加载 \texttt{tikz} 宏包. + +\subsection{content} +\opt{content} 用来设置水印的内容, 当 \opt{tikz} 被启用时, 它被放在了 \texttt{tikz} 的 \texttt{node} 中, 为此, 想要灵活的设置它, 您需要对 \texttt{node} 有一些了解. + +\subsection{style} +\opt{style} 用于设置容纳水印内容的 \texttt{node} 的样式, 默认为 \para{inner~sep = 0pt, outer~sep = 0pt, opacity = .5, align = left}, 当 \opt{tikz} 被禁用时, 它会被忽略. + +\subsection{is append} +\opt{is append} 用于设置是否覆盖当前页已有的水印, 可选值为 \para{true} 和 \para{false}, 默认为 \para{false}. + +\section{使用案例} +\begin{example}[title = 为所有页面右上角添加页码] +% \usepackage{tikz} +\MagicWatermark{ + setup = { + pages = {*}, + content = {P-\thepage}, + style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily} + } +} +\end{example} + +\begin{example}[title = 为偶数页页面中心添加文字 Watermark] +% \usepackage{tikz} +\MagicWatermark{ + setup = { + pages = {even}, + style = {scale = 5, text = pink}, + content = {Watermark}, + is append + } +} +\end{example} + +\begin{example}[title = 为第二页到最后一页设置铺满整个页面的文字] +% \usepackage{tikz} +\MagicWatermark{ + setup = { + pages = {2-i}, + style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large, opacity = .1}, + content = { + \foreach \x in {0, ..., 500} {Magic Watermark } + }, + is append + } +} +\end{example} + +\begin{example}[title = 为奇偶页设置不同水印] +% \usepackage{tikz} +\MagicWatermark{ + setup = { + pages = {even}, + style = {scale = 8, rotate = 45, text=red, align = center,font = \linespread{2}\selectfont}, + content = { + Even MagicWatermark\\ + Even MagicWatermark\\ + Even MagicWatermark\\ + Even MagicWatermark + } + }, + setup = { + pages = {odd}, + style = {scale = 6, rotate = -45, text = cyan, text width = 1.7\paperwidth, font = \linespread{1.5}\selectfont, align = center}, + content = { + \foreach \x in {0,...,5}{ + Odd MagicWatermark + } + } + } +} +\end{example} + +\begin{example}[title = 设置图片为水印] +% \usepackage{tikz} +\MagicWatermark{ + setup = { + pages = {even}, + style = {opacity = 0.3}, + content = { + \includegraphics{example-image-a} + } + }, + setup = { + pages = {odd}, + style = {opacity = .3, rotate=45, text width = 3\paperwidth}, + content = { + \foreach \x in {0, ..., 20}{ + \foreach \y in {1, 2, 3} { + \includegraphics{example-image-b} + } \\ + } + } + } +} +\end{example} + +\begin{example}[title = 禁用 tikz] +\def\addhead#1#2{% + \expandafter\gdef\csname head@content@#1\endcsname{#2}% +} + +\def\printhead#1{% + \csname head@content@#1\endcsname% +} + +\addhead{2}{The only way to do great work is to love what you do.} +\addhead{3}{Success is not final, failure is not fatal: It is the courage to continue that counts.} +\addhead{4}{In the end, we will remember not the words of our enemies, but the silence of our friends.} +\addhead{5}{It does not matter how slowly you go as long as you do not stop.} + +\NewDocumentCommand{\mywatermark}{}{% + \begin{tikzpicture}[remember picture, overlay] + \node[yshift = -\headheight - \headsep, text = teal, font = \large] at (current page.north) {\printhead{\thepage}}; + \end{tikzpicture} +} + +\MagicWatermark{ + setup = { + pages = {2-5}, + tikz = false, + content = \mywatermark + } +} +\end{example} + + +\end{document} diff --git a/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.pdf b/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.pdf new file mode 100644 index 0000000000..30b84bd6cd Binary files /dev/null and b/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.pdf differ diff --git a/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.tex b/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.tex new file mode 100644 index 0000000000..e6520fa330 --- /dev/null +++ b/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.tex @@ -0,0 +1,400 @@ +\documentclass{article} + +\usepackage{lipsum} + +\usepackage{../magicwatermark} + +\usepackage[margin = 2.51828cm]{geometry} + + +\def\pkgname{\textcolor{teal}{\texttt{magicwatermark}}} +\usepackage{indentfirst} +\pagestyle{empty} + +\usepackage[UTF8, scheme=plain, fontset=none, heading=true, zihao=-4]{ctex} +%\setCJKmainfont[BoldFont={LXGWWenKai-Bold},ItalicFont={LXGWWenKai-Light}]{LXGWWenKai-Regular} +%\setCJKsansfont[BoldFont={LXGWWenKai-Bold}]{LXGWWenKai-Regular} +%\setCJKmonofont[BoldFont={LXGWWenKaiMono-Bold},ItalicFont={LXGWWenKaiMono-Light}]{LXGWWenKaiMono-Regular} + +\ctexset{ +% chapter={ +% format+=\raggedright, +% name = {第,部分}, +% afterskip = .5cm +% }, + section={ + format+=\raggedright, + afterskip = .5cm + }, + contentsname = {Table of contents} +} + +\usepackage{fontspec} +\IfFontExistsTF{calibri.ttf} +{ + \setmainfont{calibri.ttf}[ + BoldFont = calibrib.ttf, + ItalicFont = calibrii.ttf, + BoldItalicFont = calibriz.ttf + ] +} +{} + +\newcommand\blfootnote[1]{ + \begingroup + \renewcommand\thefootnote{}\footnote{#1} + \addtocounter{footnote}{-1} + \endgroup +} + +\usepackage[listings,breakable]{tcolorbox} + +\ExplSyntaxOn +\clist_new:N \l_function_variant_list %fuction variant list +\NewDocumentCommand{\function}{svo} % #1:function name #2: variant list +{ + \IfBooleanTF{#1} + { + \IfNoValueTF{#3} + { + \begin{tcolorbox}[width=\textwidth,left=1mm,right=1mm,top=1mm,bottom=1mm,sharp~corners,colback=white,boxrule=.5pt,colback=lime!30] + \texttt{Function}\hskip -2pt \Triangle\hskip -3pt \texttt{#2}\hfill \examplelabel* + \end{tcolorbox} + } + { + \clist_gset:Nn \l_function_variant_list {#3} + \begin{tcolorbox}[width=\textwidth,left=1mm,right=1mm,top=1mm,bottom=1mm,sharp~corners,colback=white,boxrule=.5pt,colback=lime!30] + \texttt{Function}\hskip -2pt \Triangle\hskip -3pt \texttt{#2\textcolor{gray}{(\clist_use:Nn \l_function_variant_list{|})}} \hfill \examplelabel* + \end{tcolorbox} + } + } + { + \IfNoValueTF{#3} + { + \def\functionn{ + \texttt{#2} + } + } + { + \clist_gset:Nn \l_function_variant_list {#3} + \def\functionn{ + \texttt{ + #2 + \textcolor{gray}{(\clist_use:Nn \l_function_variant_list{|})} + } + } + } + } + +} +\NewDocumentCommand{\examplelabel}{s} +{ + \IfBooleanTF{#1}{ + \raisebox{-0.5ex}{ + \tikz{ + \node[ball~color=purple,circle,outer~sep=0pt,scale=0.5] {\phantom{2}}; + }} + }{ + \raisebox{-0.5ex}{ + \tikz{ + \node[ball~color=cyan,circle,outer~sep=0pt,scale=0.5,font=\bfseries] {\theexample}; + }} + } +} +\ExplSyntaxOff +\def\Triangle{ % triangle icon + \raisebox{-0.3ex}{ + \tikz{ + \fill[scale=2,outer sep=0pt] (240:0.5ex) -- (0:0.5ex) -- (120:0.5ex); + } +}} +\newcounter{example} +\tcbset{ + example style/.style={ + sharp corners, + colback=white, + boxrule=.5pt, + breakable, + left=1mm,right=1mm,top=1mm,bottom=1mm, + fonttitle=\bfseries, + colbacktitle=lime!30, + coltitle=black, + % title={MagicWatermark}, + listing only + } +} + +\newtcblisting[use counter=example]{example}[1][]{ + listing options={ + style=tcblatex, + tabsize = 1, + language={[LaTeX]TeX}, + classoffset=0, + morekeywords = {MagicWatermark, foreach, includegraphics}, + keywordstyle={\color[RGB]{178,34,34}\bfseries}, + commentstyle={\color[RGB]{102,205,170}\itshape}, + classoffset=1, + morekeywords = {setup, pages, content, is, append, style}, + keywordstyle=\color{cyan!50!green}\bfseries, + }, + example style, + #1 + } + + +\MagicWatermark{ + setup = { + pages = {*}, + content = {P-\thepage}, + style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily} + }, + setup = { + pages = {even}, + style = {scale = 5, text = pink}, + content = {Watermark}, + is append + }, + setup = { + pages = {1}, + style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large\linespread{1}\selectfont, opacity = .1}, + content = { + \foreach \x in {0, ..., 500} {Magic Watermark } + }, + is append + } +} + + +\def\opt#1{\textcolor{magenta}{\texttt{#1}}} +\def\para#1{\textcolor[rgb]{0.13, 0.67, 0.8}{\texttt{#1}}} + +\usepackage[hidelinks]{hyperref} +\begin{document} + + +\vspace*{\fill} +\begin{center} + {\Huge The \textcolor{teal}{\texttt{magicwatermark}}\footnote{\url{https://github.com/ljguo1020/magicwatermark}} package\blfootnote{English version of the documentation by Jérémy Just <\url{jeremy@jejust.fr}>.}} \\[.5cm] + {\Large Guo Li Jun } \\[.5cm] + {\Large V1.2B}\\[1cm] +\begin{example}[] +\MagicWatermark{ + setup = { + pages = {*}, + content = {P-\thepage}, + style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily} + }, + setup = { + pages = {even}, + style = {scale = 5, text = pink}, + content = {Watermark}, + is append + }, + setup = { + pages = {1}, + style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large, opacity = .1}, + content = { + \foreach \x in {0, ..., 500} {Magic Watermark } + }, + is append + } +} +\end{example} +\end{center} + +\vspace*{\fill} + +\newpage + + +\linespread{1.3}\selectfont +\tableofcontents + +\section{Presentation} + +\pkgname{} is a new watermarking package. Tts first version was released on June 17\textsuperscript{th}, 2022, +but this update is a complete refactoring. + +\pkgname{} is based on \texttt{ti\textit{k}z} and \texttt{expl3}, which gives you a lot of flexibility +to add a background or a watermark to the pages of your document. + +\section{Use} + +The use of \pkgname{}, compared to other packages of similar functionality, is a lot easier, +as it provides a single command, \verb|\MagicWatermark|. +This command takes a parameter consisting in a number of \opt{setup} rules. +\begin{example}[] +\MagicWatermark{ + setup = {}, + setup = {}, + ... +} +\end{example} + +\opt{setup} internally accepts four key options to configure the presentation of the watermark. + +\subsection{pages} +\opt{pages} accepts a comma-separated list which defines the scope of the watermark,\linebreak[4] \textit{e.g.} \verb|pages = {2, 4, 5, 8-10}| indicates that the watermark is to appear on pages 2, 4, 5, 8, 9 and 10. + +\opt{pages} accepts a total of four configuration rules: +\begin{itemize} + \item \para{*}, indicating all pages; + \item \para{odd} and \para{even}, for odd/even pages; + \item a range, like \para{3-5} or \para{12-ii}; + \item expressions, such as \para{2X+1}, \para{2X\^{}2+X+1} (the variable \textbf{has to be} \para{X}). +\end{itemize} + +Here, we assume that the total number of pages is 24: +\begin{example}[title = pages machine rules] +pages = {*} => 1, 2, 3, ..., 24 +pages = {odd} => 1, 3, 5, ..., 23 +pages = {1, 3, 5-10} => 1, 3, 5, 6, 7, ..., 10 +pages = {1-5, 8, 20-ii} => 1, 2, ..., 5, 8, 20, 21, ..., 23 +pages = {3X + 1} => 1, 4, 7, 10, ..., 22 +\end{example} + +\subsection{tikz} + +\opt{tikz} is used to choose whether the watermark content will be placed +in a \texttt{tikz} \texttt{node} (see below). +The two possible values are \para{true} and \para{false}. The default is \para{true}. +When you choose to use \opt{tikz}, you need to load the \texttt{tikz} package manually. + +\subsection{content} + +\opt{content} is used to define the content of the watermark, when \opt{tikz} is enabled. +The given value is placed inside the \texttt{tikz} \texttt{node}; +for this reason, to take full avantage of this syntax, you need to have some knowledge +of the available \texttt{node} options. + +\subsection{style} + +\opt{style} is used to set the style of the \texttt{node} that holds the watermark content. +The default style is \para{inner~sep = 0pt, outer~sep = 0pt, opacity = .5, align = left}, +and is ignored when \opt{tikz} is disabled. + +\subsection{is append} + +\opt{is append} is used to choose whether or not to override the existing watermark on the +current page. The available values are \para{true} and \para{false}, the default is \para{false}. + + +\section{Examples} + +\begin{example}[title = Add page number to the top right corner of each pages:] +% \usepackage{tikz} +\MagicWatermark{ + setup = { + pages = {*}, + content = {P-\thepage}, + style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily} + } +} +\end{example} + +\begin{example}[title = Add text watermark at the center of even numbered pages:] +% \usepackage{tikz} +\MagicWatermark{ + setup = { + pages = {even}, + style = {scale = 5, text = pink}, + content = {Watermark}, + is append + } +} +\end{example} + +\begin{example}[title = Add a full page of text as watermark to the second to last page:] +% \usepackage{tikz} +\MagicWatermark{ + setup = { + pages = {2-i}, + style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large, opacity = .1}, + content = { + \foreach \x in {0, ..., 500} {Magic Watermark } + }, + is append + } +} +\end{example} + +\begin{example}[title = Use different watermarks for odd and even pages:] +% \usepackage{tikz} +\MagicWatermark{ + setup = { + pages = {even}, + style = {scale = 8, rotate = 45, text=red, align = center,font = \linespread{2}\selectfont}, + content = { + Even MagicWatermark\\ + Even MagicWatermark\\ + Even MagicWatermark\\ + Even MagicWatermark + } + }, + setup = { + pages = {odd}, + style = {scale = 6, rotate = -45, text = cyan, text width = 1.7\paperwidth, font = \linespread{1.5}\selectfont, align = center}, + content = { + \foreach \x in {0,...,5}{ + Odd MagicWatermark + } + } + } +} +\end{example} + +\begin{example}[title = Use an image as watermark:] +% \usepackage{tikz} +\MagicWatermark{ + setup = { + pages = {even}, + style = {opacity = 0.3}, + content = { + \includegraphics{example-image-a} + } + }, + setup = { + pages = {odd}, + style = {opacity = .3, rotate=45, text width = 3\paperwidth}, + content = { + \foreach \x in {0, ..., 20}{ + \foreach \y in {1, 2, 3} { + \includegraphics{example-image-b} + } \\ + } + } + } +} +\end{example} + +\begin{example}[title = Disable tikz] +\def\addhead#1#2{% + \expandafter\gdef\csname head@content@#1\endcsname{#2}% +} + +\def\printhead#1{% + \csname head@content@#1\endcsname% +} + +\addhead{2}{The only way to do great work is to love what you do.} +\addhead{3}{Success is not final, failure is not fatal: It is the courage to continue that counts.} +\addhead{4}{In the end, we will remember not the words of our enemies, but the silence of our friends.} +\addhead{5}{It does not matter how slowly you go as long as you do not stop.} + +\NewDocumentCommand{\mywatermark}{}{% + \begin{tikzpicture}[remember picture, overlay] + \node[yshift = -\headheight - \headsep, text = teal, font = \large] at (current page.north) {\printhead{\thepage}}; + \end{tikzpicture} +} + +\MagicWatermark{ + setup = { + pages = {2-5}, + tikz = false, + content = \mywatermark + } +} +\end{example} + + +\end{document} diff --git a/macros/latex/contrib/magicwatermark/doc/magicwatermark.pdf b/macros/latex/contrib/magicwatermark/doc/magicwatermark.pdf deleted file mode 100644 index 04aa894cef..0000000000 Binary files a/macros/latex/contrib/magicwatermark/doc/magicwatermark.pdf and /dev/null differ diff --git a/macros/latex/contrib/magicwatermark/doc/magicwatermark.tex b/macros/latex/contrib/magicwatermark/doc/magicwatermark.tex deleted file mode 100644 index 9b610d9cab..0000000000 --- a/macros/latex/contrib/magicwatermark/doc/magicwatermark.tex +++ /dev/null @@ -1,373 +0,0 @@ -\documentclass{article} - -\usepackage{lipsum} - -\usepackage{../magicwatermark} - -\usepackage[margin = 2.51828cm]{geometry} - - -\def\pkgname{\textcolor{teal}{\texttt{magicwatermark}}} -\usepackage{indentfirst} -\pagestyle{empty} - -\usepackage[UTF8, scheme=plain, fontset=none, heading=true, zihao=-4]{ctex} -\setCJKmainfont[BoldFont={LXGWWenKai-Bold},ItalicFont={LXGWWenKai-Light}]{LXGWWenKai-Regular} -\setCJKsansfont[BoldFont={LXGWWenKai-Bold}]{LXGWWenKai-Regular} -\setCJKmonofont[BoldFont={LXGWWenKaiMono-Bold},ItalicFont={LXGWWenKaiMono-Light}]{LXGWWenKaiMono-Regular} - -\ctexset{ -% chapter={ -% format+=\raggedright, -% name = {第,部分}, -% afterskip = .5cm -% }, - section={ - format+=\raggedright, - afterskip = .5cm - }, - contentsname = {目次} -} - -\usepackage{fontspec} -\IfFontExistsTF{calibri.ttf} -{ - \setmainfont{calibri.ttf}[ - BoldFont = calibrib.ttf, - ItalicFont = calibrii.ttf, - BoldItalicFont = calibriz.ttf - ] -} -{} - -\usepackage[listings,breakable]{tcolorbox} - -\ExplSyntaxOn -\clist_new:N \l_function_variant_list %fuction variant list -\NewDocumentCommand{\function}{svo} % #1:function name #2: variant list -{ - \IfBooleanTF{#1} - { - \IfNoValueTF{#3} - { - \begin{tcolorbox}[width=\textwidth,left=1mm,right=1mm,top=1mm,bottom=1mm,sharp~corners,colback=white,boxrule=.5pt,colback=lime!30] - \texttt{Function}\hskip -2pt \Triangle\hskip -3pt \texttt{#2}\hfill \examplelabel* - \end{tcolorbox} - } - { - \clist_gset:Nn \l_function_variant_list {#3} - \begin{tcolorbox}[width=\textwidth,left=1mm,right=1mm,top=1mm,bottom=1mm,sharp~corners,colback=white,boxrule=.5pt,colback=lime!30] - \texttt{Function}\hskip -2pt \Triangle\hskip -3pt \texttt{#2\textcolor{gray}{(\clist_use:Nn \l_function_variant_list{|})}} \hfill \examplelabel* - \end{tcolorbox} - } - } - { - \IfNoValueTF{#3} - { - \def\functionn{ - \texttt{#2} - } - } - { - \clist_gset:Nn \l_function_variant_list {#3} - \def\functionn{ - \texttt{ - #2 - \textcolor{gray}{(\clist_use:Nn \l_function_variant_list{|})} - } - } - } - } - -} -\NewDocumentCommand{\examplelabel}{s} -{ - \IfBooleanTF{#1}{ - \raisebox{-0.5ex}{ - \tikz{ - \node[ball~color=purple,circle,outer~sep=0pt,scale=0.5] {\phantom{2}}; - }} - }{ - \raisebox{-0.5ex}{ - \tikz{ - \node[ball~color=cyan,circle,outer~sep=0pt,scale=0.5,font=\bfseries] {\theexample}; - }} - } -} -\ExplSyntaxOff -\def\Triangle{ % triangle icon - \raisebox{-0.3ex}{ - \tikz{ - \fill[scale=2,outer sep=0pt] (240:0.5ex) -- (0:0.5ex) -- (120:0.5ex); - } -}} -\newcounter{example} -\tcbset{ - example style/.style={ - sharp corners, - colback=white, - boxrule=.5pt, - breakable, - left=1mm,right=1mm,top=1mm,bottom=1mm, - fonttitle=\bfseries, - colbacktitle=lime!30, - coltitle=black, - % title={MagicWatermark}, - listing only - } -} - -\newtcblisting[use counter=example]{example}[1][]{ - listing options={ - style=tcblatex, - tabsize = 1, - language={[LaTeX]TeX}, - classoffset=0, - morekeywords = {MagicWatermark, foreach, includegraphics}, - keywordstyle={\color[RGB]{178,34,34}\bfseries}, - commentstyle={\color[RGB]{102,205,170}\itshape}, - classoffset=1, - morekeywords = {setup, pages, content, is, append, style}, - keywordstyle=\color{cyan!50!green}\bfseries, - }, - example style, - #1 - } - - -\MagicWatermark{ - setup = { - pages = {*}, - content = {P-\thepage}, - style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily} - }, - setup = { - pages = {even}, - style = {scale = 5, text = pink}, - content = {Watermark}, - is append - }, - setup = { - pages = {1}, - style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large\linespread{1}\selectfont, opacity = .1}, - content = { - \foreach \x in {0, ..., 500} {Magic Watermark } - }, - is append - } -} - - -\def\opt#1{\textcolor{magenta}{\texttt{#1}}} -\def\para#1{\textcolor[rgb]{0.13, 0.67, 0.8}{\texttt{#1}}} - -\usepackage[hidelinks]{hyperref} -\begin{document} - - -\vspace*{\fill} -\begin{center} - {\Huge \textcolor{teal}{\texttt{magicwatermark}} 宏包\footnote{\url{https://github.com/ljguo1020/magicwatermark}}} \\[.5cm] - {\Large 郭李军} \\[.5cm] - {\Large V1.2A}\\[1cm] -\begin{example}[] -\MagicWatermark{ - setup = { - pages = {*}, - content = {P-\thepage}, - style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily} - }, - setup = { - pages = {even}, - style = {scale = 5, text = pink}, - content = {Watermark}, - is append - }, - setup = { - pages = {1}, - style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large, opacity = .1}, - content = { - \foreach \x in {0, ..., 500} {Magic Watermark } - }, - is append - } -} -\end{example} -\end{center} - -\vspace*{\fill} - -\newpage - - -\linespread{1.3}\selectfont -\tableofcontents - -\section{介绍} - -\pkgname{} 是一个全新的水印宏包, 在 2022 年 6 月 17 日发布了第一版, 本次更新并不是基于第一版, 而是进行了重构. - -\pkgname{} 基于 \texttt{tikz} 和 \texttt{expl3}, 可以灵活的设置背景或水印. - -\section{使用} -\pkgname{} 的使用, 相比于其它同类功能的包来说, 可以说是易用性最高的, 它只提供了一个命令 \verb|\MagicWatermark|, 命令参数由多个 \opt{setup} 规则组成. -\begin{example}[] -\MagicWatermark{ - setup = {}, - setup = {}, - ... -} -\end{example} - -\opt{setup} 内部接受四个键值选项, 用于配置水印的表现形式. - -\subsection{pages} -\opt{pages} 接受一个逗号分割列表, 用于配置水印作用范围, 例如 \verb|pages = {2, 4, 5, 8-10}|, 表示选中页码为第 2, 4, 5, 8, 9, 10 这些页面. - -\opt{pages} 共接受 4 种配置规则, -\begin{itemize} - \item \para{*}, 表示所有页面; - \item \para{odd} 和 \para{oven}, 表示奇偶页; - \item 范围, 形如 \para{3-5}, \para{12-ii}; - \item 表达式, 形如 \para{2X+1}, \para{2X\^{}2+X+1}, 但是变量必须为 \para{X}. -\end{itemize} - -这里假定页面总页数为 24 页, -\begin{example}[title = pages 配置规则] -pages = {*} => 1, 2, 3, ..., 24 -pages = {odd} => 1, 3, 5, ..., 23 -pages = {1, 3, 5-10} => 1, 3, 5, 6, 7, ..., 10 -pages = {1-5, 8, 20-ii} => 1, 2, ..., 5, 8, 20, 21, ..., 23 -pages = {3X + 1} => 1, 4, 7, 10, ..., 22 -\end{example} - -\subsection{tikz} -\opt{tikz} 用于设置是否将水印内容放置在 \texttt{tikz} 的 \texttt{node} 中, 见下文, 可选值为 \para{true} 和 \para{false}, 默认为 \para{true}. 当你需要使用 \opt{tikz} 时, 需要手动加载 \texttt{tikz} 宏包. - -\subsection{content} -\opt{content} 用来设置水印的内容, 当 \opt{tikz} 被启用时, 它被放在了 \texttt{tikz} 的 \texttt{node} 中, 为此, 想要灵活的设置它, 您需要对 \texttt{node} 有一些了解. - -\subsection{style} -\opt{style} 用于设置容纳水印内容的 \texttt{node} 的样式, 默认为 \para{inner~sep = 0pt, outer~sep = 0pt, opacity = .5, align = left}, 当 \opt{tikz} 被禁用时, 它会被忽略. - -\subsection{is append} -\opt{is append} 用于设置是否覆盖当前页已有的水印, 可选值为 \para{true} 和 \para{false}, 默认为 \para{false}. - -\section{使用案例} -\begin{example}[title = 为所有页面右上角添加页码] -% \usepackage{tikz} -\MagicWatermark{ - setup = { - pages = {*}, - content = {P-\thepage}, - style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily} - } -} -\end{example} - -\begin{example}[title = 为偶数页页面中心添加文字 Watermark] -% \usepackage{tikz} -\MagicWatermark{ - setup = { - pages = {even}, - style = {scale = 5, text = pink}, - content = {Watermark}, - is append - } -} -\end{example} - -\begin{example}[title = 为第二页到最后一页设置铺满整个页面的文字] -% \usepackage{tikz} -\MagicWatermark{ - setup = { - pages = {2-i}, - style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large, opacity = .1}, - content = { - \foreach \x in {0, ..., 500} {Magic Watermark } - }, - is append - } -} -\end{example} - -\begin{example}[title = 为奇偶页设置不同水印] -% \usepackage{tikz} -\MagicWatermark{ - setup = { - pages = {even}, - style = {scale = 8, rotate = 45, text=red, align = center,font = \linespread{2}\selectfont}, - content = { - Even MagicWatermark\\ - Even MagicWatermark\\ - Even MagicWatermark\\ - Even MagicWatermark - } - }, - setup = { - pages = {odd}, - style = {scale = 6, rotate = -45, text = cyan, text width = 1.7\paperwidth, font = \linespread{1.5}\selectfont, align = center}, - content = { - \foreach \x in {0,...,5}{ - Odd MagicWatermark - } - } - } -} -\end{example} - -\begin{example}[title = 设置图片为水印] -% \usepackage{tikz} -\MagicWatermark{ - setup = { - pages = {even}, - style = {opacity = 0.3}, - content = { - \includegraphics{example-image-a} - } - }, - setup = { - pages = {odd}, - style = {opacity = .3, rotate=45, text width = 3\paperwidth}, - content = { - \foreach \x in {0, ..., 20}{ - \foreach \y in {1, 2, 3} { - \includegraphics{example-image-b} - } \\ - } - } - } -} -\end{example} - -\begin{example}[title = 禁用 tikz] -\def\addhead#1#2{% - \expandafter\gdef\csname head@content@#1\endcsname{#2}% -} - -\def\printhead#1{% - \csname head@content@#1\endcsname% -} - -\addhead{2}{The only way to do great work is to love what you do.} -\addhead{3}{Success is not final, failure is not fatal: It is the courage to continue that counts.} -\addhead{4}{In the end, we will remember not the words of our enemies, but the silence of our friends.} -\addhead{5}{It does not matter how slowly you go as long as you do not stop.} - -\NewDocumentCommand{\mywatermark}{}{% - \begin{tikzpicture}[remember picture, overlay] - \node[yshift = -\headheight - \headsep, text = teal, font = \large] at (current page.north) {\printhead{\thepage}}; - \end{tikzpicture} -} - -\MagicWatermark{ - setup = { - pages = {2-5}, - tikz = false, - content = \mywatermark - } -} -\end{example} - - -\end{document} diff --git a/macros/latex/contrib/magicwatermark/magicwatermark.sty b/macros/latex/contrib/magicwatermark/magicwatermark.sty index d7b8647252..e40af7ea0b 100644 --- a/macros/latex/contrib/magicwatermark/magicwatermark.sty +++ b/macros/latex/contrib/magicwatermark/magicwatermark.sty @@ -1,6 +1,5 @@ -\ProvidesExplPackage{magicwatermark}{2024/06/11}{1.2A}{magic watermark, author} +\ProvidesExplPackage{magicwatermark}{2024/06/11}{1.2B}{magic watermark, author} -\RequirePackage{everypage-1x} \msg_new:nnn {magicwatermark}{ Unable to parse } { @@ -439,10 +438,12 @@ \group_begin: \AtBeginDocument{ \keys_set:nn { mw } { #1 } - \AddEverypageHook{ - \tl_if_exist:cT { g__mw_content_ \int_to_roman:n { \value{page} }_tl } - { - \tl_use:c { g__mw_content_ \int_to_roman:n { \value{page} } _tl } + \AddToHook{shipout/background}{ + \put(.5\paperwidth,-.5\paperheight){ + \tl_if_exist:cT { g__mw_content_ \int_to_roman:n { \value{page} }_tl } + { + \tl_use:c { g__mw_content_ \int_to_roman:n { \value{page} } _tl } + } } } } -- cgit v1.2.3