diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/luatex/latex/pdfarticle |
Initial commit
Diffstat (limited to 'macros/luatex/latex/pdfarticle')
-rw-r--r-- | macros/luatex/latex/pdfarticle/README | 6 | ||||
-rw-r--r-- | macros/luatex/latex/pdfarticle/pdfArticle.cls | 162 | ||||
-rw-r--r-- | macros/luatex/latex/pdfarticle/pdfArticle.pdf | bin | 0 -> 41590 bytes | |||
-rw-r--r-- | macros/luatex/latex/pdfarticle/pdfArticle.tex | 125 |
4 files changed, 293 insertions, 0 deletions
diff --git a/macros/luatex/latex/pdfarticle/README b/macros/luatex/latex/pdfarticle/README new file mode 100644 index 0000000000..ddfc7a690f --- /dev/null +++ b/macros/luatex/latex/pdfarticle/README @@ -0,0 +1,6 @@ +pdfArticle is simple document class dedicated +for creating pdf documents with LuaLaTeX. + +Copyright (C) 2015-2019, Robert Ryszard Paciorek <rrp@opcode.eu.org> + +This is free software distributed under terms of The MIT License. diff --git a/macros/luatex/latex/pdfarticle/pdfArticle.cls b/macros/luatex/latex/pdfarticle/pdfArticle.cls new file mode 100644 index 0000000000..6f6fe3aab3 --- /dev/null +++ b/macros/luatex/latex/pdfarticle/pdfArticle.cls @@ -0,0 +1,162 @@ +% Copyright (c) 2015-2019 Robert Ryszard Paciorek <rrp@opcode.eu.org> +% +% MIT License +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the "Software"), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{pdfArticle}[2019/05/01 v1.0 simple class for creating PDF documents with LuaLaTeX] + +\RequirePackage{kvoptions} % key=value option for class ... use also by hyperref, so zero overhead + \SetupKeyvalOptions{family=KVP, prefix=KVP@} % KVP = Key Val Parameters + + % Fonts settings + \DeclareStringOption[11pt] {fontSize} % base size of font (8pt, 9pt, 10pt, 11pt, 12pt, 14pt, 17pt, or 20pt with extarticle document class) + \DeclareStringOption[ + UprightFeatures = { SmallCapsFont={ lmromancaps10regular } }, + ItalicFeatures = { SmallCapsFont={ lmromancaps10oblique } }, + SlantedFont = lmromanslant10regular, + BoldSlantedFont = lmromanslant10bold, + Ligatures=TeX + ] {mainFontFeat} % features settings for mainFont + \DeclareStringOption[Latin Modern Roman] {mainFont} % document default main (serif) fornt + \DeclareStringOption[ + Ligatures=TeX + ] {sansFontFeat} % features settings for sansFont + \DeclareStringOption[Latin Modern Sans] {sansFont} % document default main sans-serif fornt + \DeclareStringOption[ + UprightFeatures = { SmallCapsFont={ lmmonocaps10regular } }, + ItalicFont = lmmono10italic, + ItalicFeatures = { SmallCapsFont={ lmmonocaps10oblique } }, + SlantedFont = lmmonoslant10regular + ] {monoFontFeat} % features settings for monoFont + \DeclareStringOption[Latin Modern Mono Light] {monoFont} % document default main mono-space fornt + + % Paper settings + \DeclareStringOption[a4paper] {paperSize} % paper size + \DeclareStringOption[portrait] {paperMode} % paper orientation: portrait lub landscape + \DeclareStringOption[2.2cm] {tmargin} % top margin size + \DeclareStringOption[2.5cm] {bmargin} % bottom margin size + \DeclareStringOption[2.2cm] {lmargin} % left margin size + \DeclareStringOption[2.2cm] {rmargin} % right margin size + \DeclareBoolOption [true] {twoside} % two side mode (switch left/right margin size): true lub false + + % Other settings + \DeclareStringOption[150] {imgResolution} % default resolution (ppi) for raster images inserted into PDF files (override by file header info) + \DeclareBoolOption [false] {extra} % enable load extra package set + + \ProcessKeyvalOptions* + +% disable automatic convert eps -> pdf +\def\DoNotLoadEpstopdf{\relax} + +% use extarticle as base class +\LoadClass[\KVP@fontSize]{extarticle} + +% advanced fonts for LuaLaTeX +\RequirePackage{fontspec} + \defaultfontfeatures[\rmfamily,\sffamily, \ttfamily]{} + \setmainfont{\KVP@mainFont}[\KVP@mainFontFeat] + \setsansfont{\KVP@sansFont}[\KVP@sansFontFeat] + \setmonofont{\KVP@monoFont}[\KVP@monoFontFeat] + +% insert images, with extended key=value interface ... set some defaults +\RequirePackage{graphicx, graphbox} + \DeclareGraphicsExtensions{.mp, .pdf, .png, .jpg, .jpeg} + \pdfvariable imageresolution \KVP@imgResolution + +% foreground and background colours ... use stack of colors +\RequirePackage{xcolor, fifo-stack} + \FSCreate{colors}{black} + +% page size and settings +\RequirePackage{geometry} + \geometry{ + \KVP@paperSize, \KVP@paperMode, + tmargin=\KVP@tmargin, bmargin=\KVP@bmargin, lmargin=\KVP@lmargin, rmargin=\KVP@rmargin + } + \ifKVP@twoside \geometry{twoside=true} \else \geometry{twoside=false} \fi + +% command for enforce new page geometry inside document, in contrast to \newgeometry: +% * allow chage paper size and orientation (only pdf output) +% * don't reset current settings (but allow modifies it) +\newcommand{\forceNewPageGeometry}[1]{% + \clearpage% + \Gm@clean\setkeys{Gm}{#1}\Gm@process% + \eject \pagewidth=\paperwidth \pageheight=\paperheight% + \Gm@changelayout% + \ifdefined\headwidth\headwidth=\textwidth\fi% +} + +% better verbatim environment ... replace standard verbatim environment by fancyvrb package +\RequirePackage{fancyvrb, fvextra} + \DefineVerbatimEnvironment{verbatim}{Verbatim}{} + \let\verb\Verb + \fvset{breaklines=true, breakafter={/-}, breakaftersymbolpre={}, breakaftersymbolpost={\tiny\ensuremath{\ \hookrightarrow\ }}} + + % text decorations (under line, striking out, highlight, contours, shadows, ...) +\RequirePackage[normalem]{ulem} + \newcommand{\ul}[1][blue]{\bgroup\markoverwith{\textcolor{#1}{\rule[-0.6ex]{2pt}{0.17ex}}}\ULon} + \newcommand{\st}[1][red]{\bgroup\markoverwith{\textcolor{#1}{\rule[0.5ex]{2pt}{0.25ex}}}\ULon} + \newcommand{\hl}[1][yellow]{\bgroup\markoverwith{\textcolor{#1}{\rule[-0.6ex]{1.02pt}{2.7ex}}}\ULon} +\RequirePackage{contour, shadowtext} + +% items lists +\RequirePackage{enumitem} % better enumerate, itemize and description environments +\RequirePackage{alphalph} % use display counters as letters with support for big numbers (as: ... x, y, z, aa, ab, ac, ...) + \let\alph\relax \def\alph#1{\alphalph{\value{#1}}} + \let\Alph\relax \def\Alph#1{\AlphAlph{\value{#1}}} + +% other useful stuff ... +\RequirePackage{pbox,varwidth} % vertical box with automatic minimal width +\RequirePackage{overpic} % put LaTeX stuff on images +\RequirePackage{wrapfig} % wrapfigure and wraptable environments for wraping text around images, tables, etc +\RequirePackage{array,dcolumn} % extentions for tables +\RequirePackage{tabto} % tabbing to fixed positions +\RequirePackage{changepage} % for adjustwidth environment +\RequirePackage{ragged2e} % \justifying command, justify environment and alternative left, center and right ragged text +\RequirePackage{setspace} % set line stretch with \setstretch{} command (it's more powerful way than \linespread{}\selectfont or manualy set \baselineskip) +\RequirePackage{amsmath,unicode-math} % math with unicode open-type fonts +\RequirePackage{adjustbox} % scale, clip, rotate, etc boxes + +\ifKVP@extra + \typeout{Document class "pdfArticle" starting to load "EXTRA" packages ...}\typeout{} + \RequirePackage{minted} % nice code highlight (use minted insted of listings, due to encoding problems in listings) + % \ifnum\pdf@shellescape=1 \RequirePackage{minted} \else \typeout{}\typeout{Warning: No -shell-escape, so DO NOT use minted package.} \fi + \RequirePackage[many,vignette,minted,magazine,poster,external]{tcolorbox} % nice framed boxes +\fi + +% if \pdfArticlePreHyperRef is defined run it before load hyperref, but after load all other packages +% (for loading packages and do other stuff than should be do before load hyperref) +\ifdefined\pdfArticlePreHyperRef\pdfArticlePreHyperRef\fi + +% internal and external links ... use curent color from stack for refernces +\RequirePackage[unicode=true, colorlinks=true, linkcolor=black, urlcolor=blue]{hyperref} + \let\oldref\ref + \AtBeginDocument{\renewcommand\ref[1]{\hyperref[#1]{\color{\FSTop{colors}}\oldref*{#1}}}} + +% create label with explicit provided name; usage: \namedLabel{label}{name} +\newcommand\namedLabel[2]{\begingroup% + \let\@currentlabel\@currentlabelx% + \def\@currentlabel{#2}% + \label{#1}% + \let\@currentlabelx\@currentlabel% +\endgroup} + +\typeout{Loading document class "pdfArticle" completed!}\typeout{} diff --git a/macros/luatex/latex/pdfarticle/pdfArticle.pdf b/macros/luatex/latex/pdfarticle/pdfArticle.pdf Binary files differnew file mode 100644 index 0000000000..7fd593d7c6 --- /dev/null +++ b/macros/luatex/latex/pdfarticle/pdfArticle.pdf diff --git a/macros/luatex/latex/pdfarticle/pdfArticle.tex b/macros/luatex/latex/pdfarticle/pdfArticle.tex new file mode 100644 index 0000000000..4a52518bf8 --- /dev/null +++ b/macros/luatex/latex/pdfarticle/pdfArticle.tex @@ -0,0 +1,125 @@ +% Copyright (c) 2015-2019 Robert Ryszard Paciorek <rrp@opcode.eu.org> +% +% MIT License +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the "Software"), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. + +\documentclass[ fontSize=10pt, ]{pdfArticle} + + +\title {Features of \texttt{pdfArticle} document class} +\author{Robert Ryszard Paciorek <rrp@opcode.eu.org>} +\date {2019-05-05} + +\makeatletter\hypersetup{ + pdftitle = {\@title}, + pdfauthor = {\@author} +}\makeatother + +\setstretch{1.0} \setlength{\parindent}{0pt} \setlength{\parskip}{2pt} + +\usepackage{titling} +\renewcommand{\maketitlehooka}{\vspace{-44pt}} +\renewcommand{\maketitlehookb}{\vspace{-14pt}} +\renewcommand{\maketitlehookd}{\vspace{-13pt}} +\renewcommand{\maketitlehookd}{\vspace{-12pt}} + +\usepackage{hologo} +\newcommand{\pkgLink}[1]{\texttt{\href{https://ctan.org/pkg/#1}{#1}}} + +\begin{document} + +\maketitle\thispagestyle{empty} + +Document class \texttt{pdfArticle} is simple document class dedicated for creating pdf documents with \hologo{LuaLaTeX}. +This class: +\begin{itemize} +\item Use \texttt{extarticle} (from \pkgLink{extsizes}) as base document class (for support wide range of base font sizes). +\item Require and configure \pkgLink{fontspec} package, that enable support for Unicode Open Type fonts. + Configure default document \textrm{sherif}, \textsf{sans} and \texttt{mono} fonts via \texttt{fontspec} according to class options. + By default use \textit{Latin Modern} fonts with support for \textsc{small caps} in sherif and mono fonts. +\item Require and configure \pkgLink{graphicx} and \pkgLink{graphbox} packages (for including graphics). + Set file extensions for search graphics files to \texttt{.mp, .pdf, .png, .jpg, .jpeg} (in this order -- first \hologo{METAPOST}, last JPEG) and default image resolution to \texttt{imgResolution} class atribute (default 150). +\item Require \pkgLink{xcolor} (for foreground and background colors) and \pkgLink{fifo-stack} packages and configure colours stack (you can use it with \Verb$\FSPush{colors}$, \Verb$\FSPop{colors}$ and \Verb$\FSTop{colors}$ commands). +\item Require \pkgLink{hyperref} package (for internal and external links in pdfs) and configure color external (url) link as blue and internal (\Verb$\ref{}$) links as color from top of colours stack. + More setting (eg. set PDF title, author, etc) can be do via \Verb$\hypersetup{}$ command. +\item Require \pkgLink{geometry} package and configure page gemetry (paper size, orientation and marings) according to class options. By default use portrait A4 paper. +\item Provide \Verb$\forceNewPageGeometry$ commad for enforce new page geometry (like \Verb$\newgeometry$, but allow change paper size too). +\item Require \pkgLink{fancyvrb} and \pkgLink{fvextra} (for good verbatim enviromet with line breaking, line numbering, titles, frames, etc). + Redefine standard \Verb$verbatim$ enviromet and \Verb$\verb$ commad to using fancyvrb. Allow break long lines on spaces, \Verb$/$ or \Verb$-$, set $\hookrightarrow$ as post break marker. +\item Require \pkgLink{ulem}, \pkgLink{contour} and \pkgLink{shadowtext} (for text decorations). +\item Is incompatible with \texttt{sout} package, + because define own \Verb$\ul[color]{text}$, \Verb$\st[color]{text}$ and \Verb$\hl[color]{text}$ commands (based on \texttt{ulem} package) + for \ul[blue]{underline}, \st[red]{strike out} and \hl[yellow]{highlight} text with selected color. +\item Require \pkgLink{enumitem} (for better enumerate, itemize and description environments). +\item Redefine \Verb$\alph$ and \Verb$\Alph$ with \pkgLink{alphalph} package (for converting big numbers to letters as \Verb[breaklines=true]$a, b, ..., x, y, z, aa, ab, ac, ..., az, ba, ..., zz, aaa, ...$). +\item Require \pkgLink{pbox} and \pkgLink{varwidth} (for vertical box with automatic minimal width). +\item Require \pkgLink{overpic} (for putting \hologo{LaTeXTeX} stuff on images). +\item Require \pkgLink{wrapfig} (for wraping text around images). +\item Require \pkgLink{array} and \pkgLink{dcolumn} (for useful extentions for tables). +\item Require \pkgLink{tabto} (for tabbing to fixed positions). +\item Require \pkgLink{ragged2e} (for \Verb$justify$ environment and configurable \Verb$Center$, \Verb$FlushLeft$, \Verb$FlushRight$). +\item Require \pkgLink{changepage} (for changes margins via \Verb$adjustwidth$ environment). +\item Require \pkgLink{setspace} (for setting line stretch -- global and via \Verb$spacing$ environment). +\item Require \pkgLink{amsmath} and \pkgLink{unicode-math} (for better math with Unicode Open Type fonts). +\item Require \pkgLink{adjustbox} (for scaling, rotating, clipping, etc boxes). +\item Only when \Verb$extra$ option was given require: \pkgLink{minted} (code highlight), \pkgLink{tcolorbox} (nice framed boxes). +\end{itemize} + +\clearpage +Class can be simple used by: \Verb$\documentclass{pdfArticle}$. Below is example of class usage with all avalible options, all options in this example are set to default values: +\begin{Verbatim}[xleftmargin=5mm] +\documentclass[ + fontSize=12pt, + + mainFont={Latin Modern Roman}, + mainFontFeat={ + UprightFeatures = { SmallCapsFont={ lmromancaps10regular } }, + ItalicFeatures = { SmallCapsFont={ lmromancaps10oblique } }, + SlantedFont = lmromanslant10regular, + BoldSlantedFont = lmromanslant10bold, + Ligatures=TeX + }, + sansFont={Latin Modern Sans}, + sansFontFeat={ + Ligatures=TeX + }, + monoFont={Latin Modern Mono}, + monoFontFeat={ + UprightFeatures = { SmallCapsFont={ lmmonocaps10regular } }, + ItalicFont = lmmono10italic, + ItalicFeatures = { SmallCapsFont={ lmmonocaps10oblique } }, + SlantedFont = lmmonoslant10regular + }, + + paperSize=a4paper, paperMode=portrait, twoside=true, + tmargin=2.2cm, bmargin=2.5cm, lmargin=2.2cm, rmargin=2.2cm, + + imgResolution=150, extra=false +]{pdfArticle} +\end{Verbatim} + +It's also possible load some packages (or do other things) right before load \texttt{hyperref} package (after load all other packages) via \Verb$\pdfArticlePreHyperRef$: +\begin{Verbatim}[xleftmargin=5mm] +\newcommand\pdfArticlePreHyperRef{ +% stuff to do before load hyperref +} +\documentclass{pdfArticle} +\end{Verbatim} +\end{document} |