Notes-on-Python/Notes on Python.tex

168 lines
5.1 KiB
TeX

\documentclass[letterpaper, 10pt, twoside]{article}
% Packages without options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{lipsum}
\usepackage{verbatim} % Better code blocks
\usepackage{fancyvrb} % Even better code blocks
\usepackage{fvextra} % Even more better code blocks
\usepackage{enumitem} % Control spacing inside list environments
\usepackage{microtype}
\usepackage{wrapfig} % Allows us to use \wrapfigure command
\usepackage{adjustbox} % Adjust padding inside \minipage environment
\usepackage{tikz}
% Packages with options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{multicol}
\setlength\columnsep{25pt}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % Clear existing header/footer entries
\fancyhead[LE, RO]{\thepage} % Page number is always on the outside
\fancyhead[CE, CO]{Notes on Python} % Title is always in the middle
\fancyhfoffset[LE,RO]{0in} % Adjust header and footer width to match text width
% \cfoot{Page \thepage}
% \renewcommand{\footrulewidth}{0.5pt}
\renewcommand{\headrulewidth}{0.5pt}
\usepackage{geometry}
\geometry{
bmargin=0.75in, % bottom margin
tmargin=1in, % top margin
hmargin=0.75in, % horizontal margin
bindingoffset=0.25in
}
\usepackage[nottoc,numbib]{tocbibind} % Add references to TOC
\usepackage[hidelinks]{hyperref} % Include URLs
% My macros %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Make a nice border and box for the tops of our examples
\newcommand\klab[3]{\vspace{#1}\noindent{}\hrulefill~~\fbox{\texttt{~#2~}}~~\hrulefill\vspace{#3}}
% Add an \hrule with space above and below
\newcommand\krule[2]{\vspace{#1}\hrule\vspace{#2}}
% Make hrefs easier (must load package hyperref}
\newcommand\kref[2]{\href{#1}{{\texttt{#2}}}}
% Make some call outs
\newcommand\kpull[2]{
\setlength{\intextsep}{5.0pt plus 2.0pt minus 2.0pt}%
\setlength{\columnsep}{10pt}
\begin{wrapfigure}[]{r}[8pt]{0pt}
\fbox{
\adjustbox{padding*=0pt 2pt 0pt 1pt}{
\begin{minipage}{#2} % This is the width of the call out
\begin{small}
\begin{flushleft}
{#1} % This is the contents of the call out
\end{flushleft}
\end{small}
\end{minipage}
} % End adjustbox
} % End fbox
\end{wrapfigure}
}
% And make them work nicely with out multicol environment
% Not quite sure if commented lines are needed. More testing is required.
%\def\ksep{25pt}
\newcommand\kcolb{
% \setlength{\columnsep}{\ksep}
\begin{multicols}{2}
}
\newcommand\kcole{
\end{multicols}
}
% Add an indent to bibliography items
% This is a bit of a kludge, but it works. Look for a best practice to replace this.
\newcommand\kbib{
\begin{tikzpicture} \draw [white, line width=6] (0,0) -- (0.1,0); \end{tikzpicture}
}
% Make a Python Symbol like a LaTeX symbol
\newcommand\kpy{P{\scriptsize \raisebox{-0.4em}{\hspace{-0.16em}Y}}T{\scriptsize \raisebox{-0.2em}{h}}\hspace{-0.1em}\raisebox{0.4em}{o}\hspace{0.05em}\raisebox{-0.2em}N}
% Additional options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\raggedbottom
% Title info %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{\textbf{Notes on Python}}
\author{Kenneth John Odle\\ {\small \texttt{ken at kjodle dot net}}}
\date{2023\\ \medskip v. 0.0.1}
% Notes to self %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Make sure that \section{} is OUTside the multicols environment
% Make sure that \subsection{} is INside the multilcols environment
% If needed, add \newpage before a \section if the placement of the heading is weird
\begin{document}
\maketitle
\begin{abstract}
This document consists of notes on Python, gleaned from various sources. A list of references (often with commentary) follows.
The latest version of this document can be found at \kref{https://git.kjodle.net/kjodle/Notes-on-Python}{https://git.kjodle.net/kjodle/Notes-\\on-Python}.
\end{abstract}
\tableofcontents
\newpage
\section{Preliminaries}
\kcolb
\subsection{What is Python?}
\subsection{Why use Python?}
Many fields depend on \kpy\footnote{This is my attempt to produce a text symbol for Python, similar to \LaTeX{}. My thought is that it looks like a snake wriggling back and forth. Your mileage, of course, may (and probably will) vary.} to process data.
Mueller\cite{mueller:jp23} has many reasons why a knowledge of Python may be useful in a career search.
\subsection{IDEs and Python}
\kcole
\newpage
\section{Python Basics}
\kcolb
\subsection{Python Data Types}
\kcole
% References page begins below %%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newpage
\begin{thebibliography}{XX}
\kcolb
\bibitem{mueller:jp23}
Mueller, John Paul.
\textit{Beginning Programming with Python for Dummies}.
John Wiley \& Sons Inc. (United States: New Jersey: Hoboken).
3rd Edition,
2023.\\
\kbib{}This book \textit{heavily} emphasizes the use of Google Colab. It's basically an advertisement for the $\Gamma$oogle and \textit{highly} disappointing. Python is meant to be fairly universal and this book's approach seems to work counter to that intention.
\bibitem{pythonorg:main}
python.org.
``Python for Beginners'',\\
\kref{https://www.python.org/about/gettingstarted/}{https://www.python.org/about/\\gettingstarted/}\\
\kbib The official site of the Python Software Foundation.
\kcole
\end{thebibliography}
\end{document}