% Copyright 2018 by Till Tantau % % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License and/or % 2. under the GNU Free Documentation License. % % See the file doc/generic/pgf/licenses/LICENSE for more details. \section{Design of the System Layer} \makeatletter \subsection{Driver Files} \label{section-pgfsys} The \pgfname\ system layer mainly consists of a large number of commands starting with |\pgfsys@|. These commands will be called \emph{system commands} in the following. The higher layers ``interface'' with the system layer by calling these commands. The higher layers should never use |\special| commands directly or even check whether |\pdfoutput| is defined. Instead, all drawing requests should be ``channeled'' through the system commands. The system layer is loaded and set up by the following package: \begin{package}{pgfsys} This file provides ``default implementations'' of all system commands, but most simply produce a warning that they are not implemented. The actual implementations of the system commands for a particular driver like, say, |pdftex| reside in files called |pgfsys-xxxx.sty|, where |xxxx| is the driver name. These will be called \emph{driver files} in the following. When |pgfsys.sty| is loaded, it will try to determine which driver is used by loading |pgf.cfg|. This file should set up the macro |\pgfsysdriver| appropriately. The |pgfsys.sty| will input the appropriate |pgfsys-|\meta{drivername}|.sty|. \end{package} \begin{command}{\pgfsysdriver} This macro should expand to the name of the driver to be used by |pgfsys|. The default from |pgf.cfg| is |pgfsys-\Gin@driver|. This is very likely to be correct if you are using \LaTeX. For plain \TeX, the macro will be set to |pgfsys-pdftex.def| if |pdftex| is used and to |pgfsys-dvips.def| otherwise. \end{command} \begin{filedescription}{pgf.cfg} This file should set up the command |\pgfsysdriver| correctly. If |\pgfsysdriver| is already set to some value, the driver normally should not change it. Otherwise, it should make a ``good guess'' at which driver will be appropriate. \end{filedescription} The currently supported backend drivers are discussed in Section~\ref{section-drivers}. \subsection{Common Definition Files} Some drivers share many |\pgfsys@| commands. For the reason, files defining these ``common'' commands are available. These files are \emph{not} usable alone. \begin{filedescription}{pgfsys-common-postscript} This file defines some |\pgfsys@| commands so that they produce appropriate PostScript code. \end{filedescription} \begin{filedescription}{pgfsys-common-pdf} This file defines some |\pgfsys@| commands so that they produce appropriate \textsc{pdf} code. \end{filedescription} %%% Local Variables: %%% mode: latex %%% TeX-master: "pgfmanual" %%% End: