summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/ladder/README.md29
-rw-r--r--Master/texmf-dist/doc/latex/ladder/ladder.pdfbin0 -> 211838 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ladder/ladder.tex268
-rw-r--r--Master/texmf-dist/tex/latex/ladder/ladder.sty127
4 files changed, 424 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/ladder/README.md b/Master/texmf-dist/doc/latex/ladder/README.md
new file mode 100644
index 00000000000..3634746fab4
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ladder/README.md
@@ -0,0 +1,29 @@
+# Lader TeX package
+_This package permit the creation of simple ladder diagram into TeX documents._
+
+[Example](https://github.com/AurelienC/tex-ladder/blob/master/ladder.pdf)
+
+## Usage
+The code must be inserted between en `tikzpicture` section.
+
+Add the packages :
+ \usepackage{tikz}
+ \usepackage{Ladder}
+
+
+
+### Net
+_All contacts and relays are, by default, added in series_
+* `LadderLine` begin a new ladder net
+* `startParallel` begin a parallel segment
+* `setParallel` begin the new parallel segment
+* `unsetParallel` end of the parallel segment
+
+### Contacts
+* `LadderNO[type]{name}{mnemonic}` a Normally Opened contact
+* `LadderNC[type]{name}{mnemonic}` a Normaly Closed contact
+_Type may be P (rising edge), N (falling edge)..._
+
+### Relays
+* `LadderB[type]{name}{mnemonic}` a relay
+_Type may be R (reset), S (set)..._
diff --git a/Master/texmf-dist/doc/latex/ladder/ladder.pdf b/Master/texmf-dist/doc/latex/ladder/ladder.pdf
new file mode 100644
index 00000000000..8ab3233ae7b
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ladder/ladder.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ladder/ladder.tex b/Master/texmf-dist/doc/latex/ladder/ladder.tex
new file mode 100644
index 00000000000..33bff63fc2d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ladder/ladder.tex
@@ -0,0 +1,268 @@
+\documentclass[a4paper]{article}
+
+%% Language and font encodings
+\usepackage[english]{babel}
+\usepackage[utf8x]{inputenc}
+\usepackage[T1]{fontenc}
+
+%% Sets page size and margins
+\usepackage[a4paper,top=3cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry}
+
+%% Useful packages
+\usepackage{ladder}
+\usepackage{hyperref}
+\usepackage{xcolor}
+\usepackage{minted}
+
+\definecolor{LG}{HTML}{F9F9F9}
+
+%% Informations
+\title{\textsf{ladder} package}
+\author{Aurélien CADIOU \\ \href{mailto:contact@aureliencadiou.fr}{contact@aureliencadiou.fr}}
+
+\begin{document}
+\maketitle
+
+\setcounter{tocdepth}{1}
+\tableofcontents
+
+\section*{Introduction}
+This package permit the creation of simple ladder diagram into TeX documents.
+
+\href{https://github.com/AurelienC/tex-ladder}{Github repository : tex-ladder}
+
+\section{Installation}
+Install this package like any other \LaTeX~package.
+
+\section{Dependencies}
+This package depends on :
+\begin{itemize}
+\item \href{https://www.ctan.org/search/?phrase=tikz}{tikz}
+\item \href{https://www.ctan.org/pkg/ifthen}{ifthen}
+\item \href{https://www.ctan.org/pkg/calc}{calc}
+\end{itemize}
+
+
+\section{Usage}
+\subsection{Package}
+Add following packages on your document : \mintinline{latex}{\usepackage{tikz} \usepackage{ladder}}.
+
+
+\subsection{Net}
+All contacts and relays are, by default, added in serie.
+\begin{itemize}
+\item \mintinline{latex}{\ladderLine} begin a new ladder net
+\item \mintinline{latex}{\startParallel} begin a parallel segment
+\item \mintinline{latex}{\setParallel} begin the new parallel segment
+\item \mintinline{latex}{\unsetParallel} end of the parallel segment
+\end{itemize}
+
+\subsection{Contacts}
+\texttt{type} of contacts may be any letter. Conventionnaly, we use \texttt{P} for rising edge contact and \texttt{N} for falling edge contact.\\
+
+\begin{itemize}
+\item \mintinline{latex}{\ladderNO[type]{name}{mnemonic}} Normally Opened contact
+\item \mintinline{latex}{\ladderNC[type]{name}{mnemonic}} Normaly Closed contact
+\end{itemize}
+
+
+\subsection{Coils}
+\texttt{type} of coils may be any letter. Conventionnaly, we use \texttt{R} for reset coil, \texttt{S} for set coil.\\
+
+\begin{itemize}
+\item \mintinline{latex}{\ladderC[type]{name}{mnemonic}} a coil
+\end{itemize}
+
+
+\section{Simple example}
+\subsection{Preview}
+\begin{figure}[h!]
+ \begin{tikzpicture}
+ \ladderLine
+ \ladderNO{Switch}{I1.0}
+ \ladderNC{Breaker}{I0.1}
+ \ladderNO[P]{Start}{M0.0}
+ \ladderC[S]{Running}{M1.0}
+
+ \ladderLine
+ \ladderNO{Breaker}{I0.1}
+ \ladderC{Fault}{M10.0}
+ \end{tikzpicture}
+ \caption{Example with contacts and coil}
+ \label{example1}
+\end{figure}
+
+\subsection{Code}
+Code of figure \ref{example1}.
+\begin{minted}[bgcolor=LG, fontsize=\footnotesize]{latex}
+\begin{tikzpicture}
+ \ladderLine
+ \ladderNO{Switch}{I1.0}
+ \ladderNC{Breaker}{I0.1}
+ \ladderNO[P]{Start}{M0.0}
+ \ladderC[S]{Running}{M1.0}
+
+ \ladderLine
+ \ladderNO{Breaker}{I0.1}
+ \ladderC{Fault}{M10.0}
+\end{tikzpicture}
+\end{minted}
+
+
+\section{Parallel section}
+\subsection{Preview}
+\begin{figure}[h!]
+ \begin{tikzpicture}
+ \ladderLine
+ \ladderNO[P]{Button}{I1.0}
+
+ \startParallel % Begin of section
+ \ladderNO{Running}{M1.0}
+ \ladderNC{Fault}{M10.0}
+
+ \setParallel
+ \ladderNO{Manual}{M2.3}
+ \unsetParallel
+
+ \ladderC[S]{Validation}{M1.1}
+ \end{tikzpicture}
+ \caption{Example with parallel section}
+ \label{example2}
+\end{figure}
+
+\subsection{Code}
+Code of figure \ref{example2}.
+
+\begin{minted}[bgcolor=LG, fontsize=\footnotesize]{latex}
+\begin{tikzpicture}
+ \ladderLine
+ \ladderNO[P]{Button}{I1.0}
+
+ \startParallel % Begin of section
+ \ladderNO{Running}{M1.0}
+ \ladderNC{Fault}{M10.0}
+
+ \setParallel
+ \ladderNO{Manual}{M2.3}
+ \unsetParallel
+
+ \ladderC[S]{Validation}{M1.1}
+\end{tikzpicture}
+\end{minted}
+
+
+
+
+\section{Complete example}
+\subsection{Preview}
+\begin{figure}[!h]
+ \begin{tikzpicture}
+ \ladderLine % Begenning new line
+ \ladderNO{bla}{I1.0}
+
+ % M0 will be in parallel with I1.0 and I1.1
+ \startParallel
+ \ladderNC{bli}{M0.0}
+
+ \setParallel
+ \ladderNO{blou}{I1.0}
+ \ladderNO{blo}{I1.1}
+ \unsetParallel
+
+ \ladderC{blu}{M1} % On met une "bobine"
+ \ladderNO[P]{ble}{I2.0}
+
+ \startParallel
+ \ladderC[R]{bleu}{M0.1}
+ \setParallel
+
+ \ladderC[S]{bleu}{M1.2}
+ \unsetParallel
+
+ % New section
+ \ladderLine
+
+ \ladderNO{bla}{I3.7}
+
+ \startParallel
+ \ladderNC{bli}{M1.0}
+ \ladderNO[P]{blou}{I1.0}
+
+ \setParallel
+ \ladderNO{blo}{I1.6}
+ \unsetParallel
+
+ \ladderC{blu}{M4.1}
+
+ \ladderNO{ble}{I7.2}
+
+ \startParallel
+ \ladderC{bleu}{M1}{R}
+
+ \setParallel
+ \ladderNO{ble}{I7.3}
+ \ladderC[S]{bleu}{M4.2}
+ \unsetParallel
+ \end{tikzpicture}
+ \caption{Example of ladder package usage}
+ \label{example3}
+\end{figure}
+
+\subsection{Code}
+Code of figure \ref{example3}.
+
+\begin{minted}[bgcolor=LG, fontsize=\footnotesize]{latex}
+\begin{figure}
+ \begin{tikzpicture}
+ \ladderLine % Begenning new line
+ \ladderNO{bla}{I1.0}
+
+ % M0 will be in parallel with I1.0 and I1.1
+ \startParallel
+ \ladderNC{bli}{M0.0}
+
+ \setParallel
+ \ladderNO{blou}{I1.0}
+ \ladderNO{blo}{I1.1}
+ \unsetParallel
+
+ \ladderC{blu}{M1} % On met une "bobine"
+ \ladderNO[P]{ble}{I2.0}
+
+ \startParallel
+ \ladderC[R]{bleu}{M0.1}
+ \setParallel
+ \ladderC[S]{bleu}{M1.2}
+ \unsetParallel
+
+ % New section
+ \ladderLine
+
+ \ladderNO{bla}{I3.7}
+
+ \startParallel
+ \ladderNC{bli}{M1.0}
+ \ladderNO[P]{blou}{I1.0}
+
+ \setParallel
+ \ladderNO{blo}{I1.6}
+ \unsetParallel
+
+ \ladderC{blu}{M4.1}
+
+ \ladderNO{ble}{I7.2}
+
+ \startParallel
+ \ladderC{bleu}{M1}{R}
+
+ \setParallel
+ \ladderNO{ble}{I7.3}
+ \ladderC[S]{bleu}{M4.2}
+ \unsetParallel
+ \end{tikzpicture}
+ \caption{Example of ladder package usage}
+\end{figure}
+\end{minted}
+
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/ladder/ladder.sty b/Master/texmf-dist/tex/latex/ladder/ladder.sty
new file mode 100644
index 00000000000..cd537d71770
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/ladder/ladder.sty
@@ -0,0 +1,127 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LADDER %%
+%% Aurélien CADIOU %%
+%% contact@aureliencadiou.fr %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Licence : MIT licence
+%% Repository : https://github.com/AurelienC/tex-ladder
+
+\NeedsTeXFormat{LaTeX2e}[1999/01/01]
+\ProvidesPackage{ladder}[2017/05/17]
+
+
+% Packages required
+\RequirePackage{tikz}
+\RequirePackage{ifthen}
+\RequirePackage{calc}
+
+
+\newcounter{nextY}%
+\newcounter{nextYPar}%
+\newcounter{nextX}%
+\newcounter{currentY}%
+\newcounter{currentX}%
+\newcounter{tempCurrentY}%
+\newcounter{startPar}%
+\newcounter{stopPar}%
+\newcounter{memCurrentX}%
+\newcounter{memCurrentY}%
+
+
+%%% NEW LINE %%%
+\newcommand{\ladderLine}[0]{
+ % Updating variables
+ \setcounter{currentX}{0}
+ \setcounter{nextX}{0}
+ \setcounter{currentY}{\value{nextY}}
+}
+
+
+%%% TEXT %%%
+\newcommand{\ladderText}[3][]{
+ \draw[text centered](\value{currentX}+1,\value{currentY}+1) node {\textbf{#2}};
+ \draw[text centered](\value{currentX}+1,\value{currentY}+0.5) node {\textit{#3}};
+ \draw[text centered](\value{currentX}+1,\value{currentY}) node {\texttt{\LARGE{#1}}};
+}
+
+
+%%% NO CONTACT %%%
+\newcommand{\ladderNO}[3][]{
+ % Updating variables
+ \setcounter{currentX}{\value{nextX}}
+ \setcounter{tempCurrentY}{\value{currentY}-2}
+ \ifthenelse{\value{nextY}>\value{tempCurrentY}}{\setcounter{nextY}{\value{tempCurrentY}}}{}
+ \ifthenelse{\value{nextYPar}>\value{tempCurrentY}}{\setcounter{nextYPar}{\value{tempCurrentY}}}{}
+ \addtocounter{nextX}{2}
+
+ % Drawing
+ \draw(\value{currentX}+0.75,\value{currentY}+0.25) -- (\value{currentX}+0.75,\value{currentY}-0.25); % First bar of NO contact
+ \draw(\value{currentX}+1.25,\value{currentY}+0.25) -- (\value{currentX}+1.25,\value{currentY}-0.25); % Second bar of NO contact
+ \draw(\value{currentX},\value{currentY}) -- (\value{currentX}+0.75,\value{currentY}); % Connection
+ \draw(\value{currentX}+1.25,\value{currentY}) -- (\value{nextX},\value{currentY}); % Connection
+ \ladderText[#1]{#2}{#3}
+}
+
+
+%%% NC CONTACT %%%
+\newcommand{\ladderNC}[3][]{
+ % Updating variables
+ \setcounter{currentX}{\value{nextX}}
+ \setcounter{tempCurrentY}{\value{currentY}-2}
+ \ifthenelse{\value{nextY}>\value{tempCurrentY}}{\setcounter{nextY}{\value{tempCurrentY}}}{}
+ \ifthenelse{\value{nextYPar}>\value{tempCurrentY}}{\setcounter{nextYPar}{\value{tempCurrentY}}}{}
+ \addtocounter{nextX}{2}
+
+ % Drawing
+ \draw(\value{currentX}+0.75,\value{currentY}+0.25) -- (\value{currentX}+0.75,\value{currentY}-0.25) -- (\value{currentX}+1.25,\value{currentY}+0.25) -- (\value{currentX}+1.25,\value{currentY}-0.25); % NC contact
+ \draw(\value{currentX},\value{currentY}) -- (\value{currentX}+0.75,\value{currentY}); % Connection
+ \draw(\value{currentX}+1.25,\value{currentY}) -- (\value{nextX},\value{currentY}); % Connection
+ \ladderText[#1]{#2}{#3}
+}
+
+
+%%% COILS %%%
+\newcommand{\ladderC}[3][]{
+ % Updating variables
+ \setcounter{currentX}{\value{nextX}}
+ \setcounter{tempCurrentY}{\value{currentY}-2}
+ \ifthenelse{\value{nextY}>\value{tempCurrentY}}{\setcounter{nextY}{\value{tempCurrentY}}}{}
+ \ifthenelse{\value{nextYPar}>\value{tempCurrentY}}{\setcounter{nextYPar}{\value{tempCurrentY}}}{}
+ \addtocounter{nextX}{2}
+
+ % Drawing
+ \draw (\value{currentX}+1,\value{currentY}) circle (0.3);
+ \draw(\value{currentX},\value{currentY}) -- (\value{currentX}+0.7,\value{currentY}); % Connection
+ \draw(\value{currentX}+1.3,\value{currentY}) -- (\value{nextX},\value{currentY}); % Connection
+ \ladderText[#1]{#2}{#3}
+}
+
+
+
+%%% START OF PARALLEL SECTION %%%
+\newcommand{\startParallel}[0]{
+ \setcounter{startPar}{\value{nextX}} % Store the X of beginning
+}
+
+
+
+%%% DEBUT PARALLELE %%%
+\newcommand{\setParallel}[0]{
+ \setcounter{stopPar}{\value{nextX}}%
+ \draw(\value{startPar},\value{currentY}) -- (\value{startPar},\value{nextYPar}); % Vertical bar
+ \setcounter{memCurrentX}{\value{nextX}}%
+ \setcounter{memCurrentY}{\value{currentY}}%
+ \setcounter{nextX}{\value{startPar}}%
+ \setcounter{currentY}{\value{nextYPar}}%
+}
+
+
+%%% END OF PARALLEL SECTION %%%
+\newcommand{\unsetParallel}[0]{
+ % Parallel section is more larger than "normal" section test
+ \ifthenelse{\value{nextX}>\value{memCurrentX}}{}{\draw(\value{nextX},\value{currentY}) -- (\value{stopPar},\value{currentY}) -- (\value{stopPar},\value{memCurrentY});}
+ \ifthenelse{\value{nextX}>\value{memCurrentX}}{\draw (\value{nextX},\value{currentY}) -- (\value{nextX},\value{memCurrentY}) -- (\value{memCurrentX},\value{memCurrentY});}{\setcounter{nextX}{\value{memCurrentX}}}
+ \setcounter{currentY}{\value{memCurrentY}}
+ \setcounter{nextYPar}{0}
+}