From bcdd727cf125ed31eca233342d885b79c0ac1bb9 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Thu, 20 Mar 2014 22:51:31 +0000
Subject: efbox (20mar14)

git-svn-id: svn://tug.org/texlive/trunk@33236 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/source/latex/efbox/efbox.dtx | 367 +++++++++++++++++++++++++
 1 file changed, 367 insertions(+)
 create mode 100644 Master/texmf-dist/source/latex/efbox/efbox.dtx

(limited to 'Master/texmf-dist/source/latex/efbox/efbox.dtx')

diff --git a/Master/texmf-dist/source/latex/efbox/efbox.dtx b/Master/texmf-dist/source/latex/efbox/efbox.dtx
new file mode 100644
index 00000000000..95806579fda
--- /dev/null
+++ b/Master/texmf-dist/source/latex/efbox/efbox.dtx
@@ -0,0 +1,367 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2014 by José Romildo Malaquias <malaquias@gmail.com>
+% ---------------------------------------------------------------------------
+% 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 Maintainer of this work is José Romildo Malaquias.
+%
+% This work consists of the files efbox.dtx and efbox.ins
+% and the derived filebase efbox.sty.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{efbox.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{efbox}
+%<*package>
+    [2014/03/19 1.0 An enhanced fbox command.]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{efbox}[2014/03/19]
+\usepackage[utf8]{inputenc}
+\usepackage{xcolor}
+\usepackage[final]{showexpl}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\lstset{%
+  language=[LaTeX]TeX,
+  basicstyle=\ttfamily\small,
+  breaklines=true,
+  backgroundcolor=\color{lightgray},
+  breakautoindent=true,
+}
+\begin{document}
+  \DocInput{efbox.dtx}
+  \PrintChanges
+  % \PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{0}
+%
+% \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         \~}
+%
+%
+% \changes{v0.1}{2011/12/22}{Converted to DTX file.}
+%
+% \changes{v1.0}{2014/03/28}{Many changes in preparation for release.}
+% 
+% \DoNotIndex{\newcommand,\newenvironment}
+% \DoNotIndex{\def,\ifpdf,\begin}
+% \DoNotIndex{\DeclareOption,\ExecuteOptions,\RequirePackage}
+% \DoNotIndex{\renewcommand,\else,\fi,\relax,\@bsphack,\@esphack}
+% \DoNotIndex{\active,\AtEndOfPackage,\catcode,\centering}
+% \DoNotIndex{\closeout,\comment,\do,\dospecials,\end,\endcomment}
+% \DoNotIndex{\fbox,\gdef,\immediate,\includegraphics,\let}
+% \DoNotIndex{\linewidth,\message,\newif,\newwrite,\openout}
+% \DoNotIndex{\PackageWarning,\space,\the,\verbatim@line}
+% \DoNotIndex{\verbatim@processline,\verbatim@start,\write}
+% \DoNotIndex{\@makeother,\IfFileExists,\ProcessOptions}
+% \DoNotIndex{\@ifnextchar,\define@key,\MessageBreak,\setkeys}
+% \DoNotIndex{\stepcounter,\newcounter,\trivlist,\AtEndDocument}
+% \DoNotIndex{\@empty,\edef,\csname,\endcsname,\edef,\begingroup}
+% \DoNotIndex{\endgroup,\endtrivlist,\global,\if,\ifx,\item}
+% \DoNotIndex{\PackageWarningNoLine,\PassOptionsToPackage}
+% \DoNotIndex{\ProvidesPackage,\@arabic}
+% 
+% \providecommand*{\url}{\texttt}
+% \GetFileInfo{efbox.dtx}
+% \title{The \textsf{efbox} package}
+% \author{José Romildo Malaquias \\ \url{malaquias@gmail.com}}
+% \date{\fileversion~from \filedate}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% The \texttt{efbox} package defines the command \texttt{efbox}, which
+% is an enhanced version of the \texttt{fbox} command. It creates a box
+% just wide enough to hold the text created by its argument, allowing to
+% draw a frame around the outside of the box at the chosen borders, and
+% to set a background color for the box.
+%
+% \section{Usage}
+%
+% In order to use the package, just load it in the preamble of your
+% document:
+% \begin{verbatim}
+% \usepackage{efbox}
+% \end{verbatim}
+%
+% \DescribeMacro{\efbox}
+% 
+% The macro \verb|efbox| can be used to create a horizontal box just
+% wide enough to hold the text created by its argument (like the
+% \verb|makebox| macro). Additionaly a frame can be drawn around the
+% outside of the box (like the \verb|fbox| macro) at the chosen
+% borders. Also it can set a background color for the box.
+% \begin{quote}
+% \verb|\efbox[|\meta{keyword}$=$\meta{value}\verb|...]{|\meta{text}\verb|}|
+% \end{quote}
+% 
+% The available keywords are:
+% \begin{description}
+%   \item[\normalfont\texttt{leftline}:] This is a boolean, either true
+%   or false; the default is true. If true, a line is drawn in the left
+%   border of the box.
+% 
+%   \item[\normalfont\texttt{rightline}:] This is a boolean, either true
+%   or false; the default is true. If true, a line is drawn in the right
+%   border of the box.
+% 
+%   \item[\normalfont\texttt{topline}:] This is a boolean, either true
+%   or false; the default is true. If true, a line is drawn in the top
+%   border of the box.
+% 
+%   \item[\normalfont\texttt{bottomline}:] This is a boolean, either
+%   true or false; the default is true. If true, a line is drawn in the
+%   bottom border of the box.
+% 
+%   \item[\normalfont\texttt{hidealllines}:] This is a boolean, either
+%   true or false; the default is false. If true, no line is drawn in
+%   the borders of the box.
+% 
+%   \item[\normalfont\texttt{backgroundcolor=}\meta{backgroundcolor}:]
+%   \meta{backgroundcolor} is the color used as the background for the
+%   box. The default is the current background color.
+% 
+%   \item[\normalfont\texttt{linecolor=}\meta{linecolor}:]
+%   \meta{linecolor} is the color used for the border lines. The default
+%   is black.
+%
+%   \item[\normalfont\texttt{linewidth=}\meta{linewidth}:]
+%   \meta{linewidth} is the width of the lines drawn at the borders of
+%   the box. The default is \verb|\fboxrule|.
+%
+%   \item[\normalfont\texttt{margin=}\meta{margin}:] \meta{margin} is
+%   the distance between the border lines and the box text. The default
+%   is \verb|\fboxsep|.
+% 
+%   \item[\normalfont\texttt{font=}\meta{font}:] \meta{font} is the font
+%   used to typeset the text in the box. The default is the current
+%   font.
+% 
+%   \item[\normalfont\texttt{baselinestretch=}\meta{baselinestretch}:]
+%   \meta{baselinestretch} is the base line stretch. There is no
+%   default.
+% \end{description}
+%
+% \DescribeMacro{\efboxsetup}
+% 
+% The macro \verb|efboxsetup| can be used to set options used by
+% \verb|\efbox|.
+% \begin{quote}
+% \verb|\efboxsetup{|\meta{keyword}$=$\meta{value}\verb|...]|
+% \end{quote}
+% The available keyworkds are the same from the \verb|\efbox| macro.
+%
+% \StopEventually{}
+%
+% \section{Examples}
+% 
+% This is a demonstration of the \texttt{efbox} macro.
+% 
+% \iffalse
+%<*example>
+% \fi
+% \begin{LTXexample}[pos=b,numbers=none]
+\efbox{Foo}
+\efbox[rightline=false,topline=false]{Foo}
+\efbox[topline,backgroundcolor=red]{Foo}
+\efbox[linewidth=2pt,font=\Large]{Large Foo}
+\efbox[rightline=false,topline=false,linecolor=blue,linewidth=2pt]{Foo}
+\efbox[margin=10pt,backgroundcolor=yellow,font=\ttfamily\itshape]{Italic Typewriter Foo}
+
+\efbox[linewidth=3pt,margin=5pt,backgroundcolor=red]{Foo}
+\efbox[hidealllines,backgroundcolor=red]{Foo}
+\efbox{Foo}
+\efbox[hidealllines,backgroundcolor=red,margin=15pt]{Foo}
+\efbox[margin=15pt,linewidth=5pt]{Foo}
+\efbox[bottomline=false,rightline=false,linewidth=2pt,margin=1pt,backgroundcolor=yellow]{Foo}
+
+\efbox{Foo}
+% \end{LTXexample}
+% \iffalse
+%</example>
+% \fi
+%
+% \section{Implementation}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+%    \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{efbox}[2014/03/19 v1.0 An enhanced fbox command]
+\RequirePackage{color}
+\RequirePackage{pgfkeys}
+\newif\if@efbox@leftline
+\newif\if@efbox@rightline
+\newif\if@efbox@topline
+\newif\if@efbox@bottomline
+\pgfkeys{
+  /efbox/.cd,
+  leftline/.is if           = @efbox@leftline,
+  rightline/.is if          = @efbox@rightline,
+  topline/.is if            = @efbox@topline,
+  bottomline/.is if         = @efbox@bottomline,
+  hidealllines/.style       = {leftline=false,rightline=false,topline=false,bottomline=false},
+  backgroundcolor/.store in = \efbox@backgroundcolor,
+  linecolor/.store in       = \efbox@linecolor,
+  linewidth/.store in       = \efbox@linewidth,
+  margin/.store in          = \efbox@margin,
+  font/.store in            = \efbox@font,
+  baselinestretch/.store in = \efbox@baselinestretch,
+}
+\pgfqkeys{/efbox}{
+  leftline   = true,
+  rightline  = true,
+  topline    = true,
+  bottomline = true,
+  linecolor  = black,
+  linewidth  = \fboxrule,
+  margin     = \fboxsep,
+}
+\newif\if@efbox@hasframe
+%    \end{macrocode}
+%
+% \begin{macro}{\efboxsetup}
+%    \begin{macrocode}
+\def\efbox@global@options{}
+\newcommand\efboxsetup[1]{%
+  \def\efbox@global@options{#1}%
+}%
+\newcommand*\mypgfqkeys@with@saved@options[3]{%
+  % #1 => path
+  % #2 => macro holding saved options
+  % #3 => keys
+  \def\@pgfqkeys@##1{\pgfqkeys{#1}{##1}}%
+  \expandafter\@pgfqkeys@\expandafter{#2,#3}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efbox}
+%    \begin{macrocode}
+\newcommand\efbox[2][]{%
+  \begingroup%
+    \mypgfqkeys@with@saved@options{/efbox}{\efbox@global@options}{#1}%
+    %\expandafter\pgfqkeys\expandafter{/efbox}\expandafter{\efbox@global@options,#1}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+    \ifdefined\efbox@font\efbox@font\fi
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+    \ifdefined\efbox@baselinestretch
+      \def\baselinestretch{\efbox@baselinestretch}%
+    \fi
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+    \@efbox@hasframefalse
+    \if@efbox@topline\@efbox@hasframetrue\else\fi
+    \if@efbox@bottomline\@efbox@hasframetrue\else\fi
+    \if@efbox@leftline\@efbox@hasframetrue\else\fi
+    \if@efbox@rightline\@efbox@hasframetrue\else\fi
+    \ifdefined\efbox@backgroundcolor\@efbox@hasframetrue\else\fi
+    \if@efbox@hasframe
+      \ifdefined\efbox@backgroundcolor\else\def\efbox@backgroundcolor{white}\fi
+      \fboxsep=\efbox@margin
+      \fboxrule=\efbox@linewidth
+      \let\@frameb@x\@my@frameb@x
+      \fboxsep=\efbox@margin
+      \def\efbox@body{\fcolorbox{\efbox@linecolor}{\efbox@backgroundcolor}{#2}}%
+    \else
+      \def\efbox@body{#2}%
+    \fi
+    \ifdefined\efbox@title
+      \ifx\@empty\efbox@title
+        \noindent\efbox@body
+      \else
+        \vbox{%
+          \nobreak\vskip\fboxsep
+          \rlap{\frametitle{\efbox@title}}%
+          \nobreak\nointerlineskip
+          \vskip-\baselineskip
+          \vskip \fboxsep
+          \noindent\efbox@body
+        }%
+      \fi
+    \else
+      \efbox@body
+    \fi
+  \endgroup
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@my@frameb@x}
+%    \begin{macrocode}
+\def\@my@frameb@x#1{%
+   \@tempdima\fboxrule
+   \advance\@tempdima\fboxsep
+   \advance\@tempdima\dp\@tempboxa
+   \hbox{%
+     \lower\@tempdima\hbox{%
+       \vbox{%
+	\if@efbox@topline\hrule\@height\fboxrule\fi
+	\hbox{%
+	  \if@efbox@leftline\vrule\@width\fboxrule\fi
+           #1%
+           \vbox{%
+             \vskip\fboxsep
+             \box\@tempboxa
+             \vskip\fboxsep}%
+           #1%
+           \if@efbox@rightline\vrule\@width\fboxrule\fi
+	}%
+         \if@efbox@bottomline\hrule\@height\fboxrule\fi
+       }%
+     }%
+   }%
+}%
+\endinput
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+\endinput
-- 
cgit v1.2.3

