Below you will find LaTeX code which will generate a PDF document with a perfect accessibility score according to Canvas’ Ally tool.

Note that the file secant_tangent_lines_by_hand.png is required.

% ------------------------------------------------------------
%   Document Preamble Settings for Tagged, Accessible PDF
% ------------------------------------------------------------

% Modern LaTeX document options and metadata (requires TeX Live 2026+ and LuaLaTeX)
\DocumentMetadata{
	pdfversion = 2.0,        % Use PDF 2.0 for enhanced features and compatibility
	lang       = en-US,      % Specify main document language (improves accessibility)
	pdfstandard=ua-2,        % Enable PDF/UA-2 conformance for universal accessibility
	tagging    = on,         % Activate structural tagging of document elements
	% Uncomment below for custom math tagging and alternate modules if needed:
	%tagging-setup = {math/setup=mathml-AF, extra-modules={verbatim-af}}
	tagging-setup = {math/setup={mathml-SE}, % Configure Math as Structure Elements
		math/alt/use = true,    % Embed alternative LaTeX source in math (impacts accessibility)
		extra-modules = {verbatim-af} % Add module for verbatim environments
	}
}
	
\documentclass{article}    % Basic LaTeX document setup

% ========== Packages for extra features ==========
\usepackage{amsmath,amsthm}       % For better math typesetting
\usepackage[colorlinks]{hyperref}      % For clickable links and PDF bookmarks
\usepackage{unicode-math}  % Maps LaTeX commands for mathematical characters to the Unicode Mathematical Alphanumeric Symbols block.
\usepackage{graphicx}      % For including images
\pagestyle{empty}          % (Optional) Removes page numbers (nicer for examples)

\usepackage{authblk}		% Helps with author names and affiliations

\newtheorem{theorem}{Theorem}[section]  % Numbering resets when a section changes
\newtheorem{corollary}{Corollary}[theorem]  % Numbering resets when a new theorem happens
\newtheorem{lemma}[theorem]{Lemma}  % Uses the same counter as Theorem
\newtheorem{definition}{Definition}  % Uses the same counter as Theorem
\newtheorem{example}{Example}  % Uses the same counter as Theorem

\usepackage{tikz}
\usetikzlibrary{positioning}

\usepackage[executable=python.exe]{pyluatex}  % Because I'm using Python

% ========== Main document begins ==========
\begin{document}
	
\title{Limits}
\date{19 July 2026}
\author{Keith E Emmert}
\affil{Tarleton State University Mathematics Department}

\pagestyle{headings}

\maketitle

\section{Best Practices for Maximum Accessibility}

\begin{definition}
	The \textbf{secant line} of the function $f(x)$ through the points $(a,f(a))$ and  $(x,f(x))$ is the line passing through these two points whose slope is given by $m_{sec} = \dfrac{f(x)-f(a)}{x-a}$ provided that  $x \not= a$.
\end{definition}

\begin{definition}
	The \textbf{slope of a tangent line} is found by letting $m_{tan} = \lim_{x\to a}⁡ \dfrac{f(x)-f(a)}{x-a}$.
\end{definition}

\begin{example}
	Consider the function $f(x) = -x^3 + 4 x^2 - x - 6$ and suppose that $a=\frac{3}{2}$. Consider three points $x=-\frac{3}{2}, -\frac{1}{2}, \frac{1}{2}$ where we wish to draw secant lines. A figure illustrating these ideas where the three secant lines drawn in red, green and brown, and the tangent line drawn in black are shown on the graph of $f(x)$ drawn in blue. See Figures~\ref{fig-sec-tan} or~\ref{fig-sec-tan-2}.
\end{example}

% --- Figure with embedded alternative text (accessibility for images) ---
\begin{figure}[h]
	\centering
	% Use the 'alt' key directly within \includegraphics
	\includegraphics[width=\linewidth, alt={The graph of $f(x)$ with its tangent line and several secant lines.}]{secant_tangent_lines_by_hand.png}
	\caption{The graph of $f(x)$ with its tangent line and several secant lines.}\label{fig-sec-tan}
\end{figure}

\begin{python}
import numpy as np 
import matplotlib.pyplot as plt 

x = np.linspace(-4, 6, 1000) 
f = -x**3 + 4*x**2 - x - 6 

l1 = -13*x/4 + 3 
l2 = 5*x/4 - 15/4 
l3 = 15*x/4 - 15/2 
l4 = 17*x/4 - 33/4 

fig, ax = plt.subplots(figsize=(8, 3)) 

ax.plot(x, f, color='blue', linewidth=2, label='f(x) = -x^3+4x^2-x-6') 
ax.plot(x, l1, '--', color='red', linewidth=1.5, label='y = -13x/4 + 3') 
ax.plot(x, l2, '--', color='green', linewidth=1.5, label='y = 5x/4 - 15/4') 
ax.plot(x, l3, '--', color='brown', linewidth=1.5, label='y = 15x/4 - 15/2') 
ax.plot(x, l4, color='black', linewidth=1.5, label='y = 17x/4 - 33/4') 

x0, y0 = 3/2, -15/8 
ax.plot(x0, y0, 'ko', markersize=6) 
ax.plot(-3/2, 63/8, 'ro') 
ax.plot(-1/2, -35/8, 'go', markersize=6) 
ax.plot(1/2, -45/8, 'o', color = 'brown', markersize=6) 

