\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}