% \iffalse meta-comment % % Copyright (C) 2024 by Agni Datta % % This file may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3c of this license % or (at your option) any later version. The latest version of this % license is in: % % http://www.latex-project.org/lppl.txt % % and version 1.3c or later is part of all distributions of LaTeX % version 2008/05/04 or later. % % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Agni Datta. % % This work consists of the files csthm.dtx and csthm.ins % and the derived file csthm.sty. % % \fi % % \iffalse %<*driver> \ProvidesFile{csthm.dtx} % %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{csthm} %<*package> [2024/08/31 v1.2 Theorem Environments for Computer Science] % % %<*driver> \documentclass{ltxdoc} \usepackage{csthm} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{csthm.dtx} \PrintChanges \PrintIndex \end{document} % % \fi % % \CheckSum{0} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % % \changes{v1.0}{2024/08/31}{Initial version} % \changes{v1.1}{2024/08/31}{Added cleveref support} % \changes{v1.2}{2024/08/31}{Improved documentation and code structure} % % \DoNotIndex{\newcommand,\newenvironment} % % \providecommand*{\url}{\texttt} % \GetFileInfo{csthm.dtx} % \title{The \textsf{csthm} package} % \author{Agni Datta \\ \url{agnidatta.org@gmail.com}} % \date{\filedate} % % \maketitle % % \section{Introduction} % % This package provides customized theorem-like environments specifically designed for computer science documents. It offers a set of pre-defined theorem styles and environments to streamline the creation of theorems, definitions, remarks, and other common structures in computer science papers and documents. % % \section{Usage} % % Load the package with: % \begin{verbatim} % \usepackage{csthm} % \end{verbatim} % % To use the package with cleveref support: % \begin{verbatim} % \usepackage[cleveref]{csthm} % \end{verbatim} % % \section{Implementation} % % \begin{macrocode} %<*package> % Package options \newif\if@csthm@loadcleveref \DeclareOption{cleveref}{\@csthm@loadclevereftrue} \ProcessOptions\relax % Required packages \RequirePackage{amsmath} \RequirePackage{amssymb} \RequirePackage{amsthm} \RequirePackage{enumitem} \RequirePackage{thmtools} % Conditionally load cleveref if the option is set and hyperref is loaded \if@csthm@loadcleveref \AtBeginDocument{% \@ifpackageloaded{hyperref}{% \RequirePackage{cleveref} }{% \PackageWarning{csthm}{The 'cleveref' option was set, but 'hyperref' is not loaded. Skipping 'cleveref' loading.} }% } \fi % Define theorem styles \declaretheoremstyle[ spaceabove=\topsep, spacebelow=\topsep, headfont=\scshape, notefont=\scshape, bodyfont=\normalfont, postheadspace=5pt, numberwithin=section, qed=$\scriptstyle\star$, headpunct={.} ]{thmstyle} \declaretheoremstyle[ spaceabove=\topsep, spacebelow=\topsep, headfont=\bfseries, notefont=\bfseries, bodyfont=\normalfont, postheadspace=5pt, numberwithin=section, qed=$\scriptstyle\maltese$, headpunct={.} ]{defstyle} \declaretheoremstyle[ spaceabove=\topsep, spacebelow=\topsep, headfont=\itshape, notefont=\itshape, bodyfont=\normalfont, postheadspace=5pt, numberwithin=section, qed=$\scriptstyle\maltese$, headpunct={.} ]{remarkstyle} \declaretheoremstyle[ spaceabove=\topsep, spacebelow=\topsep, headfont=\sffamily\scshape, notefont=\sffamily\scshape, bodyfont=\normalfont\sffamily, postheadspace=5pt, numberwithin=section, qed=$\scriptstyle\maltese$, headpunct={.} ]{hltstyle} % Define theorem environments \declaretheorem[style=thmstyle,name=Theorem]{theorem} \declaretheorem[style=defstyle,sibling=theorem]{fact} \declaretheorem[style=thmstyle,sibling=theorem]{assumption} \declaretheorem[style=thmstyle,sibling=theorem]{claim} \declaretheorem[style=thmstyle,sibling=theorem]{conjecture} \declaretheorem[style=thmstyle,sibling=theorem]{corollary} \declaretheorem[style=thmstyle,sibling=theorem]{lemma} \declaretheorem[style=thmstyle,sibling=theorem]{property} \declaretheorem[style=thmstyle,sibling=theorem]{proposition} % Define definition environments \declaretheorem[style=defstyle,sibling=theorem]{definition} \declaretheorem[style=defstyle,sibling=theorem]{example} \declaretheorem[style=defstyle,sibling=theorem]{exercise} \declaretheorem[style=defstyle,sibling=theorem]{problem} \declaretheorem[style=defstyle,sibling=theorem]{question} % Define remark environments \declaretheorem[style=remarkstyle,sibling=theorem]{note} \declaretheorem[style=remarkstyle,sibling=theorem]{remark} \declaretheorem[style=remarkstyle,sibling=theorem]{solution} % Define highlight environments \declaretheorem[style=hltstyle,name=Important]{important} \declaretheorem[style=hltstyle]{highlight} \declaretheorem[style=hltstyle]{keypoint} % Define case environment \newlist{caseList}{enumerate}{1} \setlist[caseList]{label=\textbf{Case~\arabic*:},leftmargin=*} \NewDocumentEnvironment{case}{O{}}{% \begin{caseList}[#1]% }{% \end{caseList}% } % Define axiom environment \newlist{axiomList}{enumerate}{1} \setlist[axiomList]{label=\textbf{Axiom~\Alph*:}, leftmargin=*} \NewDocumentEnvironment{axiom}{O{}}{% \begin{axiomList}[#1]% }{% \end{axiomList}% } % Custom QED symbol \renewcommand\qedsymbol{$\scriptstyle\blacksquare$} % Define accent color (customizable by the user) \providecommand{\accentcolor}{black} % Package documentation commands \providecommand{\csthmpkg}{\textsf{csthm}} \providecommand{\email}[1]{\href{mailto:#1}{\texttt{#1}}} % User-level commands for customization \newcommand{\setaccentcolor}[1]{\renewcommand{\accentcolor}{#1}} % % \end{macrocode} % % \Finale \endinput