ax.set_xlim(x.min(), x.max()) 
ax.set_ylim(-10, 10) 
ax.axhline(0, color='gray', lw=0.6) 
ax.axvline(0, color='gray', lw=0.6) 
ax.set_xlabel('x')
ax.set_ylabel('y') 
ax.legend(loc='best', fontsize=9) 
ax.grid(alpha=0.3)

fig.savefig('secant-tangent-python.pdf')
plt.close()
\end{python}

% Display the figure.
\begin{figure}[ht]
	\centering
	\includegraphics[width=\linewidth, alt={The graph of $f(x)$ with its tangent line and several secant lines.}]{secant-tangent-python.pdf}
	\caption{The graph of $f(x)$ with its tangent line and several secant lines. Generated by Python embedded in the \LaTeX\ document.}\label{fig-sec-tan-2}
\end{figure}

\begin{example}
	Below is a table illustrating how the secant line slopes change.  See Table~\ref{tab-sec-slope}.
	
\begin{table}[h]
	\centering
	\caption{Slopes of three different secant lines.}\label{tab-sec-slope}
	\tagpdfsetup{table/header-rows={1}}  % This identifies the header row as the first row
	\begin{tabular}{c|c}
		\hline
		$x$ & $m_{sec} = \dfrac{f(x)-f(a)}{x-a}$ \\\hline
		$-\dfrac{3}{2}$ & $-\dfrac{13}{4}$ \\
		$\dfrac{1}{2}$ & $\dfrac{5}{4}$ \\
		$\dfrac{1}{2}$ & $\dfrac{17}{4}$ 
	\end{tabular}
\end{table}
\end{example}

Maybe we need to indicate that we have a header row for a data table without a caption.

\tagpdfsetup{table/header-rows={1}}  % This identifies the header row as the first row
\begin{tabular}{|l|c|c|}
	\hline
	Fruit & Calories & Fiber (g) \\
	\hline
	Apple  & 52       & 2.4 \\
	Banana & 89       & 2.6 \\
	Orange & 47       & 2.4 \\
	\hline
\end{tabular}

Maybe you need to have two header rows indicated.  If you need a caption then you can utilize \verb+\begin{table}+ and \verb+\end{table}+ with all of the associated things between.

\begin{center}
	\tagpdfsetup{table/header-rows={1,2}} % This identifies the header rows as the first two rows
	\begin{tabular}{l|r}
		\multicolumn{2}{c}{Example}\\
		Name & Value\\
		This & 11 \\
		That & 2
	\end{tabular}
\end{center}

What about including columns as well?

\begin{center}
	% Define the structural header matrix
	\tagpdfsetup{
		table/header-rows={1,2},       % Rows 1 & 2 contain structural time headers
		table/header-columns={1,2}     % Columns 1 & 2 contain product categorization headers
	}
	
	\begin{tabular}{ll|cc}
		% --- ROW 1 (Header Row) ---
		% Cells 1 & 2 are empty corner headers. Cells 3 & 4 span under a 2026 grouping.
		& & \multicolumn{2}{c}{\textbf{Fiscal Year 2026}} \\ 
		
		% --- ROW 2 (Header Row) ---
		% Cells 1 & 2 finish the corner. Cells 3 & 4 provide the sub-headers.
		\textbf{Division} & \textbf{Product} & \textbf{Q1 Target} & \textbf{Q2 Target} \\ \hline
		
		% --- ROW 3 (Data Row) ---
		% Columns 1 & 2 are treated as row headers (<TH>). Columns 3 & 4 are data (<TD>).
		Software & Cloud SaaS & \$50k & \$65k \\ 
		
		% --- ROW 4 (Data Row) ---
		Software & On-Premise & \$20k & \$15k \\ \hline
		
		% --- ROW 5 (Data Row) ---
		Hardware & Servers    & \$80k & \$95k 
	\end{tabular}
\end{center}

\section{Derivatives}

\begin{definition}
	The \textbf{derivative at the point $x = a$} is found by computing $f'(a) = \lim_{x \to a} \dfrac{f(x) - f(a)}{x - a}$.
\end{definition}

\section{Using TikZ}

Often people utilize TikZ to generate figures. See Figure~\ref{fig-myTikZ}.

\begin{figure}[h]
	\centering
	\begin{tikzpicture}[
		roundnode/.style={circle, draw=green!60, fill=green!5, very thick, minimum size=7mm},
		squarednode/.style={rectangle, draw=red!60, fill=red!5, very thick, minimum size=5mm},
		]{alt=TikZ figure.}
		%Nodes
		\node[squarednode]      (maintopic)                              {2};
		\node[roundnode]        (uppercircle)       [above=of maintopic] {1};
		\node[squarednode]      (rightsquare)       [right=of maintopic] {3};
		\node[roundnode]        (lowercircle)       [below=of maintopic] {4};
		
		%Lines
		\draw[->] (uppercircle.south) -- (maintopic.north);
		\draw[->] (maintopic.east) -- (rightsquare.west);
		\draw[->] (rightsquare.south) .. controls +(down:7mm) and +(right:7mm) .. (lowercircle.east);
	\end{tikzpicture}
	\caption{My nice TikZ figure.}\label{fig-myTikZ}
\end{figure}

\end{document}