diff options
author | Karl Berry <karl@freefriends.org> | 2015-12-05 23:01:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-12-05 23:01:08 +0000 |
commit | 5384f92b5a44dd9e84f1bab69420edf32e99c696 (patch) | |
tree | 47ce270ba97f34e690da94927a29740d58dcf3d5 /Master/texmf-dist/source | |
parent | a3e2c07a7a98d9b5afdd8940333dae4a7e3e6196 (diff) |
luatodonotes (5dec15)
git-svn-id: svn://tug.org/texlive/trunk@39019 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r-- | Master/texmf-dist/source/lualatex/luatodonotes/luatodonotes.dtx | 234 |
1 files changed, 203 insertions, 31 deletions
diff --git a/Master/texmf-dist/source/lualatex/luatodonotes/luatodonotes.dtx b/Master/texmf-dist/source/lualatex/luatodonotes/luatodonotes.dtx index 79537444e2e..5c3de40b693 100644 --- a/Master/texmf-dist/source/lualatex/luatodonotes/luatodonotes.dtx +++ b/Master/texmf-dist/source/lualatex/luatodonotes/luatodonotes.dtx @@ -24,14 +24,15 @@ %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<package>\ProvidesPackage{luatodonotes} %<*package> - [2015/03/13 v0.2 luatodonotes source and documentation.] + [2015/12/03 v0.3 luatodonotes source and documentation.] %</package> % %<*driver> \documentclass{ltxdoc} \usepackage{wrapfig} -\usepackage[colorlinks, linkcolor=black, urlcolor=blue]{hyperref} -\usepackage[colorinlistoftodos, shadow]{luatodonotes}[2015/03/13] +\PassOptionsToPackage{colorlinks, urlcolor=blue}{hyperref} +\usepackage{hypdoc} % this package loads hyperref among others +\usepackage[colorinlistoftodos, shadow]{luatodonotes}[2015/12/03] \usepackage{fontspec} \usepackage{amsmath} \usepackage{setspace} @@ -50,7 +51,7 @@ %</driver> % \fi % -% \CheckSum{825} +% \CheckSum{905} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -70,18 +71,12 @@ % % % \changes{0.1}{2014/08/07}{The first version of the package} -% \changes{0.2}{2014/09/08}{Compatibility with csquotes package (notes were -% displayed multiple times when used in \texttt{\textbackslash blockquote} -% command)} % \changes{0.2}{2015/01/13}{Fix wrong linespacing when changing fontsize} % \changes{0.2}{2015/01/13}{Included suggestions from CTAN submission into % documentation} -% \changes{0.2}{2015/02/28}{Make Lua variables and functions local or put them -% into luatodonotes array (don't pollute global namespace)} -% \changes{0.2}{2015/02/28}{Correct height calculation for notes with modified -% fontsize} -% \changes{0.2}{2015/03/03}{Fix problems with recent versions of lualibs} % \changes{0.2}{2015/03/12}{Added troubleshooting section to documentation} +% \changes{0.3}{2015/12/03}{Incorporated some changes from todonotes (version +% 1.0.4)} % \GetFileInfo{luatodonotes.dtx} % % \DoNotIndex{\newcommand,\newenvironment} @@ -264,13 +259,14 @@ % % \DescribeMacro{danish, german, ngerman, french, swedish} % \DescribeMacro{spanish, catalan, italian} -% \DescribeMacro{portuguese, dutch} +% \DescribeMacro{portuguese, dutch, croatian} % Use translations of the text strings % ''List of todos'' and ''Missing figure''. % The default is to use none of these options, which results in % english text strings. % Currently the following languages are supported: % catalan, +% croatian, % danish, % dutch, % french, @@ -327,7 +323,7 @@ % The |figwidth=length| option and |figheight=length| option set the default % width and height of the figure % inserted by the |\missingfigure| command. -% The default value is |\columnwidth| for the width and |4cm| for the height. +% The default value is |\linewidth| for the width and |4cm| for the height. % % \DescribeMacro{leaderwidth} % The |leaderwidth=length| option specifies the width of the leader lines. @@ -369,6 +365,8 @@ % The |positioning=algorithm| option specifies, which algorithm is used to % determine the positions of the notes on the page. % You should choose the algorithm depending on the leader type you want to use. +% You can also use one of the options |s|, |po|, |bezier|, or |opo| to define +% the positioning algorithm together with the leadertype. % The default value for this option is |inputOrderStacks|. % The following algorithms are available: % \begin{itemize} @@ -413,6 +411,22 @@ % other packages. % \end{itemize} % +% \DescribeMacro{s} +% \DescribeMacro{bezier} +% \DescribeMacro{opo} +% \DescribeMacro{po} +% Shorthand options for convenience, which represent common combinations of +% leadertypes and postioning algorithms. +% |leadertype| or |positioning| options following one of these options override +% its settings. +% They use the following positioning algorithms: +% \begin{itemize} +% \item |s|: |sLeaderNorthEastBelowStacks| +% \item |bezier|: |sLeaderNorthEastBelowStacks| +% \item |opo|: |inputOrderStacks| +% \item |po|: |poLeadersAvoidLines| +% \end{itemize} +% % \DescribeMacro{splitting} % The |splitting=algorithm| option can be used to place the labels on both sides % of the text. @@ -462,7 +476,7 @@ % for label placement. % If both margins are narrower, no labels are placed and an error message is % printed to the console output. -% The default value of this option is |1.0cm|. +% The default value of this option is |2.0cm|. % % \DescribeMacro{distanceNotesPageBorder} % The |distanceNotesPageBorder=length| option specifies the horizontal distance @@ -485,6 +499,20 @@ % length), but strongly increases the runtime and memory consumption. % The default value of this option is |1cm|. % +% \DescribeMacro{additionalMargin} +% The |additionalMargin=length| option extends the page margins horizontally. +% To achieve this the page width is increased. +% The page is extended by the given length on both sides. +% The layout of the page stays the same but the paper format is changed: the +% height is left unmodified, but the width is increased by the doubled value of +% the given length. +% This option is useful if you have to adhere to a given layout, whose margins +% are not wide enough to accomodate the notes. +% You can safely use this option as the final layout of your document does not +% change when disabling the |luatodonotes| package. +% The default width of |2cm| for the additional margin is used when the option +% is given without a length. +% % \DescribeMacro{debug} % When the |debug| option is activated the package is more verbose on % the commandline. @@ -675,6 +703,17 @@ % \missingfigure[figheight=6cm]{Testing} % % +% \DescribeMacro{figcolor} +% The |figcolor=color| options sets the background color of +% inserted missing figures. +% The default color is |black!40|. +% \begin{verbatim} +% \missingfigure[figcolor=white]{Testing figcolor} +% \end{verbatim} +% \missingfigure[figcolor=white]{Testing figcolor} +% +% +% % \subsection{Options for the \texttt{listoftodos} command} % The |\listoftodos| command takes one optional argument, that % defines the name of the inserted list of todos. @@ -715,7 +754,7 @@ % You can query kpathsea for a file using the default \TeX{} search path with: % \begin{verbatim} % kpsewhich luatodonotes.lua\end{verbatim} -% Be sure to run |texhash| (as root if needed) after moving files inside the +% Be sure to run |texhash| (as root if needed) after moving files into the % texmf tree. % % \subsubsection{The \texttt{debug} option} @@ -851,6 +890,7 @@ % % \newpage % \section{Implementation} +% \begin{environment}{luatodonotes.lua} % In this section only the source code of the LaTeX package file % (|luatodonotes.sty|) is shown. % The Lua code is contained in |luatodonotes.lua| and documented by comments @@ -869,8 +909,45 @@ % Master thesis, 2014. % \url{http://www1.pub.informatik.uni-wuerzburg.de/pub/theses/2014-lipp-master.pdf} % \end{itemize} +% \changes{0.2}{2014/09/08}{Compatibility with csquotes package (notes were +% displayed multiple times when used in \texttt{\textbackslash blockquote} +% command)} +% \changes{0.2}{2015/02/28}{Correct height calculation for notes with modified +% fontsize} +% \changes{0.2}{2015/02/28}{Make Lua variables and functions local or put them +% into luatodonotes array (don't pollute global namespace)} +% \changes{0.2}{2015/03/03}{Fix problems with recent versions of lualibs} +% \changes{0.3}{2015/10/30}{Fix problems with doubled notes when code is read +% multiple times (e.g., by tabularx)} +% \changes{0.3}{2015/11/16}{Deal with notes without a page number (happens when +% placed in \texttt{\textbackslash caption}, e.g.)} +% \changes{0.3}{2015/11/30}{Remove two variables from Lua global namespace} +% \changes{0.3}{2015/12/02}{Less console output unless debug option is set} +% \end{environment} % % \subsection{Dependencies and definitions} +% Make sure that the classical |todonotes| package is not loaded as we redefine +% its commands. +% Additionally we pretend that |todonotes| 1.0.2 is already loaded. +% So later attempts to load package |todonotes| are simply ignored. +% Loading both packages in the same document would produce errors (like +% ``Command already defined''). +% \changes{0.3}{2015/12/01}{Ensure that package \texttt{todonotes} is not +% loaded} +% \begin{macrocode} +\@ifpackageloaded{todonotes}{ + \PackageError{luatodonotes}{% + Conflicting packages todonotes and luatodonotes\MessageBreak + loaded. Aborting.}{% + The package luatodonotes was designed as a replacement for todonotes. So it + is not possible (and not reasonable) to include both of them in the same + document.% + If you want to use luatodonotes you should delete the todonotes + package from\MessageBreak + your preamble.\MessageBreak} +}{} +\expandafter\def\csname ver@todonotes.sty\endcsname{2014/07/14} +% \end{macrocode} % Check if Lua\TeX{} is used. % \changes{0.2}{2015/02/23}{Check if LuaTeX is used at begin of package} % \begin{macrocode} @@ -892,7 +969,6 @@ \usetikzlibrary{intersections} \usetikzlibrary{decorations.pathmorphing} \RequirePackage{luacode} -\RequirePackage{luatex} \RequirePackage{atbegshi} \RequirePackage{xstring} \RequirePackage{zref-abspage} @@ -900,6 +976,19 @@ \RequirePackage{soul} \RequirePackage{soulpos} % \end{macrocode} +% The package |luatex| must not be loaded in new TeX distributions as the +% definition of |\newattribute| in it conflicts with newer versions of +% Lua\LaTeX. +% Older versions of |luatexbase| include the package |luatex| by themselves, for +% newer versions the Lua\LaTeX kernel should include the commands that we need +% (e.\,g., |\newattribute|). +% \changes{0.3}{2015/11/12}{Remove package \texttt{luatex} for current +% versions of Lua\LaTeX (as it caused problems)} +% \begin{macrocode} +\@ifpackagelater{luatexbase}{2013/05/04}{}{ + \RequirePackage{luatex} +} +% \end{macrocode} % Some default values are set % \begin{macrocode} \newcommand{\@todonotes@text}{}% @@ -908,8 +997,9 @@ \newcommand{\@todonotes@bordercolor}{black} \newcommand{\@todonotes@leaderwidth}{1.6pt} \newcommand{\@todonotes@textsize}{\normalsize} -\newcommand{\@todonotes@figwidth}{\columnwidth} +\newcommand{\@todonotes@figwidth}{\linewidth} \newcommand{\@todonotes@figheight}{4cm} +\newcommand{\@todonotes@figcolor}{black!40} % \end{macrocode} % Default values for variables added by luatodonotes % \begin{macrocode} @@ -919,10 +1009,11 @@ \newcommand{\@todonotes@interNoteSpace}{5pt} \newcommand{\@todonotes@noteInnerSep}{5pt} \newcommand{\@todonotes@routingAreaWidth}{0.4cm} -\newcommand{\@todonotes@minNoteWidth}{1.0cm} +\newcommand{\@todonotes@minNoteWidth}{2.0cm} \newcommand{\@todonotes@distanceNotesPageBorder}{0.5cm} \newcommand{\@todonotes@distanceNotesText}{0.2cm} \newcommand{\@todonotes@rasterHeight}{1cm} +\newcommand{\@todonotes@additionalMargin}{2cm} % \end{macrocode} % \begin{macrocode} \AtBeginDocument{ @@ -958,6 +1049,12 @@ \@todonotes@SetMissingFigureUp{Figura}% \@todonotes@SetMissingFigureDown{pendent}% } +\DeclareOptionX{croatian}{% + \@todonotes@SetTodoListName{Popis obveza}% + \@todonotes@SetMissingFigureText{Slika}% + \@todonotes@SetMissingFigureUp{Nedostaje}% + \@todonotes@SetMissingFigureDown{slika}% +} \DeclareOptionX{danish}{% \@todonotes@SetTodoListName{G\o{}rem\aa{}lsliste}% \@todonotes@SetMissingFigureText{Figur}% @@ -1133,7 +1230,24 @@ {figwidth}{\renewcommand{\@todonotes@figwidth}{#1}} \define@key{luatodonotes.sty}% {figheight}{\renewcommand{\@todonotes@figheight}{#1}} +\define@key{luatodonotes.sty}% + {figcolor}{\renewcommand{\@todonotes@figcolor}{#1}} +% \end{macrocode} +% \begin{macro}{s,bezier,opo,po} +% Provide shorthand options for the most common leader styles. +% \changes{0.3}{2015/12/03}{Provide shorthand commands for most common leader +% styles} +% \begin{macrocode} +\DeclareOptionX{po}% + {\setkeys{luatodonotes.sty}{leadertype=po,positioning=poLeadersAvoidLines}} +\DeclareOptionX{s}% + {\setkeys{luatodonotes.sty}{leadertype=s,positioning=sLeaderNorthEastBelowStacks}} +\DeclareOptionX{bezier}% + {\setkeys{luatodonotes.sty}{leadertype=sBezier,positioning=sLeaderNorthEastBelowStacks}} +\DeclareOptionX{opo}% + {\setkeys{luatodonotes.sty}{leadertype=opo,positioning=inputOrderStacks}} % \end{macrocode} +% \end{macro} % Specify the name of the algorithm used to specify the position of the labels. % \begin{macrocode} \define@key{luatodonotes.sty}% @@ -1186,6 +1300,18 @@ \define@key{luatodonotes.sty}% {rasterHeight}{\renewcommand{\@todonotes@rasterHeight}{#1}} % \end{macrocode} +% \begin{macro}{additionalMargin} +% Control whether the margin should be enlarged for the notes and its width. +% \changes{0.3}{2015/12/01}{Introduce package option \texttt{additionalMargin}} +% \begin{macrocode} +\newif{\if@todonotes@additionalMarginEnabled} +\@todonotes@additionalMarginEnabledfalse +\define@key{luatodonotes.sty}% + {additionalMargin}[\@todonotes@additionalMargin]{% + \@todonotes@additionalMarginEnabledtrue + \renewcommand{\@todonotes@additionalMargin}{#1}} +% \end{macrocode} +% \end{macro} % This option is used to activate debug mode. % Luatex prints more verbose output to the commandline in this mode. % Furthermore, some of the algorithms also print debugging hints onto the @@ -1223,6 +1349,20 @@ \fi \fi % \end{macrocode} +% If the option |additionalMargin| is given, we enlarge the margins for the notes. +% We simply increase the page size by the doubled value of |additionalMargin| and move the contents to the right using |\hoffset|. +% \begin{macrocode} +\if@todonotes@additionalMarginEnabled + \newlength{\@todonotes@modpaperwidth} + \AtBeginDocument{% + \setlength{\@todonotes@modpaperwidth}{\paperwidth}% + \addtolength{\@todonotes@modpaperwidth}{\@todonotes@additionalMargin}% + \addtolength{\@todonotes@modpaperwidth}{\@todonotes@additionalMargin}% + \pdfpagewidth=\@todonotes@modpaperwidth% + \addtolength{\hoffset}{\@todonotes@additionalMargin}% + }% +\fi% +% \end{macrocode} % \subsection{Initialisation of our Lua code} % In this part we define some of the variables used by Lua depending on the % package options and do some other initialisation tasks. @@ -1251,13 +1391,18 @@ % \begin{macrocode} \newsavebox\@todonotes@notetextbox % \end{macrocode} -% The following dimensions are used to read |\baselineskip| and -% |\f@size| from Lua. +% The following dimensions are used to read |\baselineskip|, +% |\normalbaselineskip| and |\f@size| from Lua. +% We need |\normalbaselineskip| as |\baselineskip| is set to 0 inside +% tabular cells. % Dimension |\@todonotes@currentsidemargin| is set to the left margin, % i.\,e., to the value of length |\oddsidemargin| or % |\evensidemargin| depending on the type page. +% \changes{0.3}{2015/10/30}{Fix position of marker in table cells +% (\texttt{\textbackslash baselineskip} is empty inside tables)} % \begin{macrocode} \newdimen\@todonotes@baselineskip +\newdimen\@todonotes@normalbaselineskip \newdimen\@todonotes@fontsize \newdimen\@todonotes@currentsidemargin % \end{macrocode} @@ -1497,6 +1642,9 @@ \newcommand{\@todonotes@currentfigheight}{\@todonotes@figheight} \define@key{todonotes}% {figheight}{\renewcommand{\@todonotes@currentfigheight}{#1}} +\newcommand{\@todonotes@currentfigcolor}{\@todonotes@figcolor} +\define@key{todonotes}% + {figcolor}{\renewcommand{\@todonotes@currentfigcolor}{#1}} % \end{macrocode} % Preset values of the options % \begin{macrocode} @@ -1512,6 +1660,7 @@ noauthor,% figwidth=\@todonotes@figwidth,% figheight=\@todonotes@figheight,% + figcolor=\@todonotes@figcolor,% line, list, size=\@todonotes@textsize}{}% % \end{macrocode} % \subsection{The main code part} @@ -1540,14 +1689,25 @@ \newcommand{\missingfigure}[2][]{} \else % \if@todonotes@disabled % \end{macrocode} +% \begin{macro}{\listoftodos} % Define the |\listoftodos| command and define the % appearance of the list of todos. -% \begin{macrocode} -\newcommand{\listoftodos}[1][\@todonotes@todolistname] - {\@ifundefined{chapter}{\section*{#1}}{\chapter*{#1}} \@starttoc{tdo}} +% \changes{0.3}{2015/11/16}{\texttt{\textbackslash listoftodos} didn't work +% with documentclass \texttt{llncs}} +% \changes{0.3}{2015/12/03}{Fix for \texttt{\textbackslash listoftodos} causing problems with +% \texttt{hyperref}} +% \begin{macrocode} +\newcounter{todonotes@oldtocdepth} +\newcommand{\listoftodos}[1][\@todonotes@todolistname]{% + \setcounter{todonotes@oldtocdepth}{\value{tocdepth}}% + \setcounter{tocdepth}{1}% + \@ifundefined{chapter}{\section*{#1}}{\chapter*{#1}} \@starttoc{tdo}% + \setcounter{tocdepth}{\value{todonotes@oldtocdepth}}% +} \newcommand{\l@todo} {\@dottedtocline{1}{0em}{2.3em}} % \end{macrocode} +% \end{macro} % Define styles used by the todo command. % Colors are set directly when placing the notes. % \begin{macrocode} @@ -1680,6 +1840,7 @@ % Update the dimensions to be accessed by Lua. % \begin{macrocode} \@todonotes@baselineskip=\baselineskip% + \@todonotes@normalbaselineskip=\normalbaselineskip% \@todonotes@fontsize=\f@size pt% % \end{macrocode} % Place a label at the site. @@ -1783,7 +1944,7 @@ \par \noindent \begin{tikzpicture} -\draw[fill=black!40, draw = white, line width=0pt] +\draw[fill=\@todonotes@currentfigcolor, draw = black!40, line width=2pt] (-2, -2.5) rectangle +(\@todonotes@currentfigwidth, \@todonotes@currentfigheight); \draw (2, -0.3) node[right, text width=\@todonotes@currentfigwidth-4.5cm] {#2}; @@ -1791,9 +1952,9 @@ (30:2cm) -- (150:2cm) -- (270:2cm) -- cycle; \draw (0, 0.3) node {\@todonotes@MissingFigureUp}; \draw (0, -0.3) node {\@todonotes@MissingFigureDown}; -\end{tikzpicture} +\end{tikzpicture}\hfill }% Ending \missingfigure command -\fi % Ending \@todonotes@ifdisabled +\fi% Ending \@todonotes@ifdisabled % \end{macrocode} % \end{macro} % \begin{macro}{\todototoc} @@ -1869,17 +2030,28 @@ % This box does not work in the tikzpicture. % \begin{macrocode} \directlua{luatodonotes.calcHeightsForNotes()}% has to be outside of tikzpicture - \begin{tikzpicture}[remember picture,overlay] +% \end{macrocode} +% Some classes modify the page margins using |\voffset| and |\hoffset|. +% Our |tikzpicture| would be aligned using this modified page origin. +% So we overrule the offsets using a |raisebox| and a negative |hspace|. +% \changes{0.3}{2015/11/30}{Consider defined values for \texttt{\textbackslash +% voffset} and \texttt{\textbackslash hoffset} to place the notes in the right +% position} +% \begin{macrocode} + \raisebox{\voffset}{% + \hspace{-\hoffset}% + \begin{tikzpicture}[remember picture,overlay] % \end{macrocode} % Reads the absolute coordinates of every note on the page and writes them to % the Lua objects. % \begin{macrocode} - \directlua{luatodonotes.getInputCoordinatesForNotes()} + \directlua{luatodonotes.getInputCoordinatesForNotes()} % \end{macrocode} % Runs the positioning algorithm and actually draws the notes and leaders. % \begin{macrocode} - \directlua{luatodonotes.printNotes()} - \end{tikzpicture}% + \directlua{luatodonotes.printNotes()} + \end{tikzpicture}% + }% % \end{macrocode} % Delete the drawn notes from the Lua lists and prepare for the next page. % \begin{macrocode} |