summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/lualatex/lualatex-truncate/lualatex-truncate.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-06-03 21:20:15 +0000
committerKarl Berry <karl@freefriends.org>2018-06-03 21:20:15 +0000
commitc6d56047fce75536865d1d9977258f654bacee4e (patch)
treec7d2a8ea86b47ec0d2184985aa17190afbece11b /Master/texmf-dist/source/lualatex/lualatex-truncate/lualatex-truncate.dtx
parent83495ceb0c238dbda8e2c21a65a590e12e4f9340 (diff)
lualatex-truncate (3jun18)
git-svn-id: svn://tug.org/texlive/trunk@47915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/lualatex/lualatex-truncate/lualatex-truncate.dtx')
-rw-r--r--Master/texmf-dist/source/lualatex/lualatex-truncate/lualatex-truncate.dtx135
1 files changed, 135 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/lualatex/lualatex-truncate/lualatex-truncate.dtx b/Master/texmf-dist/source/lualatex/lualatex-truncate/lualatex-truncate.dtx
new file mode 100644
index 00000000000..69ad4b80885
--- /dev/null
+++ b/Master/texmf-dist/source/lualatex/lualatex-truncate/lualatex-truncate.dtx
@@ -0,0 +1,135 @@
+%\iffalse
+%<*package>
+%% \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
+%% Lower-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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+%\iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Sebastian Friedl
+%
+% This work is subject to the LaTeX Project Public License, Version 1.3c or -- at
+% your option -- any later version of this license.
+% The work consists of the files lualatex-truncate.dtx, lualatex-truncate.ins,
+% lualatex-truncate-doc.dtx and the derived file lualatex-truncate.sty
+%
+% This work has the LPPL maintenance status 'maintained'.
+% Current maintainer of the work is Sebastian Friedl.
+%\fi
+%
+%
+%
+% \subsubsection*{Initialization}
+% Identify the package and require \LaTeXe:
+% \begin{macrocode}
+\ProvidesPackage{lualatex-truncate}%
+ [2018/06/03 v1.0 LuaLaTeX wrapper for the truncate package]
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+%
+%
+%
+% \subsubsection*{Internal variables}
+% This internal variable is used to remember whether \enquote{hacking} the hyphenation character (i.e.~"\prehyphenchar") is required:
+% \begin{macrocode}
+\newif\if@lualtxtruncate@hackhyphen
+\@lualtxtruncate@hackhyphenfalse
+% \end{macrocode}
+%
+%
+%
+% \subsubsection*{Package options}
+% The \opt{breakwords} and \opt{breakall} options require the hyphanation character to be hidden.
+% Therefore, we remember to \enquote{hack} the hyphen character before passing these options
+% to the original \sty{truncate} package:
+% \begin{macrocode}
+\DeclareOption{breakwords}{%
+ \@lualtxtruncate@hackhyphentrue
+ \PassOptionsToPackage{breakwords}{truncate}}
+\DeclareOption{breakall}{%
+ \@lualtxtruncate@hackhyphentrue
+ \PassOptionsToPackage{breakall}{truncate}}
+% \end{macrocode}
+%
+% \smallskip
+% Pass all other options (\opt{hyphenate} and \opt{fit}) directly to the \sty{truncate} package:
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{truncate}}
+% \end{macrocode}
+%
+% \smallskip
+% Process all options passed to \sty{lualatex-truncate}:
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+%
+%
+%
+% \subsubsection*{Loading the \sty{truncate} package}
+% Load the \sty{truncate} package. Required package options have already been passed on.
+% \begin{macrocode}
+\RequirePackage{truncate}
+% \end{macrocode}
+%
+%
+%
+% \subsubsection*{If the document is not compiled via \hologo{LuaLaTeX}\dots}
+% Don't wrap anything if the document isn't compiled by \hologo{LuaLaTeX}:
+% \begin{macrocode}
+\RequirePackage{iftex}
+\ifLuaTeX\else%
+ \PackageWarningNoLine{lualatex-truncate}%
+ {Whoops! You don't want to use LuaLaTeX?}%
+ \endinput%
+\fi%
+% \end{macrocode}
+%
+%
+%
+% \subsubsection*{Constructing the wrapper}
+% \begin{macro}{\lualtxtruncate@truncate}
+% Remember the original "\truncate" command's definition.
+% Since "\truncate" provides an optional argument, "\LetLtxMacro" has to be used
+% instead of the primitive "\let" command:
+% \begin{macrocode}
+\RequirePackage{letltxmacro}
+\LetLtxMacro\lualtxtruncate@truncate\truncate
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\truncate}
+% Construct the wrapper by redefining the "\truncate" command
+% and -- if necessary -- modifying "\prehyphenchar":
+% \begin{macrocode}
+\renewcommand{\truncate}[3][\TruncateMarker]{%
+ \if@lualtxtruncate@hackhyphen%
+ \prehyphenchar=0%
+ \fi%
+ \lualtxtruncate@truncate[#1]{#2}{#3}%
+ \if@lualtxtruncate@hackhyphen%
+ \prehyphenchar=`\-%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsubsection*{Famous last words}
+% Enough code for this package. "\endinput".
+% \begin{macrocode}
+\endinput
+% \end{macrocode}