diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 9fc233e..08fb926 100644 Binary files a/docs/build/doctrees/environment.pickle and b/docs/build/doctrees/environment.pickle differ diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree index 27a0325..059e55b 100644 Binary files a/docs/build/doctrees/index.doctree and b/docs/build/doctrees/index.doctree differ diff --git a/docs/build/doctrees/introduction.doctree b/docs/build/doctrees/introduction.doctree index b5d84a6..6c0e84e 100644 Binary files a/docs/build/doctrees/introduction.doctree and b/docs/build/doctrees/introduction.doctree differ diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo index 539730c..fcd51f2 100644 --- a/docs/build/html/.buildinfo +++ b/docs/build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 709d7b3d5a22a3fd769256924cb676fa +config: eb97ac1fe9d57cc51fff73ec7ec39953 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/.buildinfo.bak b/docs/build/html/.buildinfo.bak new file mode 100644 index 0000000..539730c --- /dev/null +++ b/docs/build/html/.buildinfo.bak @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 709d7b3d5a22a3fd769256924cb676fa +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/_sources/index.rst.txt b/docs/build/html/_sources/index.rst.txt index fdd056a..ce4e516 100644 --- a/docs/build/html/_sources/index.rst.txt +++ b/docs/build/html/_sources/index.rst.txt @@ -2,9 +2,9 @@ sphinx-quickstart on Fri Jun 20 18:50:25 2025. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. - -Canadian Payroll Administration documentation -============================================= +############################################## +Canadian Payroll Administration +############################################## .. program-output:: python --version diff --git a/docs/build/html/_sources/introduction.rst.txt b/docs/build/html/_sources/introduction.rst.txt index 6c26480..e959809 100644 --- a/docs/build/html/_sources/introduction.rst.txt +++ b/docs/build/html/_sources/introduction.rst.txt @@ -2,17 +2,37 @@ INTRODUCTION ############ -In this course you'll learn about the various government agencies and legislation that impact payroll -from both the employer's and the employee's perspective. Moreover, you'll learn the information -and processes necessary to produce payroll at the employee level. +Through this material, students will gain a comprehensive understanding of core payroll principles and practices. They will explore legislative compliance requirements and the role of key regulatory bodies that govern payroll operations in Canada. -The objective of the payroll function is to pay employees **accurately and on time** while remaining -compliant with legislation across a full annual payroll cycle. In this course, you'll cover: +Students will learn how to: +- Accurately calculate net pay for salaried, hourly, commissioned, and contract employees. +- Identify and meet payroll-related obligations for businesses. +- Navigate the administrative aspects of human resource management that intersect with payroll responsibilities. +- Apply payroll procedures using computerized payroll software through practical, hands-on exercises. - Payroll's responsibilities from hiring through to termination. - Payroll compliance legislation in practical scenarios. - Individual pay calculation process. +Learning Outcomes +------------------ + +The material of this study guide aim to make students to be be able to: + +- Calculate regular individual pay +- Calculate non-regular individual pay +- Calculate termination payments +- Complete a Record of Employment (ROE) +- Apply federal and provincial legislation to payroll, including: + - The Canada Pension Plan Act + - The Employment Insurance Act + - The Income Tax Act + - Employment Standards legislation + - Workers' Compensation Acts + - Québec-specific legislation + + +In other words, the material covers the foundational knowledge and technical skills needed to confidently perform payroll tasks in a variety of employment settings. *********************** Payroll Legal Framework diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js index b29af97..5cc95f4 100644 --- a/docs/build/html/_static/documentation_options.js +++ b/docs/build/html/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: 'HR', + VERSION: 'Fall 2025', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/build/html/errata.html b/docs/build/html/errata.html index 226285b..0e6d6ea 100644 --- a/docs/build/html/errata.html +++ b/docs/build/html/errata.html @@ -5,11 +5,11 @@ - 7. Errors and Errata — Canadian Payroll Administration HR documentation + 7. Errors and Errata — Payroll Administration Fall 2025 documentation - + @@ -26,7 +26,7 @@
  • previous |
  • - + @@ -82,7 +82,7 @@
  • previous |
  • - + diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index 3ed2c48..a226fa1 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -4,11 +4,11 @@ - Index — Canadian Payroll Administration HR documentation + Index — Payroll Administration Fall 2025 documentation - + @@ -21,7 +21,7 @@
  • index
  • - + @@ -65,7 +65,7 @@
  • index
  • - + diff --git a/docs/build/html/index.html b/docs/build/html/index.html index aae1264..32c3a18 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -5,11 +5,11 @@ - Canadian Payroll Administration documentation — Canadian Payroll Administration HR documentation + Canadian Payroll Administration — Payroll Administration Fall 2025 documentation - + @@ -26,8 +26,8 @@
  • next |
  • - - + + @@ -36,8 +36,8 @@
    -
    -

    Canadian Payroll Administration documentation

    +
    +

    Canadian Payroll Administration

    Python 3.12.3
     
    @@ -48,7 +48,7 @@

    Table of Contents:

    -
    -

    Glossary

    +

    Glossary

    +
    @@ -96,8 +96,10 @@

    Table of Contents

    @@ -136,8 +138,8 @@
  • next |
  • - - + +
    @@ -276,7 +276,7 @@
  • previous |
  • - + diff --git a/docs/build/html/payroll_accounting.html b/docs/build/html/payroll_accounting.html index 63ed037..b62d608 100644 --- a/docs/build/html/payroll_accounting.html +++ b/docs/build/html/payroll_accounting.html @@ -5,11 +5,11 @@ - 2. Payroll Accounting — Canadian Payroll Administration HR documentation + 2. Payroll Accounting — Payroll Administration Fall 2025 documentation - + @@ -30,7 +30,7 @@
  • previous |
  • - + @@ -136,7 +136,7 @@ These entries are essential for maintaining accurate financial records and ensur
  • previous |
  • - + diff --git a/docs/build/html/rates_2025.html b/docs/build/html/rates_2025.html index f3f13b4..8eff325 100644 --- a/docs/build/html/rates_2025.html +++ b/docs/build/html/rates_2025.html @@ -5,11 +5,11 @@ - 5. RATES FOR 2025 — Canadian Payroll Administration HR documentation + 5. RATES FOR 2025 — Payroll Administration Fall 2025 documentation - + @@ -30,7 +30,7 @@
  • previous |
  • - + @@ -218,7 +218,7 @@
  • previous |
  • - + diff --git a/docs/build/html/references.html b/docs/build/html/references.html index b47c8a6..c77dadb 100644 --- a/docs/build/html/references.html +++ b/docs/build/html/references.html @@ -5,11 +5,11 @@ - 6. REFERENCES — Canadian Payroll Administration HR documentation + 6. REFERENCES — Payroll Administration Fall 2025 documentation - + @@ -30,7 +30,7 @@
  • previous |
  • - + @@ -94,7 +94,7 @@
  • previous |
  • - + diff --git a/docs/build/html/review_questions.html b/docs/build/html/review_questions.html index c7d560c..0834900 100644 --- a/docs/build/html/review_questions.html +++ b/docs/build/html/review_questions.html @@ -5,11 +5,11 @@ - 3. REVIEW QUESTIONS — Canadian Payroll Administration HR documentation + 3. REVIEW QUESTIONS — Payroll Administration Fall 2025 documentation - + @@ -30,7 +30,7 @@
  • previous |
  • - + @@ -112,7 +112,7 @@ c. Choice C

  • previous |
  • - + diff --git a/docs/build/html/search.html b/docs/build/html/search.html index 11bdef5..f656a6b 100644 --- a/docs/build/html/search.html +++ b/docs/build/html/search.html @@ -4,12 +4,12 @@ - Search — Canadian Payroll Administration HR documentation + Search — Payroll Administration Fall 2025 documentation - + @@ -28,7 +28,7 @@
  • index
  • - + @@ -82,7 +82,7 @@
  • index
  • - + diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 4492a10..58d6daa 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"Accounting Recap":[[4,"accounting-recap"]],"Authorization for Hiring":[[3,"authorization-for-hiring"]],"Benefit Enrollment Forms":[[3,"benefit-enrollment-forms"]],"CANADA / QUEBEC PENSION PLAN (CPP / QPP)":[[5,"canada-quebec-pension-plan-cpp-qpp"],[5,"id1"]],"CPP2 CONTRIBUTION RATES MAXIMUMS":[[5,"cpp2-contribution-rates-maximums"]],"CPP2 Contribution Rates Maximums":[[5,"id2"]],"Canadian Payroll Administration documentation":[[1,null]],"Confidentiality Agreement":[[3,"confidentiality-agreement"]],"Content Review Highlights":[[3,"content-review-highlights"]],"Employment Standards Requirements":[[3,"employment-standards-requirements"]],"Errors and Errata":[[0,null]],"Example Evaluations":[[3,"example-evaluations"]],"Glossary":[[1,"glossary"]],"INTRODUCTION":[[2,null]],"Internal Forms":[[3,"internal-forms"]],"Journal Entries":[[4,"journal-entries"],[4,"id1"]],"New Employee Information":[[7,"new-employee-information"]],"OBNOARDING EMPLOYEE":[[3,null]],"Payroll Accounting":[[4,null]],"Payroll Legal Framework":[[2,"payroll-legal-framework"]],"RATES FOR 2025":[[5,null]],"REFERENCES":[[6,null]],"REVIEW QUESTIONS":[[7,null]],"References":[[5,"references"]],"Required Federal and Provincial/Territorial Forms":[[3,"required-federal-and-provincial-territorial-forms"]],"Review Questions (Sample)":[[3,"review-questions-sample"]],"Table of Contents:":[[1,null]],"Tax Credits (TD1)":[[3,"tax-credits-td1"]],"Tax Credits (TP-1015.3-V \u2013 Qu\u00e9bec)":[[3,"tax-credits-tp-1015-3-v-quebec"]],"Union Membership":[[3,"union-membership"]]},"docnames":["errata","index","introduction","onboarding_employee","payroll_accounting","rates_2025","references","review_questions"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["errata.rst","index.rst","introduction.rst","onboarding_employee.rst","payroll_accounting.rst","rates_2025.rst","references.rst","review_questions.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"":[2,3,4],"00":4,"04":5,"1":4,"10":4,"1016":3,"12":[1,5],"134":5,"145":5,"18":3,"200":5,"2025":1,"24":5,"26":5,"291":5,"3":[1,5],"300":5,"31":5,"396":5,"4":5,"5":[1,5],"500":[4,5],"52":5,"53":5,"61":5,"66":5,"67":5,"71":5,"792":5,"800":5,"81":5,"83":5,"9":3,"95":5,"A":[3,7],"FOR":1,"For":3,"In":2,"It":4,"The":[2,4],"These":[4,7],"ab":3,"about":2,"accord":2,"account":1,"accur":[2,3,4],"accuraci":4,"across":[2,4],"addit":[3,5],"adher":2,"adjust":3,"administr":[2,4],"ag":3,"agenc":2,"alberta":3,"all":[2,3,4],"alon":3,"also":3,"alwai":3,"ammount":5,"amount":3,"an":3,"analysi":4,"annual":[2,5],"appear":3,"appli":3,"applic":3,"appropri":3,"ar":[2,3,4,7],"area":3,"aspect":4,"asset":4,"associ":3,"autom":4,"b":7,"base":3,"basic":[3,5],"benefit":[2,4],"between":3,"bi":5,"bind":3,"birth":3,"both":2,"built":2,"c":7,"calcul":[2,3],"can":3,"canada":[1,2,3],"canadian":[2,4],"career":3,"caregiv":3,"check":3,"children":3,"choic":7,"claim":3,"collect":3,"commenc":3,"common":3,"compani":3,"compens":[2,4],"complet":3,"complianc":[2,4],"compliant":2,"compon":4,"concept":7,"consent":3,"contain":7,"contribut":1,"contributori":5,"correct":[3,7],"cost":4,"cours":[2,7],"cover":[2,3,7],"coverag":3,"cpp":1,"cpp2":1,"cr":4,"cra":3,"credit":4,"critic":4,"cycl":2,"data":3,"date":3,"debit":4,"deduct":[2,3,4],"defin":3,"dental":3,"depart":3,"depend":3,"deposit":3,"descript":5,"design":[2,4,7],"detail":3,"determin":3,"differ":[2,3],"direct":3,"disabl":3,"distribut":4,"do":3,"document":[3,4],"doe":3,"dr":4,"due":3,"e":3,"each":[3,4],"earn":[3,5],"elig":3,"emploi":5,"employ":[1,2,5],"employe":[1,2,4,5],"ensur":[2,4],"entri":1,"equat":4,"equiti":4,"equival":3,"errata":1,"error":[1,4],"essenti":[3,4],"evalu":1,"exampl":1,"exempt":[3,5],"expens":4,"expiri":3,"extens":3,"extra":3,"fals":3,"feder":[1,2],"file":3,"fill":3,"financi":4,"follow":7,"form":1,"framework":1,"from":[2,3],"full":2,"function":[2,3],"furthermor":4,"g":3,"gener":4,"gloria":3,"govern":[2,3],"gross":3,"group":3,"handl":2,"have":3,"health":3,"help":7,"highlight":1,"hire":2,"hour":3,"hous":3,"i":[2,3,4,7],"impact":[2,4],"impair":3,"import":3,"includ":[2,3,4],"incom":3,"index":1,"indic":3,"individu":2,"infirm":3,"info":3,"inform":[1,2,3],"ingrid":3,"instruct":3,"insur":3,"intern":1,"introduct":1,"involv":4,"item":3,"johansson":3,"journal":1,"keep":3,"kei":4,"know":4,"laframbois":3,"law":[2,3],"lead":4,"learn":[2,7],"legal":[1,3],"legisl":[2,3],"letter":3,"level":2,"liabil":[3,4],"live":3,"ll":2,"luc":3,"made":3,"mai":3,"maimum":5,"maintain":4,"manag":4,"materi":7,"maximum":1,"mental":3,"meyer":3,"minimum":3,"monthli":5,"more":3,"moreov":2,"must":3,"name":3,"necessari":2,"need":3,"net":3,"new":[1,3],"number":3,"object":2,"obnoard":1,"obtain":3,"offer":3,"one":[3,7],"onli":3,"organ":4,"other":[3,4],"out":3,"outlin":3,"overclaim":3,"packag":3,"pai":[2,3],"parent":3,"part":4,"partner":3,"payabl":4,"payment":3,"payrol":3,"penalti":3,"pension":[1,3],"period":3,"permit":3,"person":3,"perspect":2,"physic":3,"plan":[1,3],"practic":2,"premium":3,"probat":3,"process":[2,4],"produc":2,"proprietari":3,"protect":3,"provinc":3,"provinci":[1,2],"purpos":3,"python":1,"qpp":1,"quebec":1,"question":1,"rate":[1,3],"record":[2,4],"reduc":4,"reduct":3,"refer":1,"reflect":4,"regard":2,"regul":[2,4],"reinforc":7,"relat":4,"remain":2,"remot":3,"report":[2,4],"request":3,"requir":[1,2],"resid":3,"respons":[2,3],"retir":3,"revenu":4,"review":1,"risk":4,"rq":3,"run":4,"salari":3,"sampl":1,"scenario":2,"school":3,"second":5,"section":7,"self":5,"semi":5,"send":3,"sensit":3,"seri":4,"set":3,"sigma":4,"sign":3,"signatur":3,"signifi":3,"sin":3,"singl":3,"social":3,"sourc":3,"spous":3,"standard":[1,4],"start":3,"statement":[3,4],"still":3,"support":3,"system":[2,4],"systemat":4,"t1213":3,"tax":[2,4],"termin":2,"territori":1,"test":7,"text":4,"than":3,"thei":4,"thi":[2,3,7],"three":3,"through":2,"time":2,"timefram":3,"total":[3,4],"transact":[2,4],"transfer":3,"true":[3,4],"tuition":3,"two":3,"type":[2,3],"typic":3,"u":4,"understand":7,"us":3,"valid":3,"variou":[2,4],"verifi":3,"via":3,"wage":[3,4],"we":4,"weekli":5,"well":3,"what":3,"which":[4,7],"while":2,"withhold":[3,4],"without":3,"work":3,"workplac":3,"yearli":5,"you":2,"your":7},"titles":["7. Errors and Errata","Canadian Payroll Administration documentation","1. INTRODUCTION","4. OBNOARDING EMPLOYEE","2. Payroll Accounting","5. RATES FOR 2025","6. REFERENCES","3. REVIEW QUESTIONS"],"titleterms":{"1015":3,"2025":5,"3":3,"FOR":5,"account":4,"administr":1,"agreement":3,"author":3,"benefit":3,"canada":5,"canadian":1,"confidenti":3,"content":[1,3],"contribut":5,"cpp":5,"cpp2":5,"credit":3,"document":1,"employ":3,"employe":[3,7],"enrol":3,"entri":4,"errata":0,"error":0,"evalu":3,"exampl":3,"feder":3,"form":3,"framework":2,"glossari":1,"highlight":3,"hire":3,"inform":7,"intern":3,"introduct":2,"journal":4,"legal":2,"maximum":5,"membership":3,"new":7,"obnoard":3,"payrol":[1,2,4],"pension":5,"plan":5,"provinci":3,"qpp":5,"quebec":5,"question":[3,7],"qu\u00e9bec":3,"rate":5,"recap":4,"refer":[5,6],"requir":3,"review":[3,7],"sampl":3,"standard":3,"tabl":1,"tax":3,"td1":3,"territori":3,"tp":3,"union":3,"v":3}}) \ No newline at end of file +Search.setIndex({"alltitles":{"Accounting Recap":[[4,"accounting-recap"]],"Authorization for Hiring":[[3,"authorization-for-hiring"]],"Benefit Enrollment Forms":[[3,"benefit-enrollment-forms"]],"CANADA / QUEBEC PENSION PLAN (CPP / QPP)":[[5,"canada-quebec-pension-plan-cpp-qpp"],[5,"id1"]],"CPP2 CONTRIBUTION RATES MAXIMUMS":[[5,"cpp2-contribution-rates-maximums"]],"CPP2 Contribution Rates Maximums":[[5,"id2"]],"Canadian Payroll Administration":[[1,null]],"Confidentiality Agreement":[[3,"confidentiality-agreement"]],"Content Review Highlights":[[3,"content-review-highlights"]],"Employment Standards Requirements":[[3,"employment-standards-requirements"]],"Errors and Errata":[[0,null]],"Example Evaluations":[[3,"example-evaluations"]],"Glossary":[[1,"glossary"]],"INTRODUCTION":[[2,null]],"Internal Forms":[[3,"internal-forms"]],"Journal Entries":[[4,"journal-entries"],[4,"id1"]],"Learning Outcomes":[[2,"learning-outcomes"]],"New Employee Information":[[7,"new-employee-information"]],"OBNOARDING EMPLOYEE":[[3,null]],"Payroll Accounting":[[4,null]],"Payroll Legal Framework":[[2,"payroll-legal-framework"]],"RATES FOR 2025":[[5,null]],"REFERENCES":[[6,null]],"REVIEW QUESTIONS":[[7,null]],"References":[[5,"references"]],"Required Federal and Provincial/Territorial Forms":[[3,"required-federal-and-provincial-territorial-forms"]],"Review Questions (Sample)":[[3,"review-questions-sample"]],"Table of Contents:":[[1,null]],"Tax Credits (TD1)":[[3,"tax-credits-td1"]],"Tax Credits (TP-1015.3-V \u2013 Qu\u00e9bec)":[[3,"tax-credits-tp-1015-3-v-quebec"]],"Union Membership":[[3,"union-membership"]]},"docnames":["errata","index","introduction","onboarding_employee","payroll_accounting","rates_2025","references","review_questions"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["errata.rst","index.rst","introduction.rst","onboarding_employee.rst","payroll_accounting.rst","rates_2025.rst","references.rst","review_questions.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"":[2,3,4],"00":4,"04":5,"1":4,"10":4,"1016":3,"12":[1,5],"134":5,"145":5,"18":3,"200":5,"2025":1,"24":5,"26":5,"291":5,"3":[1,5],"300":5,"31":5,"396":5,"4":5,"5":[1,5],"500":[4,5],"52":5,"53":5,"61":5,"66":5,"67":5,"71":5,"792":5,"800":5,"81":5,"83":5,"9":3,"95":5,"A":[3,7],"FOR":1,"For":3,"In":2,"It":4,"The":[2,4],"These":[4,7],"ab":3,"abl":2,"about":[],"accord":2,"account":1,"accur":[2,3,4],"accuraci":4,"across":4,"act":2,"addit":[3,5],"adher":2,"adjust":3,"administr":[2,4],"ag":3,"agenc":[],"aim":2,"alberta":3,"all":[2,3,4],"alon":3,"also":3,"alwai":3,"ammount":5,"amount":3,"an":3,"analysi":4,"annual":5,"appear":3,"appli":[2,3],"applic":3,"appropri":3,"ar":[2,3,4,7],"area":3,"aspect":[2,4],"asset":4,"associ":3,"autom":4,"b":7,"base":3,"basic":[3,5],"benefit":[2,4],"between":3,"bi":5,"bind":3,"birth":3,"bodi":2,"both":[],"built":2,"busi":2,"c":7,"calcul":[2,3],"can":3,"canada":[1,2,3],"canadian":[2,4],"career":3,"caregiv":3,"check":3,"children":3,"choic":7,"claim":3,"collect":3,"commenc":3,"commiss":2,"common":3,"compani":3,"compens":[2,4],"complet":[2,3],"complianc":[2,4],"compliant":[],"compon":4,"comprehens":2,"computer":2,"concept":7,"confid":2,"consent":3,"contain":7,"contract":2,"contribut":1,"contributori":5,"core":2,"correct":[3,7],"cost":4,"cours":7,"cover":[2,3,7],"coverag":3,"cpp":1,"cpp2":1,"cr":4,"cra":3,"credit":4,"critic":4,"cycl":[],"data":3,"date":3,"debit":4,"deduct":[2,3,4],"defin":3,"dental":3,"depart":3,"depend":3,"deposit":3,"descript":5,"design":[2,4,7],"detail":3,"determin":3,"differ":[2,3],"direct":3,"disabl":3,"distribut":4,"do":3,"document":[3,4],"doe":3,"dr":4,"due":3,"e":3,"each":[3,4],"earn":[3,5],"elig":3,"emploi":5,"employ":[1,2,5],"employe":[1,2,4,5],"ensur":[2,4],"entri":1,"equat":4,"equiti":4,"equival":3,"errata":1,"error":[1,4],"essenti":[3,4],"evalu":1,"exampl":1,"exempt":[3,5],"exercis":2,"expens":4,"expiri":3,"explor":2,"extens":3,"extra":3,"fals":3,"feder":[1,2],"file":3,"fill":3,"financi":4,"follow":7,"form":1,"foundat":2,"framework":[],"from":[2,3],"full":[],"function":3,"furthermor":4,"g":3,"gain":2,"gener":4,"gloria":3,"govern":[2,3],"gross":3,"group":3,"guid":2,"hand":2,"handl":2,"have":3,"health":3,"help":7,"highlight":1,"hire":2,"hour":3,"hourli":2,"hous":3,"how":2,"human":2,"i":[2,3,4,7],"identifi":2,"impact":4,"impair":3,"import":3,"includ":[2,3,4],"incom":[2,3],"index":1,"indic":3,"individu":2,"infirm":3,"info":3,"inform":[1,3],"ingrid":3,"instruct":3,"insur":[2,3],"intern":1,"intersect":2,"introduct":1,"involv":4,"item":3,"johansson":3,"journal":1,"keep":3,"kei":[2,4],"know":4,"knowledg":2,"laframbois":3,"law":[2,3],"lead":4,"learn":[1,7],"legal":3,"legisl":[2,3],"letter":3,"level":[],"liabil":[3,4],"live":3,"ll":[],"luc":3,"made":3,"mai":3,"maimum":5,"maintain":4,"make":2,"manag":[2,4],"materi":[2,7],"maximum":1,"meet":2,"mental":3,"meyer":3,"minimum":3,"monthli":5,"more":3,"moreov":[],"must":3,"name":3,"navig":2,"necessari":[],"need":[2,3],"net":[2,3],"new":[1,3],"non":2,"number":3,"object":[],"oblig":2,"obnoard":1,"obtain":3,"offer":3,"one":[3,7],"onli":3,"oper":2,"organ":4,"other":[2,3,4],"out":3,"outcom":1,"outlin":3,"overclaim":3,"packag":3,"pai":[2,3],"parent":3,"part":4,"partner":3,"payabl":4,"payment":[2,3],"payrol":3,"penalti":3,"pension":[1,2,3],"perform":2,"period":3,"permit":3,"person":3,"perspect":[],"physic":3,"plan":[1,2,3],"practic":2,"premium":3,"principl":2,"probat":3,"procedur":2,"process":[2,4],"produc":[],"proprietari":3,"protect":3,"provinc":3,"provinci":[1,2],"purpos":3,"python":1,"qpp":1,"quebec":1,"question":1,"qu\u00e9bec":2,"rate":[1,3],"record":[2,4],"reduc":4,"reduct":3,"refer":1,"reflect":4,"regard":2,"regul":[2,4],"regular":2,"regulatori":2,"reinforc":7,"relat":[2,4],"remain":[],"remot":3,"report":[2,4],"request":3,"requir":[1,2],"resid":3,"resourc":2,"respons":[2,3],"retir":3,"revenu":4,"review":1,"risk":4,"roe":2,"role":2,"rq":3,"run":4,"salari":[2,3],"sampl":1,"scenario":2,"school":3,"second":5,"section":7,"self":5,"semi":5,"send":3,"sensit":3,"seri":4,"set":[2,3],"sigma":4,"sign":3,"signatur":3,"signifi":3,"sin":3,"singl":3,"skill":2,"social":3,"softwar":2,"sourc":3,"specif":2,"spous":3,"standard":[1,2,4],"start":3,"statement":[3,4],"still":3,"student":2,"studi":2,"support":3,"system":[2,4],"systemat":4,"t1213":3,"task":2,"tax":[2,4],"technic":2,"termin":2,"territori":1,"test":7,"text":4,"than":3,"thei":[2,4],"thi":[2,3,7],"three":3,"through":2,"time":[],"timefram":3,"total":[3,4],"transact":[2,4],"transfer":3,"true":[3,4],"tuition":3,"two":3,"type":[2,3],"typic":3,"u":4,"understand":[2,7],"us":[2,3],"valid":3,"varieti":2,"variou":[2,4],"verifi":3,"via":3,"wage":[3,4],"we":4,"weekli":5,"well":3,"what":3,"which":[4,7],"while":2,"withhold":[3,4],"without":3,"word":2,"work":3,"worker":2,"workplac":3,"yearli":5,"you":[],"your":7},"titles":["7. Errors and Errata","Canadian Payroll Administration","1. INTRODUCTION","4. OBNOARDING EMPLOYEE","2. Payroll Accounting","5. RATES FOR 2025","6. REFERENCES","3. REVIEW QUESTIONS"],"titleterms":{"1015":3,"2025":5,"3":3,"FOR":5,"account":4,"administr":1,"agreement":3,"author":3,"benefit":3,"canada":5,"canadian":1,"confidenti":3,"content":[1,3],"contribut":5,"cpp":5,"cpp2":5,"credit":3,"document":[],"employ":3,"employe":[3,7],"enrol":3,"entri":4,"errata":0,"error":0,"evalu":3,"exampl":3,"feder":3,"form":3,"framework":2,"glossari":1,"highlight":3,"hire":3,"inform":7,"intern":3,"introduct":2,"journal":4,"learn":2,"legal":2,"maximum":5,"membership":3,"new":7,"obnoard":3,"outcom":2,"payrol":[1,2,4],"pension":5,"plan":5,"provinci":3,"qpp":5,"quebec":5,"question":[3,7],"qu\u00e9bec":3,"rate":5,"recap":4,"refer":[5,6],"requir":3,"review":[3,7],"sampl":3,"standard":3,"tabl":1,"tax":3,"td1":3,"territori":3,"tp":3,"union":3,"v":3}}) \ No newline at end of file diff --git a/docs/build/latex/LICRcyr2utf8.xdy b/docs/build/latex/LICRcyr2utf8.xdy new file mode 100644 index 0000000..a9ca1c8 --- /dev/null +++ b/docs/build/latex/LICRcyr2utf8.xdy @@ -0,0 +1,101 @@ +;; -*- coding: utf-8; mode: Lisp; -*- +;; style file for xindy +;; filename: LICRcyr2utf8.xdy +;; description: style file for xindy which maps back LaTeX Internal +;; Character Representation of Cyrillic to utf-8 +;; usage: for use with pdflatex produced .idx files. +;; Contributed by the Sphinx team, July 2018. +(merge-rule "\IeC {\'\CYRG }" "Ѓ" :string) +(merge-rule "\IeC {\'\CYRK }" "Ќ" :string) +(merge-rule "\IeC {\'\cyrg }" "ѓ" :string) +(merge-rule "\IeC {\'\cyrk }" "ќ" :string) +(merge-rule "\IeC {\CYRA }" "А" :string) +(merge-rule "\IeC {\CYRB }" "Б" :string) +(merge-rule "\IeC {\CYRC }" "Ц" :string) +(merge-rule "\IeC {\CYRCH }" "Ч" :string) +(merge-rule "\IeC {\CYRD }" "Д" :string) +(merge-rule "\IeC {\CYRDJE }" "Ђ" :string) +(merge-rule "\IeC {\CYRDZE }" "Ѕ" :string) +(merge-rule "\IeC {\CYRDZHE }" "Џ" :string) +(merge-rule "\IeC {\CYRE }" "Е" :string) +(merge-rule "\IeC {\CYREREV }" "Э" :string) +(merge-rule "\IeC {\CYRERY }" "Ы" :string) +(merge-rule "\IeC {\CYRF }" "Ф" :string) +(merge-rule "\IeC {\CYRG }" "Г" :string) +(merge-rule "\IeC {\CYRGUP }" "Ґ" :string) +(merge-rule "\IeC {\CYRH }" "Х" :string) +(merge-rule "\IeC {\CYRHRDSN }" "Ъ" :string) +(merge-rule "\IeC {\CYRI }" "И" :string) +(merge-rule "\IeC {\CYRIE }" "Є" :string) +(merge-rule "\IeC {\CYRII }" "І" :string) +(merge-rule "\IeC {\CYRISHRT }" "Й" :string) +(merge-rule "\IeC {\CYRJE }" "Ј" :string) +(merge-rule "\IeC {\CYRK }" "К" :string) +(merge-rule "\IeC {\CYRL }" "Л" :string) +(merge-rule "\IeC {\CYRLJE }" "Љ" :string) +(merge-rule "\IeC {\CYRM }" "М" :string) +(merge-rule "\IeC {\CYRN }" "Н" :string) +(merge-rule "\IeC {\CYRNJE }" "Њ" :string) +(merge-rule "\IeC {\CYRO }" "О" :string) +(merge-rule "\IeC {\CYRP }" "П" :string) +(merge-rule "\IeC {\CYRR }" "Р" :string) +(merge-rule "\IeC {\CYRS }" "С" :string) +(merge-rule "\IeC {\CYRSFTSN }" "Ь" :string) +(merge-rule "\IeC {\CYRSH }" "Ш" :string) +(merge-rule "\IeC {\CYRSHCH }" "Щ" :string) +(merge-rule "\IeC {\CYRT }" "Т" :string) +(merge-rule "\IeC {\CYRTSHE }" "Ћ" :string) +(merge-rule "\IeC {\CYRU }" "У" :string) +(merge-rule "\IeC {\CYRUSHRT }" "Ў" :string) +(merge-rule "\IeC {\CYRV }" "В" :string) +(merge-rule "\IeC {\CYRYA }" "Я" :string) +(merge-rule "\IeC {\CYRYI }" "Ї" :string) +(merge-rule "\IeC {\CYRYO }" "Ё" :string) +(merge-rule "\IeC {\CYRYU }" "Ю" :string) +(merge-rule "\IeC {\CYRZ }" "З" :string) +(merge-rule "\IeC {\CYRZH }" "Ж" :string) +(merge-rule "\IeC {\cyra }" "а" :string) +(merge-rule "\IeC {\cyrb }" "б" :string) +(merge-rule "\IeC {\cyrc }" "ц" :string) +(merge-rule "\IeC {\cyrch }" "ч" :string) +(merge-rule "\IeC {\cyrd }" "д" :string) +(merge-rule "\IeC {\cyrdje }" "ђ" :string) +(merge-rule "\IeC {\cyrdze }" "ѕ" :string) +(merge-rule "\IeC {\cyrdzhe }" "џ" :string) +(merge-rule "\IeC {\cyre }" "е" :string) +(merge-rule "\IeC {\cyrerev }" "э" :string) +(merge-rule "\IeC {\cyrery }" "ы" :string) +(merge-rule "\IeC {\cyrf }" "ф" :string) +(merge-rule "\IeC {\cyrg }" "г" :string) +(merge-rule "\IeC {\cyrgup }" "ґ" :string) +(merge-rule "\IeC {\cyrh }" "х" :string) +(merge-rule "\IeC {\cyrhrdsn }" "ъ" :string) +(merge-rule "\IeC {\cyri }" "и" :string) +(merge-rule "\IeC {\cyrie }" "є" :string) +(merge-rule "\IeC {\cyrii }" "і" :string) +(merge-rule "\IeC {\cyrishrt }" "й" :string) +(merge-rule "\IeC {\cyrje }" "ј" :string) +(merge-rule "\IeC {\cyrk }" "к" :string) +(merge-rule "\IeC {\cyrl }" "л" :string) +(merge-rule "\IeC {\cyrlje }" "љ" :string) +(merge-rule "\IeC {\cyrm }" "м" :string) +(merge-rule "\IeC {\cyrn }" "н" :string) +(merge-rule "\IeC {\cyrnje }" "њ" :string) +(merge-rule "\IeC {\cyro }" "о" :string) +(merge-rule "\IeC {\cyrp }" "п" :string) +(merge-rule "\IeC {\cyrr }" "р" :string) +(merge-rule "\IeC {\cyrs }" "с" :string) +(merge-rule "\IeC {\cyrsftsn }" "ь" :string) +(merge-rule "\IeC {\cyrsh }" "ш" :string) +(merge-rule "\IeC {\cyrshch }" "щ" :string) +(merge-rule "\IeC {\cyrt }" "т" :string) +(merge-rule "\IeC {\cyrtshe }" "ћ" :string) +(merge-rule "\IeC {\cyru }" "у" :string) +(merge-rule "\IeC {\cyrushrt }" "ў" :string) +(merge-rule "\IeC {\cyrv }" "в" :string) +(merge-rule "\IeC {\cyrya }" "я" :string) +(merge-rule "\IeC {\cyryi }" "ї" :string) +(merge-rule "\IeC {\cyryo }" "ё" :string) +(merge-rule "\IeC {\cyryu }" "ю" :string) +(merge-rule "\IeC {\cyrz }" "з" :string) +(merge-rule "\IeC {\cyrzh }" "ж" :string) diff --git a/docs/build/latex/LICRlatin2utf8.xdy b/docs/build/latex/LICRlatin2utf8.xdy new file mode 100644 index 0000000..1d76825 --- /dev/null +++ b/docs/build/latex/LICRlatin2utf8.xdy @@ -0,0 +1,239 @@ +;; style file for xindy +;; filename: LICRlatin2utf8.xdy +;; description: style file for xindy which maps back LaTeX Internal +;; Character Representation of letters (as arising in .idx index +;; file) to UTF-8 encoding for correct sorting by xindy. +;; usage: for use with the pdflatex engine, +;; *not* for use with xelatex or lualatex. +;; +;; This is based upon xindy's distributed file tex/inputenc/utf8.xdy. +;; The modifications include: +;; +;; - Updates for compatibility with current LaTeX macro encoding. +;; +;; - Systematic usage of the \IeC {...} mark-up, because mark-up in +;; tex/inputenc/utf8.xdy was using it on seemingly random basis, and +;; Sphinx coercing of xindy usability for both Latin and Cyrillic scripts +;; with pdflatex requires its systematic presence here. +;; +;; - Support for some extra letters: Ÿ, Ŋ, ŋ, Œ, œ, IJ, ij, ȷ and ẞ. +;; +;; Indeed Sphinx needs to support for pdflatex engine all Unicode letters +;; available in TeX T1 font encoding. The above letters are found in +;; that encoding but not in the Latin1, 2, 3 charsets which are those +;; covered by original tex/inputenc/utf8.xdy. +;; +;; - There is a problem that ȷ is not supported out-of-the box by LaTeX +;; with inputenc, one must add explicitly +;; \DeclareUnicodeCharacter{0237}{\j} +;; to preamble of LaTeX document. However this character is not supported +;; by the TeX "times" font used by default by Sphinx for pdflatex engine. +;; +;; **Update**: since LaTeX 2018/12/01, the \j as well as \SS, \k{} and +;; \.{} need no extra user declaration anymore. +;; +;; - ẞ needs \DeclareUnicodeCharacter{1E9E}{\SS} (but ß needs no extra set-up). +;; +;; - U+02DB (˛) and U+02D9 (˙) are also not supported by inputenc +;; out of the box and require +;; \DeclareUnicodeCharacter{02DB}{\k{}} +;; \DeclareUnicodeCharacter{02D9}{\.{}} +;; to be added to preamble. +;; +;; - U+0127 ħ and U+0126 Ħ are absent from TeX T1+TS1 font encodings. +;; +;; - Characters Ŋ and ŋ are not supported by TeX font "times" used by +;; default by Sphinx for pdflatex engine but they are supported by +;; some TeX fonts, in particular by the default LaTeX font for T1 +;; encoding. +;; +;; - " and ~ must be escaped as ~" and resp. ~~ in xindy merge rules. +;; +;; Contributed by the Sphinx team, July 2018. +;; +;; See sphinx.xdy for superior figures, as they are escaped by LaTeX writer. +(merge-rule "\IeC {\textonesuperior }" "¹" :string) +(merge-rule "\IeC {\texttwosuperior }" "²" :string) +(merge-rule "\IeC {\textthreesuperior }" "³" :string) +(merge-rule "\IeC {\'a}" "á" :string) +(merge-rule "\IeC {\'A}" "Á" :string) +(merge-rule "\IeC {\`a}" "à" :string) +(merge-rule "\IeC {\`A}" "À" :string) +(merge-rule "\IeC {\^a}" "â" :string) +(merge-rule "\IeC {\^A}" "Â" :string) +(merge-rule "\IeC {\~"a}" "ä" :string) +(merge-rule "\IeC {\~"A}" "Ä" :string) +(merge-rule "\IeC {\~~a}" "ã" :string) +(merge-rule "\IeC {\~~A}" "Ã" :string) +(merge-rule "\IeC {\c c}" "ç" :string) +(merge-rule "\IeC {\c C}" "Ç" :string) +(merge-rule "\IeC {\'c}" "ć" :string) +(merge-rule "\IeC {\'C}" "Ć" :string) +(merge-rule "\IeC {\^c}" "ĉ" :string) +(merge-rule "\IeC {\^C}" "Ĉ" :string) +(merge-rule "\IeC {\.c}" "ċ" :string) +(merge-rule "\IeC {\.C}" "Ċ" :string) +(merge-rule "\IeC {\c s}" "ş" :string) +(merge-rule "\IeC {\c S}" "Ş" :string) +(merge-rule "\IeC {\c t}" "ţ" :string) +(merge-rule "\IeC {\c T}" "Ţ" :string) +(merge-rule "\IeC {\-}" "­" :string); soft hyphen +(merge-rule "\IeC {\textdiv }" "÷" :string) +(merge-rule "\IeC {\'e}" "é" :string) +(merge-rule "\IeC {\'E}" "É" :string) +(merge-rule "\IeC {\`e}" "è" :string) +(merge-rule "\IeC {\`E}" "È" :string) +(merge-rule "\IeC {\^e}" "ê" :string) +(merge-rule "\IeC {\^E}" "Ê" :string) +(merge-rule "\IeC {\~"e}" "ë" :string) +(merge-rule "\IeC {\~"E}" "Ë" :string) +(merge-rule "\IeC {\^g}" "ĝ" :string) +(merge-rule "\IeC {\^G}" "Ĝ" :string) +(merge-rule "\IeC {\.g}" "ġ" :string) +(merge-rule "\IeC {\.G}" "Ġ" :string) +(merge-rule "\IeC {\^h}" "ĥ" :string) +(merge-rule "\IeC {\^H}" "Ĥ" :string) +(merge-rule "\IeC {\H o}" "ő" :string) +(merge-rule "\IeC {\H O}" "Ő" :string) +(merge-rule "\IeC {\textacutedbl }" "˝" :string) +(merge-rule "\IeC {\H u}" "ű" :string) +(merge-rule "\IeC {\H U}" "Ű" :string) +(merge-rule "\IeC {\ae }" "æ" :string) +(merge-rule "\IeC {\AE }" "Æ" :string) +(merge-rule "\IeC {\textcopyright }" "©" :string) +(merge-rule "\IeC {\c \ }" "¸" :string) +(merge-rule "\IeC {\dh }" "ð" :string) +(merge-rule "\IeC {\DH }" "Ð" :string) +(merge-rule "\IeC {\dj }" "đ" :string) +(merge-rule "\IeC {\DJ }" "Đ" :string) +(merge-rule "\IeC {\guillemotleft }" "«" :string) +(merge-rule "\IeC {\guillemotright }" "»" :string) +(merge-rule "\IeC {\'\i }" "í" :string) +(merge-rule "\IeC {\`\i }" "ì" :string) +(merge-rule "\IeC {\^\i }" "î" :string) +(merge-rule "\IeC {\~"\i }" "ï" :string) +(merge-rule "\IeC {\i }" "ı" :string) +(merge-rule "\IeC {\^\j }" "ĵ" :string) +(merge-rule "\IeC {\k {}}" "˛" :string) +(merge-rule "\IeC {\l }" "ł" :string) +(merge-rule "\IeC {\L }" "Ł" :string) +(merge-rule "\IeC {\nobreakspace }" " " :string) +(merge-rule "\IeC {\o }" "ø" :string) +(merge-rule "\IeC {\O }" "Ø" :string) +(merge-rule "\IeC {\textsterling }" "£" :string) +(merge-rule "\IeC {\textparagraph }" "¶" :string) +(merge-rule "\IeC {\ss }" "ß" :string) +(merge-rule "\IeC {\textsection }" "§" :string) +(merge-rule "\IeC {\textbrokenbar }" "¦" :string) +(merge-rule "\IeC {\textcent }" "¢" :string) +(merge-rule "\IeC {\textcurrency }" "¤" :string) +(merge-rule "\IeC {\textdegree }" "°" :string) +(merge-rule "\IeC {\textexclamdown }" "¡" :string) +(merge-rule "\IeC {\texthbar }" "ħ" :string) +(merge-rule "\IeC {\textHbar }" "Ħ" :string) +(merge-rule "\IeC {\textonehalf }" "½" :string) +(merge-rule "\IeC {\textonequarter }" "¼" :string) +(merge-rule "\IeC {\textordfeminine }" "ª" :string) +(merge-rule "\IeC {\textordmasculine }" "º" :string) +(merge-rule "\IeC {\textperiodcentered }" "·" :string) +(merge-rule "\IeC {\textquestiondown }" "¿" :string) +(merge-rule "\IeC {\textregistered }" "®" :string) +(merge-rule "\IeC {\textthreequarters }" "¾" :string) +(merge-rule "\IeC {\textyen }" "¥" :string) +(merge-rule "\IeC {\th }" "þ" :string) +(merge-rule "\IeC {\TH }" "Þ" :string) +(merge-rule "\IeC {\'I}" "Í" :string) +(merge-rule "\IeC {\`I}" "Ì" :string) +(merge-rule "\IeC {\^I}" "Î" :string) +(merge-rule "\IeC {\~"I}" "Ï" :string) +(merge-rule "\IeC {\.I}" "İ" :string) +(merge-rule "\IeC {\^J}" "Ĵ" :string) +(merge-rule "\IeC {\k a}" "ą" :string) +(merge-rule "\IeC {\k A}" "Ą" :string) +(merge-rule "\IeC {\k e}" "ę" :string) +(merge-rule "\IeC {\k E}" "Ę" :string) +(merge-rule "\IeC {\'l}" "ĺ" :string) +(merge-rule "\IeC {\'L}" "Ĺ" :string) +(merge-rule "\IeC {\textlnot }" "¬" :string) +(merge-rule "\IeC {\textmu }" "µ" :string) +(merge-rule "\IeC {\'n}" "ń" :string) +(merge-rule "\IeC {\'N}" "Ń" :string) +(merge-rule "\IeC {\~~n}" "ñ" :string) +(merge-rule "\IeC {\~~N}" "Ñ" :string) +(merge-rule "\IeC {\'o}" "ó" :string) +(merge-rule "\IeC {\'O}" "Ó" :string) +(merge-rule "\IeC {\`o}" "ò" :string) +(merge-rule "\IeC {\`O}" "Ò" :string) +(merge-rule "\IeC {\^o}" "ô" :string) +(merge-rule "\IeC {\^O}" "Ô" :string) +(merge-rule "\IeC {\~"o}" "ö" :string) +(merge-rule "\IeC {\~"O}" "Ö" :string) +(merge-rule "\IeC {\~~o}" "õ" :string) +(merge-rule "\IeC {\~~O}" "Õ" :string) +(merge-rule "\IeC {\textpm }" "±" :string) +(merge-rule "\IeC {\r a}" "å" :string) +(merge-rule "\IeC {\r A}" "Å" :string) +(merge-rule "\IeC {\'r}" "ŕ" :string) +(merge-rule "\IeC {\'R}" "Ŕ" :string) +(merge-rule "\IeC {\r u}" "ů" :string) +(merge-rule "\IeC {\r U}" "Ů" :string) +(merge-rule "\IeC {\'s}" "ś" :string) +(merge-rule "\IeC {\'S}" "Ś" :string) +(merge-rule "\IeC {\^s}" "ŝ" :string) +(merge-rule "\IeC {\^S}" "Ŝ" :string) +(merge-rule "\IeC {\textasciidieresis }" "¨" :string) +(merge-rule "\IeC {\textasciimacron }" "¯" :string) +(merge-rule "\IeC {\.{}}" "˙" :string) +(merge-rule "\IeC {\textasciiacute }" "´" :string) +(merge-rule "\IeC {\texttimes }" "×" :string) +(merge-rule "\IeC {\u a}" "ă" :string) +(merge-rule "\IeC {\u A}" "Ă" :string) +(merge-rule "\IeC {\u g}" "ğ" :string) +(merge-rule "\IeC {\u G}" "Ğ" :string) +(merge-rule "\IeC {\textasciibreve }" "˘" :string) +(merge-rule "\IeC {\'u}" "ú" :string) +(merge-rule "\IeC {\'U}" "Ú" :string) +(merge-rule "\IeC {\`u}" "ù" :string) +(merge-rule "\IeC {\`U}" "Ù" :string) +(merge-rule "\IeC {\^u}" "û" :string) +(merge-rule "\IeC {\^U}" "Û" :string) +(merge-rule "\IeC {\~"u}" "ü" :string) +(merge-rule "\IeC {\~"U}" "Ü" :string) +(merge-rule "\IeC {\u u}" "ŭ" :string) +(merge-rule "\IeC {\u U}" "Ŭ" :string) +(merge-rule "\IeC {\v c}" "č" :string) +(merge-rule "\IeC {\v C}" "Č" :string) +(merge-rule "\IeC {\v d}" "ď" :string) +(merge-rule "\IeC {\v D}" "Ď" :string) +(merge-rule "\IeC {\v e}" "ě" :string) +(merge-rule "\IeC {\v E}" "Ě" :string) +(merge-rule "\IeC {\v l}" "ľ" :string) +(merge-rule "\IeC {\v L}" "Ľ" :string) +(merge-rule "\IeC {\v n}" "ň" :string) +(merge-rule "\IeC {\v N}" "Ň" :string) +(merge-rule "\IeC {\v r}" "ř" :string) +(merge-rule "\IeC {\v R}" "Ř" :string) +(merge-rule "\IeC {\v s}" "š" :string) +(merge-rule "\IeC {\v S}" "Š" :string) +(merge-rule "\IeC {\textasciicaron }" "ˇ" :string) +(merge-rule "\IeC {\v t}" "ť" :string) +(merge-rule "\IeC {\v T}" "Ť" :string) +(merge-rule "\IeC {\v z}" "ž" :string) +(merge-rule "\IeC {\v Z}" "Ž" :string) +(merge-rule "\IeC {\'y}" "ý" :string) +(merge-rule "\IeC {\'Y}" "Ý" :string) +(merge-rule "\IeC {\~"y}" "ÿ" :string) +(merge-rule "\IeC {\'z}" "ź" :string) +(merge-rule "\IeC {\'Z}" "Ź" :string) +(merge-rule "\IeC {\.z}" "ż" :string) +(merge-rule "\IeC {\.Z}" "Ż" :string) +;; letters not in Latin1, 2, 3 but available in TeX T1 font encoding +(merge-rule "\IeC {\~"Y}" "Ÿ" :string) +(merge-rule "\IeC {\NG }" "Ŋ" :string) +(merge-rule "\IeC {\ng }" "ŋ" :string) +(merge-rule "\IeC {\OE }" "Œ" :string) +(merge-rule "\IeC {\oe }" "œ" :string) +(merge-rule "\IeC {\IJ }" "IJ" :string) +(merge-rule "\IeC {\ij }" "ij" :string) +(merge-rule "\IeC {\j }" "ȷ" :string) +(merge-rule "\IeC {\SS }" "ẞ" :string) diff --git a/docs/build/latex/LatinRules.xdy b/docs/build/latex/LatinRules.xdy new file mode 100644 index 0000000..b20fbbb --- /dev/null +++ b/docs/build/latex/LatinRules.xdy @@ -0,0 +1,611 @@ +;; Common Lisp style file for xindy +;; filename: LatinRules.xdy +;; +;; Please note that this data file deliberately uses strings +;; with single non-ascii bytes. This is intentional and +;; follows the usage observed in similar xindy support files. +;; +;; It is based upon xindy's files lang/general/utf8.xdy and +;; lang/general/utf8-lang.xdy which implement +;; "a general sorting order for Western European languages". +;; +;; The aim for Sphinx is to be able to index in a Cyrillic document +;; also terms using the Latin alphabets, inclusive of letters +;; with diacritics. To this effect the xindy rules from lang/general +;; got manually re-coded to avoid collisions with the encoding +;; done by xindy for sorting words in Cyrillic languages, which was +;; observed not to use bytes with octal encoding 0o266 or higher. +;; +;; So here we use only 0o266 or higher bytes. +;; (Ŋ, ŋ, IJ, and ij are absent from +;; lang/general/utf8.xdy and not included here.) +;; Contributed by the Sphinx team, 2018. + +(define-letter-group "A" :prefixes ("")) +(define-letter-group "B" :after "A" :prefixes ("")) +(define-letter-group "C" :after "B" :prefixes ("")) +(define-letter-group "D" :after "C" :prefixes ("")) +(define-letter-group "E" :after "D" :prefixes ("")) +(define-letter-group "F" :after "E" :prefixes ("")) +(define-letter-group "G" :after "F" :prefixes ("")) +(define-letter-group "H" :after "G" :prefixes ("")) +(define-letter-group "I" :after "H" :prefixes ("")) +(define-letter-group "J" :after "I" :prefixes ("")) +(define-letter-group "K" :after "J" :prefixes ("")) +(define-letter-group "L" :after "K" :prefixes ("")) +(define-letter-group "M" :after "L" :prefixes ("")) +(define-letter-group "N" :after "M" :prefixes ("")) +(define-letter-group "O" :after "N" :prefixes ("")) +(define-letter-group "P" :after "O" :prefixes ("")) +(define-letter-group "Q" :after "P" :prefixes ("")) +(define-letter-group "R" :after "Q" :prefixes ("")) +(define-letter-group "S" :after "R" :prefixes ("")) +(define-letter-group "T" :after "S" :prefixes ("")) +(define-letter-group "U" :after "T" :prefixes ("")) +(define-letter-group "V" :after "U" :prefixes ("")) +(define-letter-group "W" :after "V" :prefixes ("")) +(define-letter-group "X" :after "W" :prefixes ("")) +(define-letter-group "Y" :after "X" :prefixes ("")) +(define-letter-group "Z" :after "Y" :prefixes ("")) + +(define-rule-set "sphinx-xy-alphabetize" + + :rules (("À" "" :string) + ("Ă" "" :string) + ("â" "" :string) + ("Ä" "" :string) + ("à" "" :string) + ("Å" "" :string) + ("Ã" "" :string) + ("Á" "" :string) + ("á" "" :string) + ("ã" "" :string) + ("Â" "" :string) + ("ă" "" :string) + ("å" "" :string) + ("ą" "" :string) + ("ä" "" :string) + ("Ą" "" :string) + ("æ" "" :string) + ("Æ" "" :string) + ("ć" "" :string) + ("ĉ" "" :string) + ("ç" "" :string) + ("Č" "" :string) + ("č" "" :string) + ("Ĉ" "" :string) + ("Ç" "" :string) + ("Ć" "" :string) + ("ď" "" :string) + ("Đ" "" :string) + ("Ď" "" :string) + ("đ" "" :string) + ("ê" "" :string) + ("Ę" "" :string) + ("Ě" "" :string) + ("ë" "" :string) + ("ě" "" :string) + ("é" "" :string) + ("È" "" :string) + ("Ë" "" :string) + ("É" "" :string) + ("è" "" :string) + ("Ê" "" :string) + ("ę" "" :string) + ("ĝ" "" :string) + ("ğ" "" :string) + ("Ğ" "" :string) + ("Ĝ" "" :string) + ("ĥ" "" :string) + ("Ĥ" "" :string) + ("Ï" "" :string) + ("Í" "" :string) + ("ï" "" :string) + ("Î" "" :string) + ("î" "" :string) + ("ı" "" :string) + ("İ" "" :string) + ("í" "" :string) + ("Ì" "" :string) + ("ì" "" :string) + ("Ĵ" "" :string) + ("ĵ" "" :string) + ("ł" "" :string) + ("Ł" "" :string) + ("ľ" "" :string) + ("Ľ" "" :string) + ("ń" "" :string) + ("Ń" "" :string) + ("ñ" "" :string) + ("ň" "" :string) + ("Ñ" "" :string) + ("Ň" "" :string) + ("Õ" "" :string) + ("Ő" "" :string) + ("ó" "" :string) + ("ö" "" :string) + ("ô" "" :string) + ("ő" "" :string) + ("Ø" "" :string) + ("Ö" "" :string) + ("õ" "" :string) + ("Ô" "" :string) + ("ø" "" :string) + ("Ó" "" :string) + ("Ò" "" :string) + ("ò" "" :string) + ("œ" "ĺ" :string) + ("Œ" "ĺ" :string) + ("Ř" "" :string) + ("ř" "" :string) + ("Ŕ" "" :string) + ("ŕ" "" :string) + ("ŝ" "" :string) + ("Ś" "" :string) + ("ș" "" :string) + ("ş" "" :string) + ("Ŝ" "" :string) + ("ś" "" :string) + ("Ș" "" :string) + ("š" "" :string) + ("Ş" "" :string) + ("Š" "" :string) + ("ß" "" :string) + ("Ț" "" :string) + ("Ť" "" :string) + ("ț" "" :string) + ("ť" "" :string) + ("û" "" :string) + ("ŭ" "" :string) + ("ů" "" :string) + ("ű" "" :string) + ("ù" "" :string) + ("Ŭ" "" :string) + ("Ù" "" :string) + ("Ű" "" :string) + ("Ü" "" :string) + ("Ů" "" :string) + ("ú" "" :string) + ("Ú" "" :string) + ("Û" "" :string) + ("ü" "" :string) + ("ÿ" "" :string) + ("Ý" "" :string) + ("Ÿ" "" :string) + ("ý" "" :string) + ("Ż" "" :string) + ("Ž" "" :string) + ("Ź" "" :string) + ("ž" "" :string) + ("ż" "" :string) + ("ź" "" :string) + ("a" "" :string) + ("A" "" :string) + ("b" "" :string) + ("B" "" :string) + ("c" "" :string) + ("C" "" :string) + ("d" "" :string) + ("D" "" :string) + ("e" "" :string) + ("E" "" :string) + ("F" "" :string) + ("f" "" :string) + ("G" "" :string) + ("g" "" :string) + ("H" "" :string) + ("h" "" :string) + ("i" "" :string) + ("I" "" :string) + ("J" "" :string) + ("j" "" :string) + ("K" "" :string) + ("k" "" :string) + ("L" "" :string) + ("l" "" :string) + ("M" "" :string) + ("m" "" :string) + ("n" "" :string) + ("N" "" :string) + ("O" "" :string) + ("o" "" :string) + ("p" "" :string) + ("P" "" :string) + ("Q" "" :string) + ("q" "" :string) + ("r" "" :string) + ("R" "" :string) + ("S" "" :string) + ("s" "" :string) + ("t" "" :string) + ("T" "" :string) + ("u" "" :string) + ("U" "" :string) + ("v" "" :string) + ("V" "" :string) + ("W" "" :string) + ("w" "" :string) + ("x" "" :string) + ("X" "" :string) + ("Y" "" :string) + ("y" "" :string) + ("z" "" :string) + ("Z" "" :string) + )) + +(define-rule-set "sphinx-xy-resolve-diacritics" + + :rules (("Ĥ" "" :string) + ("ó" "" :string) + ("ľ" "" :string) + ("Ř" "" :string) + ("ĝ" "" :string) + ("ď" "" :string) + ("Ě" "" :string) + ("ĥ" "" :string) + ("Č" "" :string) + ("Ĵ" "" :string) + ("ě" "" :string) + ("ž" "" :string) + ("Ď" "" :string) + ("ř" "" :string) + ("Ž" "" :string) + ("ı" "" :string) + ("Ť" "" :string) + ("á" "" :string) + ("č" "" :string) + ("Á" "" :string) + ("ň" "" :string) + ("Š" "" :string) + ("Ň" "" :string) + ("ĵ" "" :string) + ("ť" "" :string) + ("Ó" "" :string) + ("ý" "" :string) + ("Ĝ" "" :string) + ("Ú" "" :string) + ("Ľ" "" :string) + ("š" "" :string) + ("Ý" "" :string) + ("ú" "" :string) + ("Ś" "" :string) + ("ć" "" :string) + ("Ł" "" :string) + ("ł" "" :string) + ("ń" "" :string) + ("À" "" :string) + ("Ź" "" :string) + ("à" "" :string) + ("Ń" "" :string) + ("Đ" "" :string) + ("ÿ" "" :string) + ("ś" "" :string) + ("Ğ" "" :string) + ("ğ" "" :string) + ("Ù" "" :string) + ("İ" "" :string) + ("đ" "" :string) + ("ù" "" :string) + ("Ț" "" :string) + ("é" "" :string) + ("ŕ" "" :string) + ("Ć" "" :string) + ("ț" "" :string) + ("ò" "" :string) + ("ź" "" :string) + ("Ò" "" :string) + ("Ÿ" "" :string) + ("Ŕ" "" :string) + ("É" "" :string) + ("ĉ" "" :string) + ("ô" "" :string) + ("Í" "" :string) + ("ŝ" "" :string) + ("Ż" "" :string) + ("Ă" "" :string) + ("Ŝ" "" :string) + ("ñ" "" :string) + ("ŭ" "" :string) + ("í" "" :string) + ("È" "" :string) + ("Ô" "" :string) + ("Ŭ" "" :string) + ("ż" "" :string) + ("Ñ" "" :string) + ("è" "" :string) + ("Ĉ" "" :string) + ("ă" "" :string) + ("â" "" :string) + ("û" "" :string) + ("ê" "" :string) + ("Õ" "" :string) + ("õ" "" :string) + ("ș" "" :string) + ("ç" "" :string) + ("Â" "" :string) + ("Ê" "" :string) + ("Û" "" :string) + ("Ç" "" :string) + ("ì" "" :string) + ("Ì" "" :string) + ("Ș" "" :string) + ("ö" "" :string) + ("Ö" "" :string) + ("ş" "" :string) + ("ů" "" :string) + ("ë" "" :string) + ("ã" "" :string) + ("î" "" :string) + ("Î" "" :string) + ("Ã" "" :string) + ("Ş" "" :string) + ("Ů" "" :string) + ("Ë" "" :string) + ("ï" "" :string) + ("Ő" "" :string) + ("Ï" "" :string) + ("Ę" "" :string) + ("ő" "" :string) + ("Ü" "" :string) + ("Å" "" :string) + ("ü" "" :string) + ("ę" "" :string) + ("å" "" :string) + ("Ä" "" :string) + ("ű" "" :string) + ("Ø" "" :string) + ("ø" "" :string) + ("Ű" "" :string) + ("ä" "" :string) + ("Ą" "" :string) + ("ą" "" :string) + ("œ" "" :string) + ("ß" "" :string) + ("Æ" "" :string) + ("Œ" "" :string) + ("æ" "" :string) + ("e" "" :string) + ("t" "" :string) + ("L" "" :string) + ("Y" "" :string) + ("J" "" :string) + ("a" "" :string) + ("p" "" :string) + ("u" "" :string) + ("j" "" :string) + ("b" "" :string) + ("G" "" :string) + ("U" "" :string) + ("F" "" :string) + ("H" "" :string) + ("i" "" :string) + ("z" "" :string) + ("c" "" :string) + ("l" "" :string) + ("A" "" :string) + ("Q" "" :string) + ("w" "" :string) + ("D" "" :string) + ("R" "" :string) + ("d" "" :string) + ("s" "" :string) + ("r" "" :string) + ("k" "" :string) + ("v" "" :string) + ("m" "" :string) + ("P" "" :string) + ("y" "" :string) + ("K" "" :string) + ("q" "" :string) + ("S" "" :string) + ("I" "" :string) + ("C" "" :string) + ("M" "" :string) + ("Z" "" :string) + ("T" "" :string) + ("W" "" :string) + ("B" "" :string) + ("h" "" :string) + ("x" "" :string) + ("X" "" :string) + ("f" "" :string) + ("E" "" :string) + ("V" "" :string) + ("N" "" :string) + ("O" "" :string) + ("o" "" :string) + ("g" "" :string) + ("n" "" :string) + )) + +(define-rule-set "sphinx-xy-resolve-case" + + :rules (("Ú" "8" :string) + ("Ÿ" "8" :string) + ("Ç" "8" :string) + ("Ĉ" "8" :string) + ("Ŕ" "8" :string) + ("Ľ" "8" :string) + ("Ů" "8" :string) + ("Ý" "8" :string) + ("É" "8" :string) + ("Ë" "8" :string) + ("Ș" "8" :string) + ("Ì" "8" :string) + ("Ê" "8" :string) + ("Ň" "8" :string) + ("Ą" "8" :string) + ("Š" "8" :string) + ("Û" "8" :string) + ("Ş" "8" :string) + ("Ć" "8" :string) + ("Ò" "8" :string) + ("Ĝ" "8" :string) + ("Ñ" "8" :string) + ("Ó" "8" :string) + ("Î" "8" :string) + ("Á" "8" :string) + ("Ã" "8" :string) + ("Ț" "8" :string) + ("Å" "8" :string) + ("Ğ" "8" :string) + ("Ü" "8" :string) + ("È" "8" :string) + ("Ô" "8" :string) + ("İ" "8" :string) + ("Ű" "8" :string) + ("Ù" "8" :string) + ("Ŭ" "8" :string) + ("Â" "8" :string) + ("Ť" "8" :string) + ("Ń" "8" :string) + ("Ď" "8" :string) + ("Ź" "8" :string) + ("Ž" "8" :string) + ("Đ" "8" :string) + ("Ŝ" "8" :string) + ("Č" "8" :string) + ("Ĵ" "8" :string) + ("Ö" "8" :string) + ("Ø" "8" :string) + ("Ż" "8" :string) + ("Ł" "8" :string) + ("Ă" "8" :string) + ("Ě" "8" :string) + ("Ő" "8" :string) + ("Õ" "8" :string) + ("Ę" "8" :string) + ("Ï" "8" :string) + ("À" "8" :string) + ("Ĥ" "8" :string) + ("Ä" "8" :string) + ("Ś" "8" :string) + ("Ř" "8" :string) + ("Í" "8" :string) + ("Œ" "89" :string) + ("Æ" "89" :string) + ("ì" "9" :string) + ("è" "9" :string) + ("ą" "9" :string) + ("š" "9" :string) + ("ú" "9" :string) + ("å" "9" :string) + ("ă" "9" :string) + ("ę" "9" :string) + ("ü" "9" :string) + ("ź" "9" :string) + ("ò" "9" :string) + ("ť" "9" :string) + ("ț" "9" :string) + ("ĵ" "9" :string) + ("ŕ" "9" :string) + ("ż" "9" :string) + ("ä" "9" :string) + ("ý" "9" :string) + ("ù" "9" :string) + ("á" "9" :string) + ("é" "9" :string) + ("č" "9" :string) + ("ň" "9" :string) + ("ś" "9" :string) + ("ø" "9" :string) + ("í" "9" :string) + ("đ" "9" :string) + ("ı" "9" :string) + ("ğ" "9" :string) + ("î" "9" :string) + ("ã" "9" :string) + ("à" "9" :string) + ("ř" "9" :string) + ("ő" "9" :string) + ("ů" "9" :string) + ("ș" "9" :string) + ("ÿ" "9" :string) + ("ë" "9" :string) + ("ŭ" "9" :string) + ("ç" "9" :string) + ("ű" "9" :string) + ("ñ" "9" :string) + ("õ" "9" :string) + ("ě" "9" :string) + ("ş" "9" :string) + ("ž" "9" :string) + ("ĝ" "9" :string) + ("ŝ" "9" :string) + ("ń" "9" :string) + ("û" "9" :string) + ("ł" "9" :string) + ("ď" "9" :string) + ("ĥ" "9" :string) + ("ê" "9" :string) + ("ô" "9" :string) + ("ĉ" "9" :string) + ("â" "9" :string) + ("ć" "9" :string) + ("ï" "9" :string) + ("ö" "9" :string) + ("ľ" "9" :string) + ("ó" "9" :string) + ("æ" "99" :string) + ("ß" "99" :string) + ("œ" "99" :string) + ("N" "8" :string) + ("V" "8" :string) + ("O" "8" :string) + ("X" "8" :string) + ("E" "8" :string) + ("P" "8" :string) + ("K" "8" :string) + ("T" "8" :string) + ("Z" "8" :string) + ("M" "8" :string) + ("C" "8" :string) + ("I" "8" :string) + ("S" "8" :string) + ("B" "8" :string) + ("W" "8" :string) + ("D" "8" :string) + ("R" "8" :string) + ("H" "8" :string) + ("F" "8" :string) + ("Q" "8" :string) + ("A" "8" :string) + ("G" "8" :string) + ("U" "8" :string) + ("J" "8" :string) + ("Y" "8" :string) + ("L" "8" :string) + ("o" "9" :string) + ("n" "9" :string) + ("g" "9" :string) + ("x" "9" :string) + ("f" "9" :string) + ("y" "9" :string) + ("q" "9" :string) + ("h" "9" :string) + ("w" "9" :string) + ("s" "9" :string) + ("d" "9" :string) + ("v" "9" :string) + ("k" "9" :string) + ("r" "9" :string) + ("m" "9" :string) + ("z" "9" :string) + ("c" "9" :string) + ("i" "9" :string) + ("l" "9" :string) + ("b" "9" :string) + ("j" "9" :string) + ("a" "9" :string) + ("p" "9" :string) + ("u" "9" :string) + ("t" "9" :string) + ("e" "9" :string) + )) + +(use-rule-set :run 0 + :rule-set ("sphinx-xy-alphabetize")) +(use-rule-set :run 1 + :rule-set ("sphinx-xy-resolve-diacritics")) +(use-rule-set :run 2 + :rule-set ("sphinx-xy-resolve-case")) diff --git a/docs/build/latex/Makefile b/docs/build/latex/Makefile new file mode 100644 index 0000000..3d4f1c9 --- /dev/null +++ b/docs/build/latex/Makefile @@ -0,0 +1,65 @@ +# Makefile for Sphinx LaTeX output + +ALLDOCS = $(basename $(wildcard *.tex)) +ALLPDF = $(addsuffix .pdf,$(ALLDOCS)) +ALLDVI = $(addsuffix .dvi,$(ALLDOCS)) +ALLXDV = +ALLPS = $(addsuffix .ps,$(ALLDOCS)) + +# Prefix for archive names +ARCHIVEPREFIX = +# Additional LaTeX options (passed via variables in latexmkrc/latexmkjarc file) +export LATEXOPTS ?= +# Additional latexmk options +LATEXMKOPTS ?= +# format: pdf or dvi (used only by archive targets) +FMT = pdf + +LATEX = latexmk -dvi +PDFLATEX = latexmk -pdf -dvi- -ps- + + +%.dvi: %.tex FORCE_MAKE + $(LATEX) $(LATEXMKOPTS) '$<' + +%.ps: %.dvi + dvips '$<' + +%.pdf: %.tex FORCE_MAKE + $(PDFLATEX) $(LATEXMKOPTS) '$<' + +all: $(ALLPDF) + +all-dvi: $(ALLDVI) + +all-ps: $(ALLPS) + +all-pdf: $(ALLPDF) + +zip: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +tar: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +gz: tar + # -n to omit mtime from gzip headers + gzip -n -9 < $(ARCHIVEPREFIX)docs-$(FMT).tar > $(ARCHIVEPREFIX)docs-$(FMT).tar.gz + +bz2: tar + bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +xz: tar + xz -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +clean: + rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz $(ALLPDF) $(ALLDVI) $(ALLXDV) *.fls *.fdb_latexmk + +.PHONY: all all-pdf all-dvi all-ps clean zip tar gz bz2 xz +.PHONY: FORCE_MAKE \ No newline at end of file diff --git a/docs/build/latex/Payroll-Administration_2025.aux b/docs/build/latex/Payroll-Administration_2025.aux new file mode 100644 index 0000000..e55d8a2 --- /dev/null +++ b/docs/build/latex/Payroll-Administration_2025.aux @@ -0,0 +1,95 @@ +\relax +\providecommand\babel@aux[2]{} +\@nameuse{bbl@beforestart} +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\babel@aux{english}{} +\newlabel{index::doc}{{}{1}{}{section*.2}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}INTRODUCTION}{3}{chapter.1}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{introduction:introduction}{{1}{3}{INTRODUCTION}{chapter.1}{}} +\newlabel{introduction::doc}{{1}{3}{INTRODUCTION}{chapter.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.1}Learning Outcomes}{3}{section.1.1}\protected@file@percent } +\newlabel{introduction:learning-outcomes}{{1.1}{3}{Learning Outcomes}{section.1.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.1.1}Payroll Legal Framework}{3}{subsection.1.1.1}\protected@file@percent } +\newlabel{introduction:payroll-legal-framework}{{1.1.1}{3}{Payroll Legal Framework}{subsection.1.1.1}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Payroll Accounting}{5}{chapter.2}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{payroll_accounting:payroll-accounting}{{2}{5}{Payroll Accounting}{chapter.2}{}} +\newlabel{payroll_accounting::doc}{{2}{5}{Payroll Accounting}{chapter.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.1}Journal Entries}{5}{section.2.1}\protected@file@percent } +\newlabel{payroll_accounting:journal-entries}{{2.1}{5}{Journal Entries}{section.2.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.1}Accounting Recap}{5}{subsection.2.1.1}\protected@file@percent } +\newlabel{payroll_accounting:accounting-recap}{{2.1.1}{5}{Accounting Recap}{subsection.2.1.1}{}} +\newlabel{equation:payroll_accounting:AccountingEquation}{{2.1}{5}{Accounting Recap}{equation.2.1.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.2}Journal Entries}{5}{subsection.2.1.2}\protected@file@percent } +\newlabel{payroll_accounting:id1}{{2.1.2}{5}{Journal Entries}{subsection.2.1.2}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}REVIEW QUESTIONS}{7}{chapter.3}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{review_questions:review-questions}{{3}{7}{REVIEW QUESTIONS}{chapter.3}{}} +\newlabel{review_questions::doc}{{3}{7}{REVIEW QUESTIONS}{chapter.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.1}New Employee Information}{7}{section.3.1}\protected@file@percent } +\newlabel{review_questions:new-employee-information}{{3.1}{7}{New Employee Information}{section.3.1}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}OBNOARDING EMPLOYEE}{9}{chapter.4}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{onboarding_employee:obnoarding-employee}{{4}{9}{OBNOARDING EMPLOYEE}{chapter.4}{}} +\newlabel{onboarding_employee::doc}{{4}{9}{OBNOARDING EMPLOYEE}{chapter.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}Employment Standards Requirements}{9}{section.4.1}\protected@file@percent } +\newlabel{onboarding_employee:employment-standards-requirements}{{4.1}{9}{Employment Standards Requirements}{section.4.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.2}Internal Forms}{9}{section.4.2}\protected@file@percent } +\newlabel{onboarding_employee:internal-forms}{{4.2}{9}{Internal Forms}{section.4.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}Authorization for Hiring}{9}{subsection.4.2.1}\protected@file@percent } +\newlabel{onboarding_employee:authorization-for-hiring}{{4.2.1}{9}{Authorization for Hiring}{subsection.4.2.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.2}Union Membership}{9}{subsection.4.2.2}\protected@file@percent } +\newlabel{onboarding_employee:union-membership}{{4.2.2}{9}{Union Membership}{subsection.4.2.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.3}Benefit Enrollment Forms}{10}{subsection.4.2.3}\protected@file@percent } +\newlabel{onboarding_employee:benefit-enrollment-forms}{{4.2.3}{10}{Benefit Enrollment Forms}{subsection.4.2.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.4}Confidentiality Agreement}{10}{subsection.4.2.4}\protected@file@percent } +\newlabel{onboarding_employee:confidentiality-agreement}{{4.2.4}{10}{Confidentiality Agreement}{subsection.4.2.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.3}Required Federal and Provincial/Territorial Forms}{10}{section.4.3}\protected@file@percent } +\newlabel{onboarding_employee:required-federal-and-provincial-territorial-forms}{{4.3}{10}{Required Federal and Provincial/Territorial Forms}{section.4.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}Tax Credits (TD1)}{10}{subsection.4.3.1}\protected@file@percent } +\newlabel{onboarding_employee:tax-credits-td1}{{4.3.1}{10}{Tax Credits (TD1)}{subsection.4.3.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}Tax Credits (TP\sphinxhyphen {}1015.3\sphinxhyphen {}V \textendash {} Québec)}{11}{subsection.4.3.2}\protected@file@percent } +\newlabel{onboarding_employee:tax-credits-tp-1015-3-v-quebec}{{4.3.2}{11}{Tax Credits (TP\sphinxhyphen {}1015.3\sphinxhyphen {}V \textendash {} Québec)}{subsection.4.3.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.4}Content Review Highlights}{11}{section.4.4}\protected@file@percent } +\newlabel{onboarding_employee:content-review-highlights}{{4.4}{11}{Content Review Highlights}{section.4.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.5}Review Questions (Sample)}{11}{section.4.5}\protected@file@percent } +\newlabel{onboarding_employee:review-questions-sample}{{4.5}{11}{Review Questions (Sample)}{section.4.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.6}Example Evaluations}{12}{section.4.6}\protected@file@percent } +\newlabel{onboarding_employee:example-evaluations}{{4.6}{12}{Example Evaluations}{section.4.6}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}RATES FOR 2025}{13}{chapter.5}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{rates_2025:rates-for-2025}{{5}{13}{RATES FOR 2025}{chapter.5}{}} +\newlabel{rates_2025::doc}{{5}{13}{RATES FOR 2025}{chapter.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}CANADA / QUEBEC PENSION PLAN (CPP / QPP)}{13}{section.5.1}\protected@file@percent } +\newlabel{rates_2025:canada-quebec-pension-plan-cpp-qpp}{{5.1}{13}{CANADA / QUEBEC PENSION PLAN (CPP / QPP)}{section.5.1}{}} +\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces CANADA / QUEBEC PENSION PLAN (CPP / QPP)}}{13}{table.5.1}\protected@file@percent } +\newlabel{rates_2025:id1}{{1}{13}{CANADA / QUEBEC PENSION PLAN (CPP / QPP)}{table.5.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.2}CPP2 CONTRIBUTION RATES MAXIMUMS}{13}{section.5.2}\protected@file@percent } +\newlabel{rates_2025:cpp2-contribution-rates-maximums}{{5.2}{13}{CPP2 CONTRIBUTION RATES MAXIMUMS}{section.5.2}{}} +\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces CPP2 Contribution Rates Maximums}}{13}{table.5.2}\protected@file@percent } +\newlabel{rates_2025:id2}{{2}{13}{CPP2 CONTRIBUTION RATES MAXIMUMS}{table.5.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.3}References}{14}{section.5.3}\protected@file@percent } +\newlabel{rates_2025:references}{{5.3}{14}{References}{section.5.3}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}REFERENCES}{15}{chapter.6}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{references:references}{{6}{15}{REFERENCES}{chapter.6}{}} +\newlabel{references::doc}{{6}{15}{REFERENCES}{chapter.6}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {7}Errors and Errata}{17}{chapter.7}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{errata:errors-and-errata}{{7}{17}{Errors and Errata}{chapter.7}{}} +\newlabel{errata::doc}{{7}{17}{Errors and Errata}{chapter.7}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {8}Glossary}{19}{chapter.8}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{index:glossary}{{8}{19}{Glossary}{chapter.8}{}} +\gdef \@abspage@last{23} diff --git a/docs/build/latex/Payroll-Administration_2025.fdb_latexmk b/docs/build/latex/Payroll-Administration_2025.fdb_latexmk new file mode 100644 index 0000000..710093f --- /dev/null +++ b/docs/build/latex/Payroll-Administration_2025.fdb_latexmk @@ -0,0 +1,181 @@ +# Fdb version 4 +["makeindex Payroll-Administration_2025.idx"] 1750641730.75713 "Payroll-Administration_2025.idx" "Payroll-Administration_2025.ind" "Payroll-Administration_2025" 1750641731.36286 0 + "Payroll-Administration_2025.idx" 1750641731.14491 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex" + (generated) + "Payroll-Administration_2025.ilg" + "Payroll-Administration_2025.ind" + (rewritten before read) +["pdflatex"] 1750641730.77598 "Payroll-Administration_2025.tex" "Payroll-Administration_2025.pdf" "Payroll-Administration_2025" 1750641731.36305 0 + "/etc/texmf/web2c/texmf.cnf" 1729307187.57985 475 c0e671620eb5563b2130f56340a5fde8 "" + "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm" 1136768653 3584 adb004a0c8e7c46ee66cad73671f37b4 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1246382020 916 f87d7c45f9c908e672703b83b72241a3 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1246382020 924 9904cf1d39e9767e7a3622f2a125a565 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1246382020 928 2dc8d444221b7a635bb58038579b861a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1246382020 908 2921f8a10601f252058503cc6570e581 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1246382020 940 75ac932a52f80982a9f8ea75d03a34cf "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1246382020 940 228d6584342e91276bf566bcf9716b83 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm" 1136768653 992 662f679a0b3d2d53c1b94050fdaa3f50 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1136768653 1524 4414a8315f39513458b80dfc63bff03a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1136768653 1288 655e228510b4c2a1abe905c368440826 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm" 1136768653 1292 296a67155bdbfc32aa9c636f21e91433 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1136768653 1124 6c73e740cf17375f03eec0ee63599741 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/txfonts/t1xtt.tfm" 1136768653 1384 8943063000d26272532f74ca134dfecd "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1248133631 36299 5f9df58c2139e7edcf37c8fca4bd384d "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1248133631 35752 024fb6c41858982481f6968b5fc26508 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/txfonts/t1xtt.pfb" 1136849748 26301 f08b3c26ea42c3177a262c2ac37d6a91 "" + "/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1575674566 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf" 1496785618 7008 9ff5fdcc865b01beca2b0fe4a46231d4 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty" 1704662920 150008 7a05b0fdc0167c04e192003e780ab195 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/locale/en/babel-en.ini" 1661803479 3966 caeee5a9e5771d4446aa1ca9015ba1b2 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/locale/en/babel-english.tex" 1498512262 336 ed676b5e7dfd862bc78d634f6a973f37 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def" 1704662920 6948 df63e25be1d2bc35bbad5a0141f41348 "" + "/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b "" + "/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 "" + "/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty" 1644112042 7237 bdd120a32c8fdb4b433cf9ca2e7cd98a "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty" 1572645307 1057 525c2192b5febbd8c1f662c9468335bb "" + "/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed "" + "/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty" 1576625065 31769 002a487f55041f8e805cfbf6385ffd97 "" + "/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 "" + "/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1701727651 17865 1a9bd36b4f98178fa551aca822290953 "" + "/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 "" + "/usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1593379760 20089 80423eac55aa175305d35b49e04fe23b "" + "/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1576624663 7008 f92eaa0a3872ed622bbf538217cd2ab7 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1359763108 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1359763108 13829 94730e64147574077f8ecfea9bb69af4 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd" 1359763108 961 6518c6525a34feb5e8250ffa91731cff "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd" 1359763108 961 d02606146ba5601b5645f987c92e6193 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1686341992 2222 499d61426192c39efd8f410ee1a52b9c "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty" 1686341992 4173 82ac04dfb1256038fad068287fbb4fe6 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty" 1686341992 88371 d84032c0f422c3d1e282266c01bef237 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty" 1686341992 4474 b811654f4bf125f11506d13d13647efb "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty" 1686341992 2444 0d0c1ee65478277e8015d65b86983da2 "" + "/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty" 1576191570 19336 ce7ae9438967282886b3b036cfad1e4d "" + "/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty" 1576625391 3935 57aa3c3e203a5c2effb4d2bd2efbc323 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty" 1705352648 3137 080666101e6db698c7daf04c95abb706 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty" 1705352648 3045 273c666a54e60b9f730964f431a56c1b "" + "/usr/share/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty" 1705352648 2462 6bc53756156dbd71c1ad550d30a3b93f "" + "/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty" 1705352648 5119 a04a8b68ab4f6ce800a41f7f8012a10e "" + "/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty" 1705352648 5048 425739d70251273bf93e3d51f3c40048 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty" 1705352648 1939 3225e20a81cec31e51c1e216d6385103 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/report.cls" 1705352648 23203 f5d913095ece2233436f0e628619cd37 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1705352648 8448 dbc0dbf4156c0bb9ba01a1c685d3bad0 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty" 1705352648 2894 fc64867f9d198785eabe71a88276a9cb "" + "/usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty" 1579038678 6078 f1cb470c9199e7110a27851508ed7a5c "" + "/usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty" 1264379041 1311 063f8536a047a2d9cb1803321f793f37 "" + "/usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty" 1612650595 3574 ddc11a0ae1c579d351ed20d2319ad422 "" + "/usr/share/texlive/texmf-dist/tex/latex/cmap/ot1.cmap" 1177721415 1207 4e0d96772f0d338847cbfb4eca683c81 "" + "/usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap" 1215522782 1938 beaa4a8467aa0074076e0e19f2992e29 "" + "/usr/share/texlive/texmf-dist/tex/latex/colortbl/colortbl.sty" 1659300143 12441 3b2a708337608012a865c7d9b7f05d28 "" + "/usr/share/texlive/texmf-dist/tex/latex/ellipse/ellipse.sty" 1449445679 9937 7eb94c47265a0108f7a319db3c3b58b0 "" + "/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce "" + "/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty" 1601931149 46845 3b58f70c6e861a13d927bff09d35ecbc "" + "/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty" 1668028059 18450 88279bf67c81e69f8e3f1c1bad1a26c5 "" + "/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty" 1705955721 43712 c3d93734f3bc56e03c21b3dc69268d3c "" + "/usr/share/texlive/texmf-dist/tex/latex/float/float.sty" 1137110151 6749 16d2656a1984957e674b149555f1ea1d "" + "/usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty" 1292029257 19488 fdd52eb173b3197d748e1ec25acb042f "" + "/usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty" 1338588508 22449 7ec15c16d0d66790f28e90343c5434a3 "" + "/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty" 1578002852 41601 9cf6c5257b1bc7af01a58859749dd37a "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1459978653 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def" 1663965824 19448 1e988b341dda20961a6b931bcde55519 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty" 1654720880 7233 e46ce9241d2b2ca2a78155475fdd557a "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1654720880 18387 8f900a490197ebaf93c02ae9476d4b09 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1654720880 8010 a8d949cbdbc5c983593827c9eec252e1 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1654720880 2671 7e67d78d9b88c845599a85b2d41f2e39 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx" 1667332637 2885 9c645d672ae17285bba324998918efd8 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1654720880 4023 293ea1c16429fc0c4cf605f4da1791a9 "" + "/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty" 1580250785 17914 4c28a13fc3d975e6e81c9bea1d697276 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def" 1705871765 48154 e46bf8adeb936500541441171d61726d "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1705871765 220920 fd3cbb5f1a2bc9b8f451b8b7d8171264 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1705871765 11026 182c63f139a71afd30a28e5f1ed2cd1c "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1705871765 14249 e67cb186717b7ab18d14a4875e7e98b5 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def" 1705871765 117112 05831178ece2cad4d9629dcf65099b11 "" + "/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1655478651 22555 6d8e155cfef6d82c3d5c742fea7c992e "" + "/usr/share/texlive/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty" 1665067230 13815 760b0c02f691ea230f5359c4e1de23a7 "" + "/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1704491087 30006 57b07afb710ee2f649c65cfbafda39c1 "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty" 1575499565 5766 13a9e8766c47f30327caf893ece86ac8 "" + "/usr/share/texlive/texmf-dist/tex/latex/mmap/oml.cmap" 1215649417 1866 c1c12138091b4a8edd4a24a940e6f792 "" + "/usr/share/texlive/texmf-dist/tex/latex/mmap/oms.cmap" 1215649417 2370 3b1f71b14b974f07cef532db09ae9ee0 "" + "/usr/share/texlive/texmf-dist/tex/latex/mmap/omx.cmap" 1215649417 3001 252c8ca42b06a22cb1a11c0e47790c6e "" + "/usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty" 1364856750 852 0e34dbb72efc69fa07602405ad95585e "" + "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty" 1575152444 3822 b53c749cd81352b4679a35b0dafefb95 "" + "/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty" 1615762720 4288 94714aa7f535440f33181fec52a31963 "" + "/usr/share/texlive/texmf-dist/tex/latex/pict2e/p2e-pdftex.def" 1454715303 1168 efb94e82cc1584d4f62679f3487b5339 "" + "/usr/share/texlive/texmf-dist/tex/latex/pict2e/pict2e.cfg" 1454715303 1920 2185073db458618f4a8a794158cf3681 "" + "/usr/share/texlive/texmf-dist/tex/latex/pict2e/pict2e.sty" 1601586370 30933 ccdcd551eb516817cc8f41862254e6e7 "" + "/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" + "/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1657483315 9714 ba3194bd52c8499b3f1e3eb91d409670 "" + "/usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty" 1403566480 13791 8c83287d79183c3bf58fd70871e8a70b "" + "/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty" 1698436711 48766 0b93839be28e9744a24c45075c75b2e2 "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty" 1698869629 12667 e4b5eb11e4b7239e6c8a52bbe074a6c6 "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty" 1698955022 12935 94a3291359b5f73ff1b19345a6983105 "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty" 1686341992 32515 51caec75eda9c8890135f12f1a4eddc3 "" + "/usr/share/texlive/texmf-dist/tex/latex/txfonts/t1txtt.fd" 1137111002 1324 7b6c95370a64cd8c7620cbefefb53dba "" + "/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty" 1334873510 1048 517e01cde97c1c0baf72e69d43aa5a2e "" + "/usr/share/texlive/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty" 1238697683 10894 d359a13923460b2a73d4312d613554c8 "" + "/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty" 1137111090 26220 3701aebf80ccdef248c0c20dd062fea9 "" + "/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty" 1700082560 55487 80a65caedd3722f4c20a14a69e785d8f "" + "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1707919699 40399 f2c302f7d2af602abb742093540a5834 "" + "/usr/share/texmf/fonts/enc/dvips/tex-gyre/q-ec.enc" 1529098226 2457 aaabbccba4df2a7f7371410ee4e075a3 "" + "/usr/share/texmf/fonts/enc/dvips/tex-gyre/q-ts1.enc" 1529098226 3124 3813fd4c981d99822890a2861b0d274c "" + "/usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvb.tfm" 1480098718 11796 b7bc3db132e822d2872ea50ba8fa7cc0 "" + "/usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvbi.tfm" 1480098718 12396 e65c2800bb94ee6ae6e4fdf18f68fa2e "" + "/usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvr.tfm" 1480098718 12084 374c5b7e91efcc10472ab8e61f66d36b "" + "/usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qtmb.tfm" 1480098718 11484 431d8013ae6931f9326b9a0f492d2a5e "" + "/usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qtmr.tfm" 1480098718 11504 0b76b46eb90907e684139293e03c466a "" + "/usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qtmri.tfm" 1480098718 11356 da1519f442d8a49b81c86cbaf25ef79f "" + "/usr/share/texmf/fonts/tfm/public/tex-gyre/ts1-qtmr.tfm" 1480098718 1600 20cdf11dab97d5d39e847571f9314407 "" + "/usr/share/texmf/fonts/type1/public/tex-gyre/qhvb.pfb" 1480098745 112164 176018dd42fcc60204173fa10e357da5 "" + "/usr/share/texmf/fonts/type1/public/tex-gyre/qhvbi.pfb" 1480098745 104926 77ce2f0433ac7fd33dbe9968d127e4fb "" + "/usr/share/texmf/fonts/type1/public/tex-gyre/qhvr.pfb" 1480098745 110045 c159829aa6d7d99f1777bb40c90b8157 "" + "/usr/share/texmf/fonts/type1/public/tex-gyre/qtmb.pfb" 1480098745 131776 4be3e220f990dc716f91bb7965c09237 "" + "/usr/share/texmf/fonts/type1/public/tex-gyre/qtmr.pfb" 1480098745 133302 8dca243a80ecf4cfe00077d4bd995bd7 "" + "/usr/share/texmf/fonts/type1/public/tex-gyre/qtmri.pfb" 1480098745 129669 aaf12ebd0b807d452087fc34bde5bd7d "" + "/usr/share/texmf/tex/latex/tex-gyre/t1qhv.fd" 1480098840 2378 01e898189bf06467f2f6fe33decbff09 "" + "/usr/share/texmf/tex/latex/tex-gyre/t1qtm.fd" 1480098840 1638 7cc855d1dc7c12c1858f209a4ef88c4a "" + "/usr/share/texmf/tex/latex/tex-gyre/tgheros.sty" 1480098840 2130 2b41e80713f78d339e74c19d96fe70a1 "" + "/usr/share/texmf/tex/latex/tex-gyre/tgtermes.sty" 1480098840 2211 af9b7d12507105a58a3e8e926996b827 "" + "/usr/share/texmf/tex/latex/tex-gyre/ts1qtm.fd" 1480098840 1160 de7b1cf70edab73c9f1704df2a9fdbbd "" + "/usr/share/texmf/web2c/texmf.cnf" 1707919699 40399 f2c302f7d2af602abb742093540a5834 "" + "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1729307339.56668 164740 5f02460f8e29b549a9ea60117f5f46e4 "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1729307374 6831204 5735eed681e2db0697903be4f74d0da4 "" + "Payroll-Administration_2025.aux" 1750641731.28491 8499 d132064413855a1d059d0a29a09054e3 "pdflatex" + "Payroll-Administration_2025.ind" 1750641730.7699 0 d41d8cd98f00b204e9800998ecf8427e "makeindex Payroll-Administration_2025.idx" + "Payroll-Administration_2025.out" 1750641731.28591 4793 edf47b3e79ea714fcdd573ce69e4b66d "pdflatex" + "Payroll-Administration_2025.tex" 1750641730.0779 20235 92dcc3cb240c72f5dee6523c29f67329 "" + "Payroll-Administration_2025.toc" 1750641731.28691 2498 3885a7115966f743a358e78ec48347dc "pdflatex" + "sphinx.sty" 1750459726.26999 54203 ee7fe875437470f5328ee20661bb9f1d "" + "sphinxhighlight.sty" 1750641730.0329 7553 83fb52292c17957d9f4aadcb28c57a87 "" + "sphinxlatexadmonitions.sty" 1750459726.26999 19111 5e67a0f91439018bceb7cadf319345e6 "" + "sphinxlatexcontainers.sty" 1750459726.26999 900 d61f923db071a7b54d3cee8a1e6935d3 "" + "sphinxlatexgraphics.sty" 1750459726.26999 4918 c9266041d02bc615d54b890e96e3acd3 "" + "sphinxlatexindbibtoc.sty" 1750459726.27099 2065 1f1f215c304208004fc0522855b3b127 "" + "sphinxlatexlists.sty" 1750459726.27099 5138 98bcb41aa6ecb6cc5c1a6a7c936cb8a8 "" + "sphinxlatexliterals.sty" 1750459726.27099 45860 fa61a279a7f157481590da017e0c6962 "" + "sphinxlatexnumfig.sty" 1750459726.27099 5419 aeaffe9a9d596e3663201bb873b06758 "" + "sphinxlatexobjects.sty" 1750459726.27099 15707 bc327ee938baefa281deb478d03161c7 "" + "sphinxlatexshadowbox.sty" 1750459726.27099 8437 cec78b6bb66e95d214da9fd42b1af598 "" + "sphinxlatexstyleheadings.sty" 1750459726.27199 3742 2a2cc6aa695b2f8c98eb9ee104e5fc6f "" + "sphinxlatexstylepage.sty" 1750459726.27199 2671 e63daf3b9f0f8a387a8b4ba09c515982 "" + "sphinxlatexstyletext.sty" 1750459726.27199 6759 9e932c65374cfb62686485d331bc975c "" + "sphinxlatextables.sty" 1750459726.27199 57643 7f1013c2fa11942370d867527bdda568 "" + "sphinxmanual.cls" 1750459726.27199 4241 7b0d7a37df7b5715fb0dbd585c52ecdb "" + "sphinxmessages.sty" 1750641730.0819 745 3f5fcd6cdd7964ed608767954a8ced6f "" + "sphinxoptionsgeometry.sty" 1750459726.27199 2060 6c27b3eba37bde592ae8908ab2c1ac0f "" + "sphinxoptionshyperref.sty" 1750459726.27199 1093 e468489bae7631a7f387b4b0f7bc15d4 "" + "sphinxpackageboxes.sty" 1750459726.27299 36106 1be2053eb1cb9b083b3a75e3657bcb24 "" + "sphinxpackagefootnote.sty" 1750459726.27299 15330 2fb656b6ce8cd1f6aba2d1c508fb51e5 "" + (generated) + "Payroll-Administration_2025.aux" + "Payroll-Administration_2025.idx" + "Payroll-Administration_2025.log" + "Payroll-Administration_2025.out" + "Payroll-Administration_2025.pdf" + "Payroll-Administration_2025.toc" + (rewritten before read) diff --git a/docs/build/latex/Payroll-Administration_2025.fls b/docs/build/latex/Payroll-Administration_2025.fls new file mode 100644 index 0000000..0f5e181 --- /dev/null +++ b/docs/build/latex/Payroll-Administration_2025.fls @@ -0,0 +1,350 @@ +PWD /home/alex/MyProjects/CanadianPayroll/docs/build/latex +INPUT /etc/texmf/web2c/texmf.cnf +INPUT /usr/share/texmf/web2c/texmf.cnf +INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf +INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt +INPUT Payroll-Administration_2025.tex +OUTPUT Payroll-Administration_2025.log +INPUT ./sphinxmanual.cls +INPUT sphinxmanual.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT ./sphinx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap +OUTPUT Payroll-Administration_2025.pdf +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/locale/en/babel-english.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/locale/en/babel-english.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/locale/en/babel-english.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/locale/en/babel-en.ini +INPUT /usr/share/texmf/tex/latex/tex-gyre/tgtermes.sty +INPUT /usr/share/texmf/tex/latex/tex-gyre/tgtermes.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf/tex/latex/tex-gyre/tgheros.sty +INPUT /usr/share/texmf/tex/latex/tex-gyre/tgheros.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT sphinx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT ./sphinxoptionshyperref.sty +INPUT sphinxoptionshyperref.sty +INPUT ./sphinxoptionsgeometry.sty +INPUT sphinxoptionsgeometry.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT ./sphinxlatexgraphics.sty +INPUT sphinxlatexgraphics.sty +INPUT ./sphinxpackageboxes.sty +INPUT sphinxpackageboxes.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pict2e/pict2e.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pict2e/pict2e.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pict2e/pict2e.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pict2e/pict2e.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/pict2e/pict2e.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/pict2e/pict2e.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/pict2e/p2e-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/pict2e/p2e-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/pict2e/p2e-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/ellipse/ellipse.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/ellipse/ellipse.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/ellipse/ellipse.sty +INPUT ./sphinxlatexadmonitions.sty +INPUT sphinxlatexadmonitions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty +INPUT ./sphinxpackagefootnote.sty +INPUT sphinxpackagefootnote.sty +INPUT ./sphinxlatexliterals.sty +INPUT sphinxlatexliterals.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty +INPUT ./sphinxlatexshadowbox.sty +INPUT sphinxlatexshadowbox.sty +INPUT ./sphinxlatexcontainers.sty +INPUT sphinxlatexcontainers.sty +INPUT ./sphinxhighlight.sty +INPUT sphinxhighlight.sty +INPUT ./sphinxlatextables.sty +INPUT sphinxlatextables.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/colortbl/colortbl.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/colortbl/colortbl.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +INPUT ./sphinxlatexnumfig.sty +INPUT sphinxlatexnumfig.sty +INPUT ./sphinxlatexlists.sty +INPUT sphinxlatexlists.sty +INPUT ./sphinxlatexindbibtoc.sty +INPUT sphinxlatexindbibtoc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty +INPUT ./sphinxlatexstylepage.sty +INPUT sphinxlatexstylepage.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT ./sphinxlatexstyleheadings.sty +INPUT sphinxlatexstyleheadings.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT ./sphinxlatexstyletext.sty +INPUT sphinxlatexstyletext.sty +INPUT ./sphinxlatexobjects.sty +INPUT sphinxlatexobjects.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT ./sphinxmessages.sty +INPUT sphinxmessages.sty +OUTPUT Payroll-Administration_2025.idx +INPUT /usr/share/texmf/tex/latex/tex-gyre/t1qtm.fd +INPUT /usr/share/texmf/tex/latex/tex-gyre/t1qtm.fd +INPUT /usr/share/texmf/tex/latex/tex-gyre/t1qtm.fd +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qtmr.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT ./Payroll-Administration_2025.aux +INPUT ./Payroll-Administration_2025.aux +INPUT Payroll-Administration_2025.aux +OUTPUT Payroll-Administration_2025.aux +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT ./Payroll-Administration_2025.out +INPUT ./Payroll-Administration_2025.out +INPUT Payroll-Administration_2025.out +INPUT Payroll-Administration_2025.out +INPUT ./Payroll-Administration_2025.out +INPUT ./Payroll-Administration_2025.out +OUTPUT Payroll-Administration_2025.out +INPUT /usr/share/texmf/tex/latex/tex-gyre/t1qhv.fd +INPUT /usr/share/texmf/tex/latex/tex-gyre/t1qhv.fd +INPUT /usr/share/texmf/tex/latex/tex-gyre/t1qhv.fd +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvr.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvb.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvb.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvbi.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvbi.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvb.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvb.tfm +INPUT /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map +INPUT /usr/share/texmf/fonts/enc/dvips/tex-gyre/q-ec.enc +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qtmr.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvr.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvb.tfm +INPUT ./Payroll-Administration_2025.toc +INPUT ./Payroll-Administration_2025.toc +INPUT Payroll-Administration_2025.toc +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qtmb.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm +OUTPUT Payroll-Administration_2025.toc +INPUT /usr/share/texlive/texmf-dist/tex/latex/txfonts/t1txtt.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/txfonts/t1txtt.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/txfonts/t1txtt.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/txfonts/t1xtt.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/txfonts/t1xtt.tfm +INPUT /usr/share/texmf/tex/latex/tex-gyre/ts1qtm.fd +INPUT /usr/share/texmf/tex/latex/tex-gyre/ts1qtm.fd +INPUT /usr/share/texmf/tex/latex/tex-gyre/ts1qtm.fd +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ts1-qtmr.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qtmr.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qhvr.tfm +INPUT /usr/share/texmf/fonts/enc/dvips/tex-gyre/q-ts1.enc +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qtmr.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qtmr.tfm +INPUT /usr/share/texmf/fonts/tfm/public/tex-gyre/ec-qtmri.tfm +INPUT ./Payroll-Administration_2025.ind +INPUT ./Payroll-Administration_2025.ind +INPUT Payroll-Administration_2025.ind +INPUT Payroll-Administration_2025.aux +INPUT ./Payroll-Administration_2025.out +INPUT ./Payroll-Administration_2025.out +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb +INPUT /usr/share/texmf/fonts/type1/public/tex-gyre/qhvb.pfb +INPUT /usr/share/texmf/fonts/type1/public/tex-gyre/qhvbi.pfb +INPUT /usr/share/texmf/fonts/type1/public/tex-gyre/qhvr.pfb +INPUT /usr/share/texmf/fonts/type1/public/tex-gyre/qtmb.pfb +INPUT /usr/share/texmf/fonts/type1/public/tex-gyre/qtmr.pfb +INPUT /usr/share/texmf/fonts/type1/public/tex-gyre/qtmri.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/txfonts/t1xtt.pfb diff --git a/docs/build/latex/Payroll-Administration_2025.idx b/docs/build/latex/Payroll-Administration_2025.idx new file mode 100644 index 0000000..e69de29 diff --git a/docs/build/latex/Payroll-Administration_2025.ilg b/docs/build/latex/Payroll-Administration_2025.ilg new file mode 100644 index 0000000..43df9eb --- /dev/null +++ b/docs/build/latex/Payroll-Administration_2025.ilg @@ -0,0 +1,5 @@ +This is makeindex, version 2.17 [TeX Live 2023] (kpathsea + Thai support). +Scanning style file ./python.ist.......done (7 attributes redefined, 0 ignored). +Scanning input file Payroll-Administration_2025.idx...done (0 entries accepted, 0 rejected). +Nothing written in Payroll-Administration_2025.ind. +Transcript written in Payroll-Administration_2025.ilg. diff --git a/docs/build/latex/Payroll-Administration_2025.ind b/docs/build/latex/Payroll-Administration_2025.ind new file mode 100644 index 0000000..e69de29 diff --git a/docs/build/latex/Payroll-Administration_2025.log b/docs/build/latex/Payroll-Administration_2025.log new file mode 100644 index 0000000..af7ec87 --- /dev/null +++ b/docs/build/latex/Payroll-Administration_2025.log @@ -0,0 +1,929 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) (preloaded format=pdflatex 2024.10.18) 22 JUN 2025 21:22 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**Payroll-Administration_2025.tex +(./Payroll-Administration_2025.tex +LaTeX2e <2023-11-01> patch level 1 +L3 programming layer <2024-01-22> +(./sphinxmanual.cls +Document Class: sphinxmanual 2019/12/01 v2.3.0 Document class (Sphinx manual) +(/usr/share/texlive/texmf-dist/tex/latex/base/report.cls +Document Class: report 2023/05/17 v1.4n Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2023/05/17 v1.4n Standard LaTeX file (size option) +) +\c@part=\count187 +\c@chapter=\count188 +\c@section=\count189 +\c@subsection=\count190 +\c@subsubsection=\count191 +\c@paragraph=\count192 +\c@subparagraph=\count193 +\c@figure=\count194 +\c@table=\count195 +\abovecaptionskip=\skip48 +\belowcaptionskip=\skip49 +\bibindent=\dimen140 +) +LaTeX Info: Redefining \and on input line 35. +) +(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2021/02/14 v1.3d Input encoding file +\inpenc@prehook=\toks17 +\inpenc@posthook=\toks18 +) + defining Unicode char U+00A0 (decimal 160) + defining Unicode char U+2500 (decimal 9472) + defining Unicode char U+2502 (decimal 9474) + defining Unicode char U+2514 (decimal 9492) + defining Unicode char U+251C (decimal 9500) + defining Unicode char U+2572 (decimal 9586) + +(/usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty +Package: cmap 2021/02/06 v1.0j CMap support: searchable PDF +) +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2021/04/29 v2.0v Standard LaTeX package +<>) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2023/05/13 v2.17o AMS math features +\@mathmargin=\skip50 + +For additional information on amsmath, use the `?' option. +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2021/08/26 v2.01 AMS text + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks19 +\ex@=\dimen141 +)) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen142 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 2022/04/08 v2.04 operator names +) +\inf@bad=\count196 +LaTeX Info: Redefining \frac on input line 234. +\uproot@=\count197 +\leftroot@=\count198 +LaTeX Info: Redefining \overline on input line 399. +LaTeX Info: Redefining \colon on input line 410. +\classnum@=\count199 +\DOTSCASE@=\count266 +LaTeX Info: Redefining \ldots on input line 496. +LaTeX Info: Redefining \dots on input line 499. +LaTeX Info: Redefining \cdots on input line 620. +\Mathstrutbox@=\box51 +\strutbox@=\box52 +LaTeX Info: Redefining \big on input line 722. +LaTeX Info: Redefining \Big on input line 723. +LaTeX Info: Redefining \bigg on input line 724. +LaTeX Info: Redefining \Bigg on input line 725. +\big@size=\dimen143 +LaTeX Font Info: Redeclaring font encoding OML on input line 743. +LaTeX Font Info: Redeclaring font encoding OMS on input line 744. +\macc@depth=\count267 +LaTeX Info: Redefining \bmod on input line 905. +LaTeX Info: Redefining \pmod on input line 910. +LaTeX Info: Redefining \smash on input line 940. +LaTeX Info: Redefining \relbar on input line 970. +LaTeX Info: Redefining \Relbar on input line 971. +\c@MaxMatrixCols=\count268 +\dotsspace@=\muskip16 +\c@parentequation=\count269 +\dspbrk@lvl=\count270 +\tag@help=\toks20 +\row@=\count271 +\column@=\count272 +\maxfields@=\count273 +\andhelp@=\toks21 +\eqnshift@=\dimen144 +\alignsep@=\dimen145 +\tagshift@=\dimen146 +\tagwidth@=\dimen147 +\totwidth@=\dimen148 +\lineht@=\dimen149 +\@envbody=\toks22 +\multlinegap=\skip51 +\multlinetaggap=\skip52 +\mathdisplay@stack=\toks23 +LaTeX Info: Redefining \[ on input line 2953. +LaTeX Info: Redefining \] on input line 2954. +) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2013/01/14 v3.01 AMS font symbols + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +)) +(/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty +Package: babel 2024/01/07 v24.1 The Babel package +\babel@savecnt=\count274 +\U@D=\dimen150 +\l@unhyphenated=\language9 + +(/usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def) +\bbl@readstream=\read2 +\bbl@dirlevel=\count275 + +(/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +Language: english 2017/06/06 v3.3r English support from the babel system +Package babel Info: Hyphen rules for 'british' set to \l@english +(babel) (\language0). Reported on input line 82. +Package babel Info: Hyphen rules for 'UKenglish' set to \l@english +(babel) (\language0). Reported on input line 83. +Package babel Info: Hyphen rules for 'canadian' set to \l@english +(babel) (\language0). Reported on input line 102. +Package babel Info: Hyphen rules for 'australian' set to \l@english +(babel) (\language0). Reported on input line 105. +Package babel Info: Hyphen rules for 'newzealand' set to \l@english +(babel) (\language0). Reported on input line 108. +)) +(/usr/share/texlive/texmf-dist/tex/generic/babel/locale/en/babel-english.tex +Package babel Info: Importing font and identification data for english +(babel) from babel-en.ini. Reported on input line 11. +) +(/usr/share/texmf/tex/latex/tex-gyre/tgtermes.sty +Package: tgtermes 2009/09/27 v1.2 TeX Gyre Termes as default roman family + +(/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks24 +) +(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2023-12-04 v1.26 LaTeX kernel commands for general use (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO) +))) +(/usr/share/texmf/tex/latex/tex-gyre/tgheros.sty +Package: tgheros 2009/09/27 v1.2 TeX Gyre Heros as default sans serif family +) +(/usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty +Package: fncychap 2007/07/30 v1.34 LaTeX package (Revised chapters) +\RW=\skip53 +\mylen=\skip54 +\myhi=\skip55 +\px=\skip56 +\py=\skip57 +\pyy=\skip58 +\pxx=\skip59 +\c@AlphaCnt=\count276 +\c@AlphaDecCnt=\count277 +) (./sphinx.sty +Package: sphinx 2024/11/23 v8.2.0 Sphinx LaTeX package (sphinx-doc) + +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2023/11/15 v3.01 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 274. + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2022/09/22 v1.2b Graphics/color driver for pdftex +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1350. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1354. +Package xcolor Info: Model `RGB' extended on input line 1366. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1368. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1370. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1371. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1372. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1373. +) +(./sphinxoptionshyperref.sty +Package: sphinxoptionshyperref 2021/01/27 hyperref +) (./sphinxoptionsgeometry.sty +Package: sphinxoptionsgeometry 2021/01/27 geometry +) +(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +Package: textcomp 2020/02/02 v2.0n Standard LaTeX package +) +(/usr/share/texlive/texmf-dist/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count278 +\float@exts=\toks25 +\float@box=\box53 +\@float@everytoks=\toks26 +\@floatcapt=\box54 +) +(/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty +\wrapoverhang=\dimen151 +\WF@size=\dimen152 +\c@WF@wrappedlines=\count279 +\WF@box=\box55 +\WF@everypar=\toks27 +Package: wrapfig 2003/01/31 v 3.6 +) +(/usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty +Package: capt-of 2009/12/29 v0.2 standard captions outside of floats +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty +Package: multicol 2023/03/30 v1.9f multicolumn formatting (FMi) +\c@tracingmulticols=\count280 +\mult@box=\box56 +\multicol@leftmargin=\dimen153 +\c@unbalance=\count281 +\c@collectmore=\count282 +\doublecol@number=\count283 +\multicoltolerance=\count284 +\multicolpretolerance=\count285 +\full@width=\dimen154 +\page@free=\dimen155 +\premulticols=\dimen156 +\postmulticols=\dimen157 +\multicolsep=\skip60 +\multicolbaselineskip=\skip61 +\partial@page=\box57 +\last@line=\box58 +\mc@boxedresult=\box59 +\maxbalancingoverflow=\dimen158 +\mult@rightbox=\box60 +\mult@grightbox=\box61 +\mult@firstbox=\box62 +\mult@gfirstbox=\box63 +\@tempa=\box64 +\@tempa=\box65 +\@tempa=\box66 +\@tempa=\box67 +\@tempa=\box68 +\@tempa=\box69 +\@tempa=\box70 +\@tempa=\box71 +\@tempa=\box72 +\@tempa=\box73 +\@tempa=\box74 +\@tempa=\box75 +\@tempa=\box76 +\@tempa=\box77 +\@tempa=\box78 +\@tempa=\box79 +\@tempa=\box80 +\@tempa=\box81 +\@tempa=\box82 +\@tempa=\box83 +\@tempa=\box84 +\@tempa=\box85 +\@tempa=\box86 +\@tempa=\box87 +\@tempa=\box88 +\@tempa=\box89 +\@tempa=\box90 +\@tempa=\box91 +\@tempa=\box92 +\@tempa=\box93 +\@tempa=\box94 +\@tempa=\box95 +\@tempa=\box96 +\@tempa=\box97 +\@tempa=\box98 +\@tempa=\box99 +\c@minrows=\count286 +\c@columnbadness=\count287 +\c@finalcolumnbadness=\count288 +\last@try=\dimen159 +\multicolovershoot=\dimen160 +\multicolundershoot=\dimen161 +\mult@nat@firstbox=\box100 +\colbreak@box=\box101 +\mc@col@check@num=\count289 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2021/08/11 v1.11 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 107. +) +\Gin@req@height=\dimen162 +\Gin@req@width=\dimen163 +) +(./sphinxlatexgraphics.sty +Package: sphinxlatexgraphics 2024/08/13 v8.1.0 graphics +\spx@image@maxheight=\dimen164 +\spx@image@box=\box102 +) (./sphinxpackageboxes.sty +Package: sphinxpackageboxes 2024/07/01 v7.4.0 advanced colored boxes + +(/usr/share/texlive/texmf-dist/tex/latex/pict2e/pict2e.sty +Package: pict2e 2020/09/30 v0.4b Improved picture commands (HjG,RN,JT) + +(/usr/share/texlive/texmf-dist/tex/latex/pict2e/pict2e.cfg +File: pict2e.cfg 2016/02/05 v0.1u pict2e configuration for teTeX/TeXLive +) +Package pict2e Info: Driver file: pdftex.def on input line 112. +Package pict2e Info: Driver file for pict2e: p2e-pdftex.def on input line 114. + +(/usr/share/texlive/texmf-dist/tex/latex/pict2e/p2e-pdftex.def +File: p2e-pdftex.def 2016/02/05 v0.1u Driver-dependant file (RN,HjG,JT) +) +\pIIe@GRAPH=\toks28 +\@arclen=\dimen165 +\@arcrad=\dimen166 +\pIIe@tempdima=\dimen167 +\pIIe@tempdimb=\dimen168 +\pIIe@tempdimc=\dimen169 +\pIIe@tempdimd=\dimen170 +\pIIe@tempdime=\dimen171 +\pIIe@tempdimf=\dimen172 +) +(/usr/share/texlive/texmf-dist/tex/latex/ellipse/ellipse.sty +Package: ellipse 2004/11/05 v1.0 .dtx ellipse file +) +\@tempdimd=\dimen173 +\spx@tempboxa=\box103 +\spx@tempboxb=\box104 +\spx@boxes@border@top=\dimen174 +\spx@boxes@border@right=\dimen175 +\spx@boxes@border@bottom=\dimen176 +\spx@boxes@border@left=\dimen177 +\spx@boxes@padding@top=\dimen178 +\spx@boxes@padding@right=\dimen179 +\spx@boxes@padding@bottom=\dimen180 +\spx@boxes@padding@left=\dimen181 +\spx@boxes@shadow@xoffset=\dimen182 +\spx@boxes@shadow@yoffset=\dimen183 +\spx@boxes@radius@topleft@x=\dimen184 +\spx@boxes@radius@topright@x=\dimen185 +\spx@boxes@radius@bottomright@x=\dimen186 +\spx@boxes@radius@bottomleft@x=\dimen187 +\spx@boxes@radius@topleft@y=\dimen188 +\spx@boxes@radius@topright@y=\dimen189 +\spx@boxes@radius@bottomright@y=\dimen190 +\spx@boxes@radius@bottomleft@y=\dimen191 +) +(./sphinxlatexadmonitions.sty +Package: sphinxlatexadmonitions 2024/10/11 v8.1.1 admonitions + +(/usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty +Package: framed 2011/10/22 v 0.96: framed or shaded text with page breaks +\OuterFrameSep=\skip62 +\fb@frw=\dimen192 +\fb@frh=\dimen193 +\FrameRule=\dimen194 +\FrameSep=\dimen195 +) +(./sphinxpackagefootnote.sty +Package: sphinxpackagefootnote 2024/05/17 v7.3.x Sphinx custom footnotehyper pa +ckage (Sphinx team) +\FNH@notes=\box105 +\FNH@toks=\toks29 +\FNH@width=\dimen196 +\c@sphinxfootnotemark=\count290 +) +\spx@notice@border=\dimen197 +\c@sphinxtodo=\count291 +) (./sphinxlatexliterals.sty +Package: sphinxlatexliterals 2024/07/01 v7.4.0 code-blocks and parsed literals + +(/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +Package: fancyvrb 2024/01/20 4.5c verbatim text (tvz,hv) +\FV@CodeLineNo=\count292 +\FV@InFile=\read3 +\FV@TabBox=\box106 +\c@FancyVerbLine=\count293 +\FV@StepNumber=\count294 +\FV@OutFile=\write3 +) +(/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty +Package: alltt 2021/01/29 v2.0g defines alltt environment +) +(/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty +Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba +tim +) +(/usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty +Package: needspace 2010/09/12 v1.3d reserve vertical space +) +\sphinxcontinuationbox=\box107 +\sphinxvisiblespacebox=\box108 +\sphinxVerbatim@TitleBox=\box109 +\sphinxVerbatim@ContentsBox=\box110 +) +(./sphinxlatexshadowbox.sty +Package: sphinxlatexshadowbox 2024/07/28 v8.1.0 sphinxShadowBox +) (./sphinxlatexcontainers.sty +Package: sphinxlatexcontainers 2021/05/03 containers +) +(./sphinxhighlight.sty +Package: sphinxhighlight 2022/06/30 stylesheet for highlighting with pygments +) (./sphinxlatextables.sty +Package: sphinxlatextables 2024/07/01 v7.4.0 tables + +(/usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty +Package: tabulary 2014/06/11 v0.10 tabulary package (DPC) + +(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +Package: array 2023/10/16 v2.5g Tabular extension package (FMi) +\col@sep=\dimen198 +\ar@mcellbox=\box111 +\extrarowheight=\dimen199 +\NC@list=\toks30 +\extratabsurround=\skip63 +\backup@length=\skip64 +\ar@cellbox=\box112 +) +\TY@count=\count295 +\TY@linewidth=\dimen256 +\tymin=\dimen257 +\tymax=\dimen258 +\TY@tablewidth=\dimen259 +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty +Package: longtable 2023-11-01 v4.19 Multi-page Table package (DPC) +\LTleft=\skip65 +\LTright=\skip66 +\LTpre=\skip67 +\LTpost=\skip68 +\LTchunksize=\count296 +\LTcapwidth=\dimen260 +\LT@head=\box113 +\LT@firsthead=\box114 +\LT@foot=\box115 +\LT@lastfoot=\box116 +\LT@gbox=\box117 +\LT@cols=\count297 +\LT@rows=\count298 +\c@LT@tables=\count299 +\c@LT@chunks=\count300 +\LT@p@ftn=\toks31 +) +(/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty +Package: varwidth 2009/03/30 ver 0.92; Variable-width minipages +\@vwid@box=\box118 +\sift@deathcycles=\count301 +\@vwid@loff=\dimen261 +\@vwid@roff=\dimen262 +) +\sphinx@TY@tablewidth=\dimen263 + +(/usr/share/texlive/texmf-dist/tex/latex/colortbl/colortbl.sty +Package: colortbl 2022/06/20 v1.0f Color table columns (DPC) +\everycr=\toks32 +\minrowclearance=\skip69 +\rownum=\count302 +) +(/usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +Package: booktabs 2020/01/12 v1.61803398 Publication quality tables +\heavyrulewidth=\dimen264 +\lightrulewidth=\dimen265 +\cmidrulewidth=\dimen266 +\belowrulesep=\dimen267 +\belowbottomsep=\dimen268 +\aboverulesep=\dimen269 +\abovetopsep=\dimen270 +\cmidrulesep=\dimen271 +\cmidrulekern=\dimen272 +\defaultaddspace=\dimen273 +\@cmidla=\count303 +\@cmidlb=\count304 +\@aboverulesep=\dimen274 +\@belowrulesep=\dimen275 +\@thisruleclass=\count305 +\@lastruleclass=\count306 +\@thisrulewidth=\dimen276 +)) +(./sphinxlatexnumfig.sty +Package: sphinxlatexnumfig 2024/07/31 v8.1.0 numbering +) (./sphinxlatexlists.sty +Package: sphinxlatexlists 2021/12/20 lists +\spx@lineitemlabel=\toks33 +) +\c@sphinxscope=\count307 + (./sphinxlatexindbibtoc.sty +Package: sphinxlatexindbibtoc 2021/01/27 index, bib., toc + +(/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty +Package: makeidx 2021/10/04 v1.0m Standard LaTeX package +)) +(./sphinxlatexstylepage.sty +Package: sphinxlatexstylepage 2021/01/27 page styling + +(/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty +Package: parskip 2021-03-14 v2.0h non-zero parskip adjustments + +(/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW) +\etb@tempcnta=\count308 +)) +(/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +Package: fancyhdr 2022/11/09 v4.1 Extensive control of page headers and footers + +\f@nch@headwidth=\skip70 +\f@nch@O@elh=\skip71 +\f@nch@O@erh=\skip72 +\f@nch@O@olh=\skip73 +\f@nch@O@orh=\skip74 +\f@nch@O@elf=\skip75 +\f@nch@O@erf=\skip76 +\f@nch@O@olf=\skip77 +\f@nch@O@orf=\skip78 +)) +(./sphinxlatexstyleheadings.sty +Package: sphinxlatexstyleheadings 2023/02/11 headings + +(/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty +Package: titlesec 2023/10/27 v2.16 Sectioning titles +\ttl@box=\box119 +\beforetitleunit=\skip79 +\aftertitleunit=\skip80 +\ttl@plus=\dimen277 +\ttl@minus=\dimen278 +\ttl@toksa=\toks34 +\titlewidth=\dimen279 +\titlewidthlast=\dimen280 +\titlewidthfirst=\dimen281 +)) +(./sphinxlatexstyletext.sty +Package: sphinxlatexstyletext 2024/07/28 v8.1.0 text styling +) (./sphinxlatexobjects.sty +Package: sphinxlatexobjects 2025/02/11 documentation environments +\sphinxsignaturesep=\skip81 +\sphinxsignaturelistskip=\skip82 +\py@argswidth=\skip83 +\lineblockindentation=\skip84 +\DUlineblockindent=\skip85 +)) +(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. + +(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2022/02/03 v1.0f TeX engine tests +)) +\Gm@cnth=\count309 +\Gm@cntv=\count310 +\c@Gm@tempcnt=\count311 +\Gm@bindingoffset=\dimen282 +\Gm@wd@mp=\dimen283 +\Gm@odd@mp=\dimen284 +\Gm@even@mp=\dimen285 +\Gm@layoutwidth=\dimen286 +\Gm@layoutheight=\dimen287 +\Gm@layouthoffset=\dimen288 +\Gm@layoutvoffset=\dimen289 +\Gm@dimlist=\toks35 +) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2024-01-20 v7.01h Hypertext links for LaTeX + +(/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO +) + +(/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +)) +(/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2023-11-26 v2.56 Cross-referencing by name of section + +(/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) +) +\c@section@level=\count312 +) +\@linkdim=\dimen290 +\Hy@linkcounter=\count313 +\Hy@pagecounter=\count314 + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2024-01-20 v7.01h Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +(/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) +\Hy@SavedSpaceFactor=\count315 + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +File: puenc.def 2024-01-20 v7.01h Hyperref: PDF Unicode definition (HO) +Now handling font encoding PU ... +... no UTF-8 mapping file for font encoding PU +) +Package hyperref Info: Option `unicode' set `true' on input line 4062. +Package hyperref Info: Option `colorlinks' set `true' on input line 4062. +Package hyperref Info: Option `breaklinks' set `true' on input line 4062. +Package hyperref Info: Hyper figures OFF on input line 4179. +Package hyperref Info: Link nesting OFF on input line 4184. +Package hyperref Info: Hyper index ON on input line 4187. +Package hyperref Info: Plain pages OFF on input line 4194. +Package hyperref Info: Backreferencing OFF on input line 4199. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4446. +\c@Hy@tempcnt=\count316 + +(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip17 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 4784. +\XeTeXLinkMargin=\dimen291 + +(/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO +) +)) +\Fld@menulength=\count317 +\Field@Width=\dimen292 +\Fld@charsize=\dimen293 +Package hyperref Info: Hyper figures OFF on input line 6063. +Package hyperref Info: Link nesting OFF on input line 6068. +Package hyperref Info: Hyper index ON on input line 6071. +Package hyperref Info: backreferencing OFF on input line 6078. +Package hyperref Info: Link coloring ON on input line 6081. +Package hyperref Info: Link coloring with OCG OFF on input line 6088. +Package hyperref Info: PDF/A mode OFF on input line 6093. + +(/usr/share/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty +Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi +package with kernel methods +) +\Hy@abspage=\count318 +\c@Item=\count319 +\c@Hfootnote=\count320 +) +Package hyperref Info: Driver (autodetected): hpdftex. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2024-01-20 v7.01h Hyperref driver for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty +Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend pac +kage +with kernel methods +) +\Fld@listcount=\count321 +\c@bookmark@seq@number=\count322 + +(/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2022-07-10 v1.10 Rerun checks for auxiliary files (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +85. +) +\Hy@SectionHShift=\skip86 +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty +Package: hypcap 2016/05/16 v1.12 Adjusting the anchors of captions (HO) + +(/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) +)) +(./sphinxmessages.sty +Package: sphinxmessages 2019/01/04 v2.0 Localized LaTeX macros (Sphinx team) +) +\@indexfile=\write4 +\openout4 = `Payroll-Administration_2025.idx'. + + +Writing index file Payroll-Administration_2025.idx +LaTeX Font Info: Trying to load font information for T1+qtm on input line 73 +. +(/usr/share/texmf/tex/latex/tex-gyre/t1qtm.fd +File: t1qtm.fd 2009/09/25 v1.2 font definition file for T1/qtm +) +(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2024-01-04 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count323 +\l__pdf_internal_box=\box120 +) +(./Payroll-Administration_2025.aux) +\openout1 = `Payroll-Administration_2025.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. + +(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count324 +\scratchdimen=\dimen294 +\scratchbox=\box121 +\nofMPsegments=\count325 +\nofMParguments=\count326 +\everyMPshowfont=\toks36 +\MPscratchCnt=\count327 +\MPscratchDim=\dimen295 +\MPnumerator=\count328 +\makeMPintoPDFobject=\count329 +\everyMPtoPDFconversion=\toks37 +) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +\c@literalblock=\count330 + +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: letterpaper +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: twoside +* h-part:(L,W,R)=(72.26999pt, 469.75502pt, 72.26999pt) +* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt) +* \paperwidth=614.295pt +* \paperheight=794.96999pt +* \textwidth=469.75502pt +* \textheight=650.43001pt +* \oddsidemargin=0.0pt +* \evensidemargin=0.0pt +* \topmargin=-37.0pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=10.0pt +* \footskip=30.0pt +* \marginparwidth=36.135pt +* \marginparsep=11.0pt +* \columnsep=10.0pt +* \skip\footins=9.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidetrue +* \@mparswitchtrue +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +Package hyperref Info: Link coloring ON on input line 73. +(./Payroll-Administration_2025.out) (./Payroll-Administration_2025.out) +\@outlinefile=\write5 +\openout5 = `Payroll-Administration_2025.out'. + +Package hyperref Info: Option `pageanchor' set `false' on input line 81. +LaTeX Font Info: Trying to load font information for T1+qhv on input line 81 +. + +(/usr/share/texmf/tex/latex/tex-gyre/t1qhv.fd +File: t1qhv.fd 2009/09/25 v1.2 font definition file for T1/qhv +)<><><><> +LaTeX Font Info: Trying to load font information for U+msa on input line 81. + + (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +LaTeX Font Info: Trying to load font information for U+msb on input line 81. + + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +) [1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}{/usr/share/texmf/fonts/enc/ +dvips/tex-gyre/q-ec.enc}] [2 + + +] (./Payroll-Administration_2025.toc) +\tf@toc=\write6 +\openout6 = `Payroll-Administration_2025.toc'. + + [1 + +] [2 + +] +LaTeX Font Info: Trying to load font information for T1+txtt on input line 8 +8. + +(/usr/share/texlive/texmf-dist/tex/latex/txfonts/t1txtt.fd +File: t1txtt.fd 2000/12/15 v3.1 +) [1] [2 + +] +Chapter 1. +LaTeX Font Info: Trying to load font information for TS1+qtm on input line 1 +07. +(/usr/share/texmf/tex/latex/tex-gyre/ts1qtm.fd +File: ts1qtm.fd 2009/09/25 v1.2 font definition file for TS1/qtm +) [3{/usr/share/texmf/fonts/enc/dvips/tex-gyre/q-ts1.enc}] [4 + +] +Chapter 2. +[5] [6 + +] +Chapter 3. +[7] [8 + +] +Chapter 4. +[9] [10] [11] [12] +Chapter 5. +[13 + +] [14] +Chapter 6. +[15 + +] [16 + +] +Chapter 7. +[17] [18 + +] +Chapter 8. +(./Payroll-Administration_2025.ind) [19] (./Payroll-Administration_2025.aux) + *********** +LaTeX2e <2023-11-01> patch level 1 +L3 programming layer <2024-01-22> + *********** +Package rerunfilecheck Info: File `Payroll-Administration_2025.out' has not cha +nged. +(rerunfilecheck) Checksum: EDF47B3E79EA714FCDD573CE69E4B66D;4793. + ) +Here is how much of TeX's memory you used: + 16841 strings out of 476106 + 286117 string characters out of 5793932 + 1943975 words of memory out of 5000000 + 38400 multiletter control sequences out of 15000+600000 + 614330 words of font info for 77 fonts, out of 8000000 for 9000 + 60 hyphenation exceptions out of 8191 + 72i,14n,83p,1216b,575s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on Payroll-Administration_2025.pdf (23 pages, 192710 bytes). +PDF statistics: + 333 PDF objects out of 1000 (max. 8388607) + 289 compressed objects within 3 object streams + 76 named destinations out of 1000 (max. 500000) + 253 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/docs/build/latex/Payroll-Administration_2025.out b/docs/build/latex/Payroll-Administration_2025.out new file mode 100644 index 0000000..6a387fd --- /dev/null +++ b/docs/build/latex/Payroll-Administration_2025.out @@ -0,0 +1,29 @@ +\BOOKMARK [0][-]{chapter.1}{\376\377\000I\000N\000T\000R\000O\000D\000U\000C\000T\000I\000O\000N}{}% 1 +\BOOKMARK [1][-]{section.1.1}{\376\377\000L\000e\000a\000r\000n\000i\000n\000g\000\040\000O\000u\000t\000c\000o\000m\000e\000s}{chapter.1}% 2 +\BOOKMARK [2][-]{subsection.1.1.1}{\376\377\000P\000a\000y\000r\000o\000l\000l\000\040\000L\000e\000g\000a\000l\000\040\000F\000r\000a\000m\000e\000w\000o\000r\000k}{section.1.1}% 3 +\BOOKMARK [0][-]{chapter.2}{\376\377\000P\000a\000y\000r\000o\000l\000l\000\040\000A\000c\000c\000o\000u\000n\000t\000i\000n\000g}{}% 4 +\BOOKMARK [1][-]{section.2.1}{\376\377\000J\000o\000u\000r\000n\000a\000l\000\040\000E\000n\000t\000r\000i\000e\000s}{chapter.2}% 5 +\BOOKMARK [2][-]{subsection.2.1.1}{\376\377\000A\000c\000c\000o\000u\000n\000t\000i\000n\000g\000\040\000R\000e\000c\000a\000p}{section.2.1}% 6 +\BOOKMARK [2][-]{subsection.2.1.2}{\376\377\000J\000o\000u\000r\000n\000a\000l\000\040\000E\000n\000t\000r\000i\000e\000s}{section.2.1}% 7 +\BOOKMARK [0][-]{chapter.3}{\376\377\000R\000E\000V\000I\000E\000W\000\040\000Q\000U\000E\000S\000T\000I\000O\000N\000S}{}% 8 +\BOOKMARK [1][-]{section.3.1}{\376\377\000N\000e\000w\000\040\000E\000m\000p\000l\000o\000y\000e\000e\000\040\000I\000n\000f\000o\000r\000m\000a\000t\000i\000o\000n}{chapter.3}% 9 +\BOOKMARK [0][-]{chapter.4}{\376\377\000O\000B\000N\000O\000A\000R\000D\000I\000N\000G\000\040\000E\000M\000P\000L\000O\000Y\000E\000E}{}% 10 +\BOOKMARK [1][-]{section.4.1}{\376\377\000E\000m\000p\000l\000o\000y\000m\000e\000n\000t\000\040\000S\000t\000a\000n\000d\000a\000r\000d\000s\000\040\000R\000e\000q\000u\000i\000r\000e\000m\000e\000n\000t\000s}{chapter.4}% 11 +\BOOKMARK [1][-]{section.4.2}{\376\377\000I\000n\000t\000e\000r\000n\000a\000l\000\040\000F\000o\000r\000m\000s}{chapter.4}% 12 +\BOOKMARK [2][-]{subsection.4.2.1}{\376\377\000A\000u\000t\000h\000o\000r\000i\000z\000a\000t\000i\000o\000n\000\040\000f\000o\000r\000\040\000H\000i\000r\000i\000n\000g}{section.4.2}% 13 +\BOOKMARK [2][-]{subsection.4.2.2}{\376\377\000U\000n\000i\000o\000n\000\040\000M\000e\000m\000b\000e\000r\000s\000h\000i\000p}{section.4.2}% 14 +\BOOKMARK [2][-]{subsection.4.2.3}{\376\377\000B\000e\000n\000e\000f\000i\000t\000\040\000E\000n\000r\000o\000l\000l\000m\000e\000n\000t\000\040\000F\000o\000r\000m\000s}{section.4.2}% 15 +\BOOKMARK [2][-]{subsection.4.2.4}{\376\377\000C\000o\000n\000f\000i\000d\000e\000n\000t\000i\000a\000l\000i\000t\000y\000\040\000A\000g\000r\000e\000e\000m\000e\000n\000t}{section.4.2}% 16 +\BOOKMARK [1][-]{section.4.3}{\376\377\000R\000e\000q\000u\000i\000r\000e\000d\000\040\000F\000e\000d\000e\000r\000a\000l\000\040\000a\000n\000d\000\040\000P\000r\000o\000v\000i\000n\000c\000i\000a\000l\000/\000T\000e\000r\000r\000i\000t\000o\000r\000i\000a\000l\000\040\000F\000o\000r\000m\000s}{chapter.4}% 17 +\BOOKMARK [2][-]{subsection.4.3.1}{\376\377\000T\000a\000x\000\040\000C\000r\000e\000d\000i\000t\000s\000\040\000\050\000T\000D\0001\000\051}{section.4.3}% 18 +\BOOKMARK [2][-]{subsection.4.3.2}{\376\377\000T\000a\000x\000\040\000C\000r\000e\000d\000i\000t\000s\000\040\000\050\000T\000P\000-\0001\0000\0001\0005\000.\0003\000-\000V\000\040\040\023\000\040\000Q\000u\000\351\000b\000e\000c\000\051}{section.4.3}% 19 +\BOOKMARK [1][-]{section.4.4}{\376\377\000C\000o\000n\000t\000e\000n\000t\000\040\000R\000e\000v\000i\000e\000w\000\040\000H\000i\000g\000h\000l\000i\000g\000h\000t\000s}{chapter.4}% 20 +\BOOKMARK [1][-]{section.4.5}{\376\377\000R\000e\000v\000i\000e\000w\000\040\000Q\000u\000e\000s\000t\000i\000o\000n\000s\000\040\000\050\000S\000a\000m\000p\000l\000e\000\051}{chapter.4}% 21 +\BOOKMARK [1][-]{section.4.6}{\376\377\000E\000x\000a\000m\000p\000l\000e\000\040\000E\000v\000a\000l\000u\000a\000t\000i\000o\000n\000s}{chapter.4}% 22 +\BOOKMARK [0][-]{chapter.5}{\376\377\000R\000A\000T\000E\000S\000\040\000F\000O\000R\000\040\0002\0000\0002\0005}{}% 23 +\BOOKMARK [1][-]{section.5.1}{\376\377\000C\000A\000N\000A\000D\000A\000\040\000/\000\040\000Q\000U\000E\000B\000E\000C\000\040\000P\000E\000N\000S\000I\000O\000N\000\040\000P\000L\000A\000N\000\040\000\050\000C\000P\000P\000\040\000/\000\040\000Q\000P\000P\000\051}{chapter.5}% 24 +\BOOKMARK [1][-]{section.5.2}{\376\377\000C\000P\000P\0002\000\040\000C\000O\000N\000T\000R\000I\000B\000U\000T\000I\000O\000N\000\040\000R\000A\000T\000E\000S\000\040\000M\000A\000X\000I\000M\000U\000M\000S}{chapter.5}% 25 +\BOOKMARK [1][-]{section.5.3}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{chapter.5}% 26 +\BOOKMARK [0][-]{chapter.6}{\376\377\000R\000E\000F\000E\000R\000E\000N\000C\000E\000S}{}% 27 +\BOOKMARK [0][-]{chapter.7}{\376\377\000E\000r\000r\000o\000r\000s\000\040\000a\000n\000d\000\040\000E\000r\000r\000a\000t\000a}{}% 28 +\BOOKMARK [0][-]{chapter.8}{\376\377\000G\000l\000o\000s\000s\000a\000r\000y}{}% 29 diff --git a/docs/build/latex/Payroll-Administration_2025.pdf b/docs/build/latex/Payroll-Administration_2025.pdf new file mode 100644 index 0000000..6c0f54c Binary files /dev/null and b/docs/build/latex/Payroll-Administration_2025.pdf differ diff --git a/docs/build/latex/Payroll-Administration_2025.tex b/docs/build/latex/Payroll-Administration_2025.tex new file mode 100644 index 0000000..6640c48 --- /dev/null +++ b/docs/build/latex/Payroll-Administration_2025.tex @@ -0,0 +1,857 @@ +%% Generated by Sphinx. +\def\sphinxdocclass{report} +\documentclass[letterpaper,10pt,english]{sphinxmanual} +\ifdefined\pdfpxdimen + \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen +\fi \sphinxpxdimen=.75bp\relax +\ifdefined\pdfimageresolution + \pdfimageresolution= \numexpr \dimexpr1in\relax/\sphinxpxdimen\relax +\fi +%% let collapsible pdf bookmarks panel have high depth per default +\PassOptionsToPackage{bookmarksdepth=5}{hyperref} + +\PassOptionsToPackage{booktabs}{sphinx} +\PassOptionsToPackage{colorrows}{sphinx} + +\PassOptionsToPackage{warn}{textcomp} +\usepackage[utf8]{inputenc} +\ifdefined\DeclareUnicodeCharacter +% support both utf8 and utf8x syntaxes + \ifdefined\DeclareUnicodeCharacterAsOptional + \def\sphinxDUC#1{\DeclareUnicodeCharacter{"#1}} + \else + \let\sphinxDUC\DeclareUnicodeCharacter + \fi + \sphinxDUC{00A0}{\nobreakspace} + \sphinxDUC{2500}{\sphinxunichar{2500}} + \sphinxDUC{2502}{\sphinxunichar{2502}} + \sphinxDUC{2514}{\sphinxunichar{2514}} + \sphinxDUC{251C}{\sphinxunichar{251C}} + \sphinxDUC{2572}{\textbackslash} +\fi +\usepackage{cmap} +\usepackage[T1]{fontenc} +\usepackage{amsmath,amssymb,amstext} +\usepackage{babel} + + + +\usepackage{tgtermes} +\usepackage{tgheros} +\renewcommand{\ttdefault}{txtt} + + + +\usepackage[Bjarne]{fncychap} +\usepackage{sphinx} + +\fvset{fontsize=auto} +\usepackage{geometry} + + +% Include hyperref last. +\usepackage{hyperref} +% Fix anchor placement for figures with captions. +\usepackage{hypcap}% it must be loaded after hyperref. +% Set up styles of URL: it should be placed after hyperref. +\urlstyle{same} + +\addto\captionsenglish{\renewcommand{\contentsname}{Table of Contents:}} + +\usepackage{sphinxmessages} +\setcounter{tocdepth}{1} + + + +\title{Canadian Payroll Administration (2025)} +\date{Jun 23, 2025} +\release{Fall 2025} +\author{Alexandre Bobkov} +\newcommand{\sphinxlogo}{\vbox{}} +\renewcommand{\releasename}{Release} +\makeindex +\begin{document} + +\ifdefined\shorthandoff + \ifnum\catcode`\=\string=\active\shorthandoff{=}\fi + \ifnum\catcode`\"=\active\shorthandoff{"}\fi +\fi + +\pagestyle{empty} +\sphinxmaketitle +\pagestyle{plain} +\sphinxtableofcontents +\pagestyle{normal} +\phantomsection\label{\detokenize{index::doc}} + + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +Python 3.12.3 +\end{sphinxVerbatim} + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +5 +\end{sphinxVerbatim} + +\sphinxstepscope + + +\chapter{INTRODUCTION} +\label{\detokenize{introduction:introduction}}\label{\detokenize{introduction::doc}} +\sphinxAtStartPar +Through this material, students will gain a comprehensive understanding of core payroll principles and practices. They will explore legislative compliance requirements and the role of key regulatory bodies that govern payroll operations in Canada. + +\sphinxAtStartPar +Students will learn how to: +\begin{itemize} +\item {} +\sphinxAtStartPar +Accurately calculate net pay for salaried, hourly, commissioned, and contract employees. + +\item {} +\sphinxAtStartPar +Identify and meet payroll\sphinxhyphen{}related obligations for businesses. + +\item {} +\sphinxAtStartPar +Navigate the administrative aspects of human resource management that intersect with payroll responsibilities. + +\item {} +\sphinxAtStartPar +Apply payroll procedures using computerized payroll software through practical, hands\sphinxhyphen{}on exercises. + +\item {} +\sphinxAtStartPar +Payroll’s responsibilities from hiring through to termination. + +\item {} +\sphinxAtStartPar +Payroll compliance legislation in practical scenarios. + +\item {} +\sphinxAtStartPar +Individual pay calculation process. + +\end{itemize} + + +\section{Learning Outcomes} +\label{\detokenize{introduction:learning-outcomes}} +\sphinxAtStartPar +The material of this study guide aim to make students to be be able to: +\begin{itemize} +\item {} +\sphinxAtStartPar +Calculate regular individual pay + +\item {} +\sphinxAtStartPar +Calculate non\sphinxhyphen{}regular individual pay + +\item {} +\sphinxAtStartPar +Calculate termination payments + +\item {} +\sphinxAtStartPar +Complete a Record of Employment (ROE) + +\item {} +\sphinxAtStartPar +Apply federal and provincial legislation to payroll, including: +\sphinxhyphen{} The Canada Pension Plan Act +\sphinxhyphen{} The Employment Insurance Act +\sphinxhyphen{} The Income Tax Act +\sphinxhyphen{} Employment Standards legislation +\sphinxhyphen{} Workers’ Compensation Acts +\sphinxhyphen{} Québec\sphinxhyphen{}specific legislation + +\end{itemize} + +\sphinxAtStartPar +In other words, the material covers the foundational knowledge and technical skills needed to confidently perform payroll tasks in a variety of employment settings. + + +\subsection{Payroll Legal Framework} +\label{\detokenize{introduction:payroll-legal-framework}} +\sphinxAtStartPar +The Canadian Payroll Administration system is designed to ensure compliance with the legal framework governing payroll in Canada. This includes adherence to federal and provincial regulations regarding employee compensation, deductions, and reporting requirements. +The system is built to handle various payroll scenarios, including different employment types, tax calculations, and benefit deductions, while ensuring that all transactions are accurately recorded and reported in accordance with the law. + +\sphinxstepscope + + +\chapter{Payroll Accounting} +\label{\detokenize{payroll_accounting:payroll-accounting}}\label{\detokenize{payroll_accounting::doc}} + +\section{Journal Entries} +\label{\detokenize{payroll_accounting:journal-entries}} + +\subsection{Accounting Recap} +\label{\detokenize{payroll_accounting:accounting-recap}} +\begin{center}\(\Sigma \text{ Total Debits} = \Sigma \text{ Total Credits}\) +\end{center} +\begin{center}\(\text{Assets} = \text{Liabilities} + \text{Equity}\) +\end{center}\begin{equation}\label{equation:payroll_accounting:AccountingEquation} +\begin{split}Assets = Liabilities + Equity\end{split} +\end{equation} +\sphinxAtStartPar +Furthermore, we know that: + +\begin{center}\(\text{Equity = Revenue - Expenses}\) +, which leads us to: +\end{center} +\begin{center}\(\text{Assets = Liabilities + (Revenues - Expenses)}\) +\end{center} +\sphinxAtStartPar +Accounting equation \eqref{equation:payroll_accounting:AccountingEquation} + +\sphinxAtStartPar +Payroll accounting is a critical component of the Canadian Payroll Administration system. It involves the systematic recording, analysis, and reporting of payroll transactions to ensure that all financial aspects of employee compensation are accurately reflected in the organization’s financial statements. +Payroll accounting includes the management of employee wages, tax withholdings, benefit deductions, and other payroll\sphinxhyphen{}related expenses. The system is designed to automate these processes, ensuring accuracy and compliance with Canadian payroll regulations. + + +\subsection{Journal Entries} +\label{\detokenize{payroll_accounting:id1}} +\sphinxAtStartPar +Journal entries are a key part of payroll accounting, as they document the financial impact of payroll transactions on the organization’s accounts. Each payroll run generates a series of journal entries that reflect the distribution of wages, taxes, and deductions across various accounts. +These entries are essential for maintaining accurate financial records and ensuring that the organization’s financial statements reflect the true cost of employee compensation. The Canadian Payroll Administration system automates the generation of these journal entries, reducing the risk of errors and ensuring compliance with accounting standards. + +\begin{DUlineblock}{0em} +\item[] DR Payroll Expenses \$10,500.00 +\item[] +\begin{DUlineblock}{\DUlineblockindent} +\item[] CR Payroll Payable \$10,500.00 +\end{DUlineblock} +\end{DUlineblock} + +\sphinxstepscope + + +\chapter{REVIEW QUESTIONS} +\label{\detokenize{review_questions:review-questions}}\label{\detokenize{review_questions::doc}} +\sphinxAtStartPar +This section contains review questions for the material covered in the course. These questions are designed to test your understanding and help reinforce the concepts learned. + + +\section{New Employee Information} +\label{\detokenize{review_questions:new-employee-information}} +\sphinxAtStartPar +Which one of the following is correct? +a. Choice A +b. Choice B +c. Choice C + +\sphinxstepscope + + +\chapter{OBNOARDING EMPLOYEE} +\label{\detokenize{onboarding_employee:obnoarding-employee}}\label{\detokenize{onboarding_employee::doc}} + +\section{Employment Standards Requirements} +\label{\detokenize{onboarding_employee:employment-standards-requirements}} +\sphinxAtStartPar +Each province/territory, as well as the federal government, sets minimum employment standards, including: +\begin{itemize} +\item {} +\sphinxAtStartPar +Minimum wage + +\item {} +\sphinxAtStartPar +Minimum age (may also be governed by other legislation) + +\item {} +\sphinxAtStartPar +Required pay statement information: +\sphinxhyphen{} Employee name +\sphinxhyphen{} Pay period date +\sphinxhyphen{} Rates of pay and hours worked +\sphinxhyphen{} Gross earnings +\sphinxhyphen{} Itemized deductions +\sphinxhyphen{} Net pay + +\end{itemize} + + +\section{Internal Forms} +\label{\detokenize{onboarding_employee:internal-forms}} +\sphinxAtStartPar +Typical commencement package forms include: +\begin{itemize} +\item {} +\sphinxAtStartPar +Authorization for hiring + +\item {} +\sphinxAtStartPar +Direct deposit agreement + +\item {} +\sphinxAtStartPar +Union membership application + +\item {} +\sphinxAtStartPar +Benefits enrollment (e.g., health/dental, pension) + +\item {} +\sphinxAtStartPar +Confidentiality agreement + +\end{itemize} + + +\subsection{Authorization for Hiring} +\label{\detokenize{onboarding_employee:authorization-for-hiring}} +\sphinxAtStartPar +This internal document includes: +\begin{itemize} +\item {} +\sphinxAtStartPar +New employee’s basic info + +\item {} +\sphinxAtStartPar +Start date, department, salary + +\item {} +\sphinxAtStartPar +Probation details + +\item {} +\sphinxAtStartPar +Hiring authority’s signature + +\end{itemize} + +\sphinxAtStartPar +\sphinxstylestrong{Important:} Employer must obtain a valid SIN. A SIN starting with 9 must have a valid expiry date and associated work permit. + + +\subsection{Union Membership} +\label{\detokenize{onboarding_employee:union-membership}} +\sphinxAtStartPar +For unionized workplaces: +\begin{itemize} +\item {} +\sphinxAtStartPar +Union dues are deducted + +\item {} +\sphinxAtStartPar +Employees sign authorization for deduction + +\item {} +\sphinxAtStartPar +Exemptions may apply, but dues equivalent still required + +\end{itemize} + + +\subsection{Benefit Enrollment Forms} +\label{\detokenize{onboarding_employee:benefit-enrollment-forms}} +\sphinxAtStartPar +Forms cover group insurance and pension plans: +\begin{itemize} +\item {} +\sphinxAtStartPar +Employee indicates coverage type + +\item {} +\sphinxAtStartPar +Signatures authorize payroll deductions + +\end{itemize} + + +\subsection{Confidentiality Agreement} +\label{\detokenize{onboarding_employee:confidentiality-agreement}} +\sphinxAtStartPar +A legally binding agreement protecting sensitive company info: +\begin{itemize} +\item {} +\sphinxAtStartPar +Defines proprietary data + +\item {} +\sphinxAtStartPar +Outlines responsibilities, penalties, and timeframe + +\end{itemize} + + +\section{Required Federal and Provincial/Territorial Forms} +\label{\detokenize{onboarding_employee:required-federal-and-provincial-territorial-forms}} +\sphinxAtStartPar +\sphinxstylestrong{Purpose:} Determine correct income tax withholdings. + +\sphinxAtStartPar +Forms: +\begin{itemize} +\item {} +\sphinxAtStartPar +TD1 (federal) + +\item {} +\sphinxAtStartPar +TD1 (provincial/territorial) + +\item {} +\sphinxAtStartPar +Québec employees: also TP\sphinxhyphen{}1015.3\sphinxhyphen{}V + +\end{itemize} + +\sphinxAtStartPar +\sphinxstylestrong{Provincial/territorial withholding} is based on \sphinxstyleemphasis{province of employment}, but tax liability is based on \sphinxstyleemphasis{province of residence}. + +\sphinxAtStartPar +\sphinxstylestrong{Adjustments:} +\begin{itemize} +\item {} +\sphinxAtStartPar +Request extra withholding via TD1 or TP\sphinxhyphen{}1015.3\sphinxhyphen{}V + +\item {} +\sphinxAtStartPar +Request reduction using CRA Form T1213 or RQ Form TP\sphinxhyphen{}1016\sphinxhyphen{}V + +\end{itemize} + +\sphinxAtStartPar +Essential Info on All Forms: +\begin{itemize} +\item {} +\sphinxAtStartPar +Employee name + +\item {} +\sphinxAtStartPar +Date of birth + +\item {} +\sphinxAtStartPar +Social Insurance Number + +\end{itemize} + + +\subsection{Tax Credits (TD1)} +\label{\detokenize{onboarding_employee:tax-credits-td1}}\begin{enumerate} +\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}% +\item {} +\sphinxAtStartPar +Basic personal amount + +\item {} +\sphinxAtStartPar +Canada caregiver (infirm children) + +\item {} +\sphinxAtStartPar +Age amount + +\item {} +\sphinxAtStartPar +Pension income + +\item {} +\sphinxAtStartPar +Tuition + +\item {} +\sphinxAtStartPar +Disability + +\item {} +\sphinxAtStartPar +Spouse/common\sphinxhyphen{}law partner amount + +\item {} +\sphinxAtStartPar +Eligible dependant + +\item {} +\sphinxAtStartPar +Caregiver for infirm spouse or dependant + +\item {} +\sphinxAtStartPar +Caregiver for dependant age 18+ + +\item {} +\sphinxAtStartPar +Transfers from spouse + +\item {} +\sphinxAtStartPar +Transfers from dependant + +\item {} +\sphinxAtStartPar +Total + +\end{enumerate} + +\sphinxAtStartPar +Additional Instructions: +\begin{itemize} +\item {} +\sphinxAtStartPar +Fill out TD1 only if claiming more than basic credit + +\item {} +\sphinxAtStartPar +Québec employees must always complete TP\sphinxhyphen{}1015.3\sphinxhyphen{}V + +\end{itemize} + + +\subsection{Tax Credits (TP\sphinxhyphen{}1015.3\sphinxhyphen{}V \textendash{} Québec)} +\label{\detokenize{onboarding_employee:tax-credits-tp-1015-3-v-quebec}}\begin{itemize} +\item {} +\sphinxAtStartPar +Basic amount + +\item {} +\sphinxAtStartPar +Transfer from spouse + +\item {} +\sphinxAtStartPar +Amount for dependants + +\item {} +\sphinxAtStartPar +Impairment in mental/physical function + +\item {} +\sphinxAtStartPar +Age amount, retirement income, living alone + +\item {} +\sphinxAtStartPar +Career extension + +\end{itemize} + +\sphinxAtStartPar +Deductions: +\begin{itemize} +\item {} +\sphinxAtStartPar +Remote area housing + +\item {} +\sphinxAtStartPar +Deductible support payments + +\end{itemize} + + +\section{Content Review Highlights} +\label{\detokenize{onboarding_employee:content-review-highlights}}\begin{itemize} +\item {} +\sphinxAtStartPar +Consent is required for personal info collection + +\item {} +\sphinxAtStartPar +TD1 and TP\sphinxhyphen{}1015.3\sphinxhyphen{}V are used to calculate source deductions + +\item {} +\sphinxAtStartPar +Claim amounts may differ between federal and provincial forms + +\item {} +\sphinxAtStartPar +Employers must keep the forms on file (do not send to CRA/RQ) + +\end{itemize} + + +\section{Review Questions (Sample)} +\label{\detokenize{onboarding_employee:review-questions-sample}}\begin{enumerate} +\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}% +\item {} +\sphinxAtStartPar +What does an offer letter signature signify? + +\item {} +\sphinxAtStartPar +What documents are included in a commencement package? + +\item {} +\sphinxAtStartPar +Name three common internal forms + +\item {} +\sphinxAtStartPar +What must payroll verify on a hiring form? + +\item {} +\sphinxAtStartPar +What must be checked for SINs starting with “9”? + +\item {} +\sphinxAtStartPar +True/False: Union dues can be deducted without consent. + +\item {} +\sphinxAtStartPar +What authorizes benefit premium deductions? + +\end{enumerate} + + +\section{Example Evaluations} +\label{\detokenize{onboarding_employee:example-evaluations}} +\sphinxAtStartPar +\sphinxstylestrong{Gloria Meyer (Alberta):} +\sphinxhyphen{} Claimed: Basic, eligible dependant, transferred tuition +\sphinxhyphen{} Appears accurate + +\sphinxAtStartPar +\sphinxstylestrong{Luc Laframboise (Québec):} +\sphinxhyphen{} Claimed: Basic, spouse, dependant in school, tuition transfer +\sphinxhyphen{} Appropriate provincial and federal claims made + +\sphinxAtStartPar +\sphinxstylestrong{Ingrid Johansson (Alberta, Single Parent):} +\sphinxhyphen{} Claimed credits for two children +\sphinxhyphen{} \sphinxstylestrong{Overclaimed} dependant credit \textendash{} only one is eligible +\sphinxhyphen{} Needs correction on federal and AB TD1 forms + +\sphinxstepscope + + +\chapter{RATES FOR 2025} +\label{\detokenize{rates_2025:rates-for-2025}}\label{\detokenize{rates_2025::doc}} + +\section{CANADA / QUEBEC PENSION PLAN (CPP / QPP)} +\label{\detokenize{rates_2025:canada-quebec-pension-plan-cpp-qpp}} + +\begin{savenotes}\sphinxattablestart +\sphinxthistablewithglobalstyle +\raggedright +\sphinxcapstartof{table} +\sphinxthecaptionisattop +\sphinxcaption{CANADA / QUEBEC PENSION PLAN (CPP / QPP)}\label{\detokenize{rates_2025:id1}} +\sphinxaftertopcaption +\begin{tabular}[t]{\X{130}{190}\X{30}{190}\X{30}{190}} +\sphinxtoprule +\sphinxstyletheadfamily +\sphinxAtStartPar +Description +&\sphinxstyletheadfamily +\sphinxAtStartPar +CPP +&\sphinxstyletheadfamily +\sphinxAtStartPar +QPP +\\ +\sphinxmidrule +\sphinxtableatstartofbodyhook +\sphinxAtStartPar +Yearly maximum pensionable earnings +& +\sphinxAtStartPar +\$71,300 +& +\sphinxAtStartPar +\$ +\\ +\sphinxhline +\sphinxAtStartPar +Annual maximum contributory earnings +& +\sphinxAtStartPar +\$67,800 +& +\sphinxAtStartPar +\$ +\\ +\sphinxhline +\sphinxAtStartPar +Annual maximum contribution +& +\sphinxAtStartPar +\$3,500 +& +\sphinxAtStartPar +\$ +\\ +\sphinxhline +\sphinxAtStartPar +Employee contribution rate +& +\sphinxAtStartPar +5.95\% +&\\ +\sphinxhline +\sphinxAtStartPar +Employer contribution rate +& +\sphinxAtStartPar +5.95\% +&\\ +\sphinxhline +\sphinxAtStartPar +Basic exemption (Annual) +& +\sphinxAtStartPar +\$3,500 +&\\ +\sphinxhline\begin{quote} + +\sphinxAtStartPar +Basic exemption (Monthly, 12) +\end{quote} +& +\sphinxAtStartPar +\$291.67 +& +\sphinxAtStartPar +\$ +\\ +\sphinxhline\begin{quote} + +\sphinxAtStartPar +Basic exemption (Weekly, 52) +\end{quote} +& +\sphinxAtStartPar +\$67.31 +& +\sphinxAtStartPar +\$ +\\ +\sphinxhline\begin{quote} + +\sphinxAtStartPar +Basic exemption (Weekly, 53) +\end{quote} +& +\sphinxAtStartPar +\$66.04 +& +\sphinxAtStartPar +\$ +\\ +\sphinxhline\begin{quote} + +\sphinxAtStartPar +Basic exemption (Semi\sphinxhyphen{}monthly, 24) +\end{quote} +& +\sphinxAtStartPar +\$145.83 +& +\sphinxAtStartPar +\$ +\\ +\sphinxhline\begin{quote} + +\sphinxAtStartPar +Basic exemption (Bi\sphinxhyphen{}weekly, 26) +\end{quote} +& +\sphinxAtStartPar +\$134.61 +& +\sphinxAtStartPar +\$ +\\ +\sphinxbottomrule +\end{tabular} +\sphinxtableafterendhook\par +\sphinxattableend\end{savenotes} + + +\section{CPP2 CONTRIBUTION RATES MAXIMUMS} +\label{\detokenize{rates_2025:cpp2-contribution-rates-maximums}} + +\begin{savenotes}\sphinxattablestart +\sphinxthistablewithglobalstyle +\raggedright +\sphinxcapstartof{table} +\sphinxthecaptionisattop +\sphinxcaption{CPP2 Contribution Rates Maximums}\label{\detokenize{rates_2025:id2}} +\sphinxaftertopcaption +\begin{tabular}[t]{\X{130}{160}\X{30}{160}} +\sphinxtoprule +\sphinxstyletheadfamily +\sphinxAtStartPar +Description +&\sphinxstyletheadfamily +\sphinxAtStartPar +Ammount +\\ +\sphinxmidrule +\sphinxtableatstartofbodyhook +\sphinxAtStartPar +Additional maximum annual pensionable earnings +& +\sphinxAtStartPar +\$81,200 +\\ +\sphinxhline +\sphinxAtStartPar +Employee and employer contribution rate +& +\sphinxAtStartPar +4\% +\\ +\sphinxhline +\sphinxAtStartPar +Maximum employee and employer contribution +& +\sphinxAtStartPar +\$396 +\\ +\sphinxhline +\sphinxAtStartPar +Maimum annual self\sphinxhyphen{}employed contribution +& +\sphinxAtStartPar +\$792 +\\ +\sphinxbottomrule +\end{tabular} +\sphinxtableafterendhook\par +\sphinxattableend\end{savenotes} + + +\section{References} +\label{\detokenize{rates_2025:references}} +\sphinxAtStartPar +\sphinxhref{https://laws-lois.justice.gc.ca/eng/acts/C-8/page-5.html\#docCont}{CPP Maximum contributory earnings} + +\sphinxAtStartPar +\sphinxhref{https://laws-lois.justice.gc.ca/eng/acts/C-8/page-3.html\#docCont}{Second additional CPP contributions} + +\sphinxstepscope + + +\chapter{REFERENCES} +\label{\detokenize{references:references}}\label{\detokenize{references::doc}} +\sphinxstepscope + + +\chapter{Errors and Errata} +\label{\detokenize{errata:errors-and-errata}}\label{\detokenize{errata::doc}} + +\chapter{Glossary} +\label{\detokenize{index:glossary}}\begin{itemize} +\item {} +\sphinxAtStartPar +\DUrole{xref}{\DUrole{std}{\DUrole{std-ref}{genindex}}} + +\end{itemize} + + + +\renewcommand{\indexname}{Index} +\printindex +\end{document} \ No newline at end of file diff --git a/docs/build/latex/Payroll-Administration_2025.toc b/docs/build/latex/Payroll-Administration_2025.toc new file mode 100644 index 0000000..980f4e7 --- /dev/null +++ b/docs/build/latex/Payroll-Administration_2025.toc @@ -0,0 +1,30 @@ +\babel@toc {english}{}\relax +\contentsline {chapter}{\numberline {1}INTRODUCTION}{3}{chapter.1}% +\contentsline {section}{\numberline {1.1}Learning Outcomes}{3}{section.1.1}% +\contentsline {subsection}{\numberline {1.1.1}Payroll Legal Framework}{3}{subsection.1.1.1}% +\contentsline {chapter}{\numberline {2}Payroll Accounting}{5}{chapter.2}% +\contentsline {section}{\numberline {2.1}Journal Entries}{5}{section.2.1}% +\contentsline {subsection}{\numberline {2.1.1}Accounting Recap}{5}{subsection.2.1.1}% +\contentsline {subsection}{\numberline {2.1.2}Journal Entries}{5}{subsection.2.1.2}% +\contentsline {chapter}{\numberline {3}REVIEW QUESTIONS}{7}{chapter.3}% +\contentsline {section}{\numberline {3.1}New Employee Information}{7}{section.3.1}% +\contentsline {chapter}{\numberline {4}OBNOARDING EMPLOYEE}{9}{chapter.4}% +\contentsline {section}{\numberline {4.1}Employment Standards Requirements}{9}{section.4.1}% +\contentsline {section}{\numberline {4.2}Internal Forms}{9}{section.4.2}% +\contentsline {subsection}{\numberline {4.2.1}Authorization for Hiring}{9}{subsection.4.2.1}% +\contentsline {subsection}{\numberline {4.2.2}Union Membership}{9}{subsection.4.2.2}% +\contentsline {subsection}{\numberline {4.2.3}Benefit Enrollment Forms}{10}{subsection.4.2.3}% +\contentsline {subsection}{\numberline {4.2.4}Confidentiality Agreement}{10}{subsection.4.2.4}% +\contentsline {section}{\numberline {4.3}Required Federal and Provincial/Territorial Forms}{10}{section.4.3}% +\contentsline {subsection}{\numberline {4.3.1}Tax Credits (TD1)}{10}{subsection.4.3.1}% +\contentsline {subsection}{\numberline {4.3.2}Tax Credits (TP\sphinxhyphen {}1015.3\sphinxhyphen {}V \textendash {} Québec)}{11}{subsection.4.3.2}% +\contentsline {section}{\numberline {4.4}Content Review Highlights}{11}{section.4.4}% +\contentsline {section}{\numberline {4.5}Review Questions (Sample)}{11}{section.4.5}% +\contentsline {section}{\numberline {4.6}Example Evaluations}{12}{section.4.6}% +\contentsline {chapter}{\numberline {5}RATES FOR 2025}{13}{chapter.5}% +\contentsline {section}{\numberline {5.1}CANADA / QUEBEC PENSION PLAN (CPP / QPP)}{13}{section.5.1}% +\contentsline {section}{\numberline {5.2}CPP2 CONTRIBUTION RATES MAXIMUMS}{13}{section.5.2}% +\contentsline {section}{\numberline {5.3}References}{14}{section.5.3}% +\contentsline {chapter}{\numberline {6}REFERENCES}{15}{chapter.6}% +\contentsline {chapter}{\numberline {7}Errors and Errata}{17}{chapter.7}% +\contentsline {chapter}{\numberline {8}Glossary}{19}{chapter.8}% diff --git a/docs/build/latex/latexmkjarc b/docs/build/latex/latexmkjarc new file mode 100644 index 0000000..6e36b19 --- /dev/null +++ b/docs/build/latex/latexmkjarc @@ -0,0 +1,22 @@ +$latex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' -kanji=utf8 %O %S'; +$dvipdf = 'dvipdfmx %O -o %D %S'; +$makeindex = 'internal mendex %S %B %D'; +sub mendex { + my ($source, $basename, $destination) = @_; + my $dictfile = $basename . ".dic"; + unlink($destination); + system("mendex", "-U", "-f", "-d", $dictfile, "-s", "python.ist", $source); + if ($? > 0) { + print("mendex exited with error code $? (ignored)\n"); + } + if (!-e $destination) { + # create an empty .ind file if nothing + open(FH, ">" . $destination); + close(FH); + } + return 0; +} +add_cus_dep( "glo", "gls", 0, "makeglo" ); +sub makeglo { + return system( "mendex -J -f -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); +} \ No newline at end of file diff --git a/docs/build/latex/latexmkrc b/docs/build/latex/latexmkrc new file mode 100644 index 0000000..bba17fa --- /dev/null +++ b/docs/build/latex/latexmkrc @@ -0,0 +1,9 @@ +$latex = 'latex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$pdflatex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$lualatex = 'lualatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$xelatex = 'xelatex --no-pdf ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$makeindex = 'makeindex -s python.ist %O -o %D %S'; +add_cus_dep( "glo", "gls", 0, "makeglo" ); +sub makeglo { + return system( "makeindex -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); +} \ No newline at end of file diff --git a/docs/build/latex/make.bat b/docs/build/latex/make.bat new file mode 100644 index 0000000..94bda21 --- /dev/null +++ b/docs/build/latex/make.bat @@ -0,0 +1,31 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +pushd %~dp0 + +set PDFLATEX=latexmk -pdf -dvi- -ps- + +set "LATEXOPTS= " + +if "%1" == "" goto all-pdf + +if "%1" == "all-pdf" ( + :all-pdf + for %%i in (*.tex) do ( + %PDFLATEX% %LATEXMKOPTS% %%i + ) + goto end +) + +if "%1" == "all-pdf-ja" ( + goto all-pdf +) + +if "%1" == "clean" ( + del /q /s *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz *.fls *.fdb_latexmk + goto end +) + +:end +popd \ No newline at end of file diff --git a/docs/build/latex/python.ist b/docs/build/latex/python.ist new file mode 100644 index 0000000..70536a6 --- /dev/null +++ b/docs/build/latex/python.ist @@ -0,0 +1,16 @@ +line_max 100 +headings_flag 1 +heading_prefix " \\bigletter " + +preamble "\\begin{sphinxtheindex} +\\let\\bigletter\\sphinxstyleindexlettergroup +\\let\\spxpagem \\sphinxstyleindexpagemain +\\let\\spxentry \\sphinxstyleindexentry +\\let\\spxextra \\sphinxstyleindexextra + +" + +postamble "\n\n\\end{sphinxtheindex}\n" + +symhead_positive "{\\sphinxsymbolsname}" +numhead_positive "{\\sphinxnumbersname}" diff --git a/docs/build/latex/sphinx.sty b/docs/build/latex/sphinx.sty new file mode 100644 index 0000000..8837485 --- /dev/null +++ b/docs/build/latex/sphinx.sty @@ -0,0 +1,1196 @@ +% +% sphinx.sty +% +% Adapted from the old python.sty, mostly written by Fred Drake, +% by Georg Brandl. +% This has now grown to become a full-fledged LaTeX support, split +% among multiple files, some of which provide features unavailable +% from usual LaTeX packages in interaction with the mark-up produced +% by the Sphinx LaTeX writer. + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{sphinx}[2024/11/23 v8.2.0 Sphinx LaTeX package (sphinx-doc)] + +% provides \ltx@ifundefined +% (many packages load ltxcmds: graphicx does for pdftex and lualatex but +% not xelatex, and anyhow kvoptions does, but it may be needed in future to +% use \sphinxdeprecationwarning earlier, and it needs \ltx@ifundefined) +\RequirePackage{ltxcmds} + +%% for deprecation warnings +\newcommand\sphinxdeprecationwarning[4]{% #1 the deprecated macro or name, +% #2 = when deprecated, #3 = when removed, #4 = additional info + {% limit scope of \spx@tempa, \AtEndDocument works even if nested. + \edef\spx@tempa{\detokenize{#1}}% + \ltx@ifundefined{sphinx_depr_\spx@tempa}{% + \global\expandafter\let\csname sphinx_depr_\spx@tempa\endcsname\spx@tempa + \expandafter\AtEndDocument\expandafter{\expandafter\let\expandafter + \sphinxdeprecatedmacro\csname sphinx_depr_\spx@tempa\endcsname + \PackageWarningNoLine{sphinx}{^^J**** SPHINX DEPRECATION WARNING:^^J + \sphinxdeprecatedmacro^^J + \@spaces- is deprecated at Sphinx #2^^J + \@spaces- and removed at Sphinx #3.^^J + #4^^J****}}% + }{% warning already emitted (at end of latex log), don't repeat + }% + }% end of scope limiting group for \spx@tempa +} +%% important build warnings use an undefined reference to induce latexmk +%% into complaining (once per warning) at very end of console output +\newcommand\sphinxbuildwarning[2][]{% + \ifcsname sphinx_emitted_#2\endcsname + \else + \global\expandafter\let\csname sphinx_emitted_#2\endcsname\@empty + \AtEndDocument{\hbox{% should the printing of text be made conditional on + % some boolean? (7.4.0 answers this by adding an + % optional argument and testing it here for emptiness + % but no usage is made of this novelty yet.) + \if\relax\detokenize{#1}\relax + % No [], print a red warning text at very end of document + \bfseries\color{red}% + \@nameuse{sphinx_buildwarning_#2}% + \fi + % place an undefined reference deliberately + \let\nfss@text\@gobble % no ?? + \ref{!!\@nameuse{sphinx_buildwarning_#2}}% + }% + }% + \fi +} +\@namedef{sphinx_buildwarning_badtitlesec}{% + Your system has titlesec version 2.10.1 which causes disappearance + of section numbers; check the latex log warning for details} +\@namedef{sphinx_buildwarning_booktabs}{% + Some tables with booktabs class (check latex log) but booktabs + package not loaded; add its loading to the latex preamble}% +\@namedef{sphinx_buildwarning_badfootnotes}{% + Footnote rendering may have had problems, due to extra package or + document class; check latex log for instructions}% +\@namedef{sphinx_buildwarning_badiconpackage}{% + You have set iconpackage=\spx@opt@iconpackage, but this LaTeX package + is not found}% + +%% OPTION HANDLING +% +% We generally first handle options then load packages, but we need +% \definecolor and \colorlet from xcolor to handle the options. + +% Support for colour options +% -------------------------- +% At 7.4.0, package xcolor is required (which has allowed to get rid of +% annoying fall-back branches). Internals here got refactored to some extent. +% +% MEMO: xcolor \fcolorbox coloured boxes render better in some PDF viewers +% than with color package \fcolorbox. Since 1.6.3, Sphinx uses only its own +% custom variant of \fcolorbox when handling code-blocks. But \fcolorbox +% appears also in Pygmentize output mark-up. +% Should Sphinx load xcolor with its dvipsnames and svgnames options? +\RequirePackage{xcolor} + +% the \colorlet of xcolor is overkill for our internal usage here +\newcommand{\sphinxcolorlet}[2] + {\expandafter\let\csname\@backslashchar color@#1\expandafter\endcsname + \csname\@backslashchar color@#2\endcsname } + +% (5.3.0) Allow colour options to use both the \definecolor and the \colorlet +% syntaxes, for example VerbatimColor={gray}{0.9} or VerbatimColor=red!10 +% In the latter case we need the real \colorlet from xcolor package. +% Prior to 7.4.0 xcolor was not required and thus \spx@colorlet was configured +% to raise a warning in case of absence of xcolor. +\def\spx@defineorletcolor#1{% + \def\spx@definedcolor{{#1}}% + \futurelet\spx@token\spx@defineorlet} +\def\spx@defineorlet{% + \ifx\spx@token\bgroup + \expandafter\spx@definecolor\else\expandafter\spx@colorlet\fi} +\def\spx@colorlet#1\relax{\expandafter\colorlet\spx@definedcolor{#1}} +\def\spx@definecolor{\expandafter\definecolor\spx@definedcolor} +% These internals refactored at 7.4.0: +\newcommand*{\spx@DeclareColorOption}[3][]{% +% #1 = almost always "sphinx" but left empty for a few for legacy reasons +% #2 = option name, but internal colour name is #1#2 (i.e. with prefix) +% #3 = initial default colour with either \definecolor or \colorlet syntax + % Set the initial default + \spx@defineorletcolor{#1#2}#3\relax + % Set the key handler to accept both \definecolor and \colorlet syntax + % The key name does not have the #1 prefix from the colour name + \define@key{sphinx}{#2}{\spx@defineorletcolor{#1#2}##1\relax}% +}% + +% Handle options via "kvoptions" (later loaded by hyperref anyhow) +\RequirePackage{kvoptions} +\SetupKeyvalOptions{prefix=spx@opt@} % use \spx@opt@ prefix + +% Optional usage of booktabs package for tables +\DeclareBoolOption[false]{booktabs} +\DeclareBoolOption[false]{borderless} +\DeclareBoolOption[true]{booktabscolorgaps} +\DeclareVoidOption{booktabsnogaps}{% + \ifx\@nodocument\relax + % in body + \expandafter\@firstofone + \else + % in preamble, wait for at begin document + \expandafter\AtBeginDocument + \fi + {\ifdefined\abovetopsep % silently do nothing if booktabs not loaded + \abovetopsep\z@\belowrulesep\z@\aboverulesep\z@\belowbottomsep\z@ + \fi + }% +} +% Coloured table rows +\DeclareBoolOption[false]{colorrows} +% Sphinx legacy text layout: 1in margins on all four sides +\ifx\@jsc@uplatextrue\@undefined +\DeclareStringOption[1in]{hmargin} +\DeclareStringOption[1in]{vmargin} +\DeclareStringOption[.5in]{marginpar} +\else +% Japanese standard document classes handle \mag in a special way +\DeclareStringOption[\inv@mag in]{hmargin} +\DeclareStringOption[\inv@mag in]{vmargin} +\DeclareStringOption[.5\dimexpr\inv@mag in\relax]{marginpar} +\fi + +\DeclareStringOption[0]{maxlistdepth}% \newcommand*\spx@opt@maxlistdepth{0} +\DeclareStringOption[-1]{numfigreset} +\DeclareBoolOption[false]{nonumfigreset} +\DeclareBoolOption[false]{mathnumfig} +\DeclareStringOption[.]{mathnumsep} +\define@key{sphinx}{bookmarksdepth}{\AtBeginDocument{\hypersetup{bookmarksdepth=#1}}} +\AtBeginDocument{\define@key{sphinx}{bookmarksdepth}{\hypersetup{bookmarksdepth=#1}}} +% \DeclareBoolOption[false]{usespart}% not used + +% Code-blocks +% ----------- +% +% INFO: the keys for padding and border widths were extended at 5.1.0, +% and legacy names for user interface were kept, but their definitions +% are delayed further down. The legacy internally used dimen registers +% \sphinxverbatimborder and \sphinxverbatimsep got removed at 6.2.0. +% More code-blocks related options are found in "CSS" part below. +\DeclareBoolOption[true]{verbatimwithframe} +\DeclareBoolOption[true]{verbatimwrapslines} +\DeclareBoolOption[false]{verbatimforcewraps} +\DeclareStringOption[3]{verbatimmaxoverfull} +\DeclareStringOption[100]{verbatimmaxunderfull} +\DeclareBoolOption[true]{verbatimhintsturnover} +\DeclareBoolOption[true]{inlineliteralwraps} +\DeclareStringOption[t]{literalblockcappos} +\DeclareStringOption[r]{verbatimcontinuedalign} +\DeclareStringOption[r]{verbatimcontinuesalign} +% parsed literal +\DeclareBoolOption[true]{parsedliteralwraps} +% \textvisiblespace for compatibility with fontspec+XeTeX/LuaTeX +\DeclareStringOption[\textcolor{red}{\textvisiblespace}]{verbatimvisiblespace} +\DeclareStringOption % must use braces to hide the brackets + [{\makebox[2\fontcharwd\font`\x][r]{\textcolor{red}{\tiny$\m@th\hookrightarrow$}}}]% + {verbatimcontinued} + +% Topic boxes +% ----------- +% +% 5.1.0 added new keys for configuration. The legacy keys shadowsep, +% shadowsize, shadowrule were kept for backward compatibility. +% 5.1.2 fixed some bugs. +% +% All configuration is now to be found in the "CSS" section below. +% +% 6.2.0 removed \sphinxshadowsep, \sphinxshadowsize, \sphinxshadowrule +% \dimen registers + +% Footnotes +% --------- +\DeclareStringOption[\mbox{ }]{AtStartFootnote} +% we need a public macro name for direct use in latex file +\newcommand*{\sphinxAtStartFootnote}{\spx@opt@AtStartFootnote} +% no such need for this one, as it is used inside other macros +\DeclareStringOption[\leavevmode\unskip]{BeforeFootnote} + +% Some font styling +% ----------------- +% TODO: the replacement of old syntax \py@HeaderFamily as used +% in sphinxlatexstyle{page,headings}.sty and sphinx{manual,howto}.cls +% has never been really put in place. Hence this isolated tidbit here. +\DeclareStringOption[\sffamily\bfseries]{HeaderFamily} + +% Some legacy colour options +% -------------------------- +% +\spx@DeclareColorOption{TitleColor}{{rgb}{0.126,0.263,0.361}} +\spx@DeclareColorOption{InnerLinkColor}{{rgb}{0.208,0.374,0.486}} +\spx@DeclareColorOption{OuterLinkColor}{{rgb}{0.216,0.439,0.388}} +% The Verbatim ones are "legacy" only since 5.1.0... call it "new-legacy" ;-) +\spx@DeclareColorOption{VerbatimColor}{{RGB}{242,242,242}}% same as {gray}{0.95} +\spx@DeclareColorOption{VerbatimBorderColor}{{RGB}{32,32,32}} +% All other colours will be internally assigned a "sphinx" prefix + +% Table row colors (since 6.0.0) +% ---------------- +\spx@DeclareColorOption[sphinx]{TableRowColorHeader}{{gray}{0.86}} +\spx@DeclareColorOption[sphinx]{TableRowColorOdd}{{gray}{0.92}} +\spx@DeclareColorOption[sphinx]{TableRowColorEven}{{gray}{0.98}} +% if not set, the "Merge" colour will keep in sync with the "Row" colour +\def\sphinxTableMergeColorHeader{sphinxTableRowColorHeader} +\define@key{sphinx}{TableMergeColorHeader}{% + \spx@defineorletcolor{sphinxTableMergeColorHeader}#1\relax + \def\sphinxTableMergeColorHeader{sphinxTableMergeColorHeader}% +}% +\def\sphinxTableMergeColorOdd{sphinxTableRowColorOdd} +\define@key{sphinx}{TableMergeColorOdd}{% + \spx@defineorletcolor{sphinxTableMergeColorOdd}#1\relax + \def\sphinxTableMergeColorOdd{sphinxTableMergeColorOdd}% +}% +\def\sphinxTableMergeColorEven{sphinxTableRowColorEven} +\define@key{sphinx}{TableMergeColorEven}{% + \spx@defineorletcolor{sphinxTableMergeColorEven}#1\relax + \def\sphinxTableMergeColorEven{sphinxTableMergeColorEven}% +}% +% Default color chosen to be as in minted.sty LaTeX package! +\spx@DeclareColorOption[sphinx]{VerbatimHighlightColor}{{rgb}{0.878,1,1}} + +% Notices/admonitions +% ------------------- +% +% 5.1.0 added much customizability to warning, caution, attention, danger and +% error types of notices via an enhanced sphinxheavybox environment. +% +% 6.2.0 added the possibility to use the same kind of rendering also for +% note, hint, important, and tip. +% +% Legacy user interface for options was kept working. All of it is handled in +% the "CSS" section below. +% +% 6.2.0 added booleans to serve internally as a record of whether the +% note, hint, important and tip admonitions used the legacy "lightbox" or +% the then enhanced "heavybox" environment. +% +% 7.4.0 uses "heavybox" environment from sphinxlatexadmonitions in all cases, +% hence the booleans mentioned above have been removed as well as the rather +% complex TeX code which was done so that these booleans were made true if +% and only if the CSS-named keys had been made usage of via 'sphinxsetup'. +% +% The "light style" implemented in sphinxlatexadmonitions.sty as +% "sphinxlightbox" is not used. Also, admonitions by default have a "title +% row", and the corresponding options are only named in the CSS style which is +% implemented further below. Here we define options having a legacy name. +% +% seealso directive is also using "heavybox" at 7.4.0 acquiring the same +% customizability as admonitions. +% todo directive also. +\definecolor{sphinx-admonition-bgcolor} {RGB}{247, 247, 247}% #F7F7F7 +\definecolor{sphinx-admonition-bordercolor} {RGB}{134, 152, 155}% #86989B +\definecolor{sphinx-warning-bordercolor} {RGB}{148, 0, 0}% #940000 +\definecolor{sphinx-error-bordercolor} {RGB}{180, 0, 0}% #B40000 +\spx@DeclareColorOption[sphinx]{noteBorderColor} {sphinx-admonition-bordercolor} +\spx@DeclareColorOption[sphinx]{hintBorderColor} {sphinx-admonition-bordercolor} +\spx@DeclareColorOption[sphinx]{importantBorderColor}{sphinx-admonition-bordercolor} +\spx@DeclareColorOption[sphinx]{tipBorderColor} {sphinx-admonition-bordercolor} +\spx@DeclareColorOption[sphinx]{seealsoBorderColor} {sphinx-admonition-bordercolor}% 7.4.0 +\spx@DeclareColorOption[sphinx]{todoBorderColor} {sphinx-admonition-bordercolor}% 7.4.0 +% +\spx@DeclareColorOption[sphinx]{noteBgColor} {sphinx-admonition-bgcolor} +\spx@DeclareColorOption[sphinx]{hintBgColor} {sphinx-admonition-bgcolor} +\spx@DeclareColorOption[sphinx]{importantBgColor}{sphinx-admonition-bgcolor} +\spx@DeclareColorOption[sphinx]{tipBgColor} {sphinx-admonition-bgcolor} +\spx@DeclareColorOption[sphinx]{seealsoBgColor} {sphinx-admonition-bgcolor}% 7.4.0 +\spx@DeclareColorOption[sphinx]{todoBgColor} {sphinx-admonition-bgcolor}% 7.4.0 +% +\spx@DeclareColorOption[sphinx]{warningBorderColor} {sphinx-warning-bordercolor} +\spx@DeclareColorOption[sphinx]{cautionBorderColor} {sphinx-warning-bordercolor} +\spx@DeclareColorOption[sphinx]{attentionBorderColor}{sphinx-warning-bordercolor} +\spx@DeclareColorOption[sphinx]{dangerBorderColor} {sphinx-warning-bordercolor} +\spx@DeclareColorOption[sphinx]{errorBorderColor} {sphinx-error-bordercolor} +% +\spx@DeclareColorOption[sphinx]{warningBgColor} {sphinx-admonition-bgcolor} +\spx@DeclareColorOption[sphinx]{cautionBgColor} {sphinx-admonition-bgcolor} +\spx@DeclareColorOption[sphinx]{attentionBgColor}{sphinx-admonition-bgcolor} +\spx@DeclareColorOption[sphinx]{dangerBgColor} {sphinx-admonition-bgcolor} +\spx@DeclareColorOption[sphinx]{errorBgColor} {sphinx-admonition-bgcolor} +% +%%%%%%%% +% +% Additions of CSS-like keys at 5.1.0 (and possibility of rounded boxes) +% ----------------------------------- +% +% These CSS-named alikes allow to configure 4 border widths, 4 padding seps, 4 +% corner radii, optional shadow, border color, background color, shadow color. +% +% In future, an alternative user interface will perhaps be provided to parse +% genuine CSS, but this will be easier to do in Python than in LaTeX. +% +% Refactoring (and extension) at 6.2.0 +% ------------------------------------ +% +% 6.2.0 batch defines in one go all auxiliaries for code-blocks, topics, and +% admonitions. The needed steps to maintain the legacy option names working +% and to set some specific defaults are handled in a second step. +% +% This allowed to: +% +% - associate these CSS-named options also to note, hint, important, and tip +% which thus can access the full customizability of sphinxheavybox if they use +% it. +% +% - provide a \sphinxbox command for boxing inline text elements with the same +% full customizability. +% +% The \dimen's \sphinxverbatimborder, \sphinxverbatimsep, \sphinxshadowsep, +% \sphinxshadowsize, and \sphinxshadowrule, which had been deprecated have +% finally been removed entirely. No more \dimen register is used here only +% storage in macros. +% +% Restyling at 7.4.0 with new defaults for all admonition types +% ------------------------------------------------------------- +% +% So far the 5.1.0 added possibilities for fancier boxes had been used by +% default only for code-blocks, and admonitions kept their old-fashioned +% legacy styles. At 7.4.0, as a follow-up to the revamped styles of +% admonitions in the HTML sphinx13 theme (PR #12439), it is decided to +% apply similar styling for PDF output. Also the seealso directive +% is handled as an admonition with the same customizability. And the +% todo directive. +% +% 8.1.0: style separately topic, contents, and sidebar directives +% --------------------------------------------------------------- +% +% And use some title row also for them (but without icon, per default). +% +\def\spxstring@none{none} +\def\spxstring@clone{clone} +% +% Border keys +% At 7.4.0 refactoring to avoid defining legacy \spx@@border +% macros which are (now) used nowhere, only @top, @right, @bottom, @left. +\def\spx@tempa#1{% #1 = macro prefix + \expandafter\spx@tempb + \csname #1border@top\expandafter\endcsname + \csname #1border@right\expandafter\endcsname + \csname #1border@bottom\expandafter\endcsname + \csname #1border@left\expandafter\endcsname + \csname if#1border@open\expandafter\endcsname + \csname #1border@opentrue\expandafter\endcsname + \csname #1border@openfalse\endcsname +}% +\def\spx@tempb #1#2#3#4#5#6#7#8#9{% #8 = option prefix + \define@key{sphinx}{#8border-top-width}{\def#1{##1}}% + \define@key{sphinx}{#8border-right-width}{\def#2{##1}}% + \define@key{sphinx}{#8border-bottom-width}{\def#3{##1}}% + \define@key{sphinx}{#8border-left-width}{\def#4{##1}}% + \define@key{sphinx}{#8border-width}{% + % MEMO: not immediately expanded, should this be changed? + \def#1{##1}\let#2#1\let#3#1\let#4#1% + }% + \newif#5% + % 6.2.0 has added support for box-decoration-break also to admonition + % directives, formerly the option setting was ignored for them. + \define@key{sphinx}{#8box-decoration-break}% + {\begingroup\edef\spx@tempa{##1}\expandafter\endgroup + \ifx\spx@tempa\spxstring@clone#7\else#6\fi}% + % 7.4.0 sets the default behaviour to "slice" not only for code-blocks but + % also for admonitions, as the latter now have a background colour each. + #6% + % #8 = option prefix (with underscore), #9 = legacy option name + % keep legacy option names as aliases to new-named options + \expandafter\let\csname KV@sphinx@#9\expandafter\endcsname + \csname KV@sphinx@#8border-width\endcsname + % init border-width (fetches next argument) + \csname KV@sphinx@#8border-width\endcsname +} +% MEMO: from 6.2.0 to 7.4.0 (excluive) \fboxrule was used in the first +% two, and was resolved only at location of use. At 7.4.0, we again +% use 0.4pt rather and not \fboxrule dimen register. +% macro prefix option prefix legacy option init value +\spx@tempa{spx@pre@} {pre_} {verbatimborder} {0.4pt} +\spx@tempa{spx@topic@} {div.topic_} {shadowrule} {0.5pt}% mod. at 7.4.0 +\spx@tempa{spx@contents@} {div.contents_} {shadowrule} {0.5pt}% 8.1.0 +\spx@tempa{spx@sidebar@} {div.sidebar_} {shadowrule} {1pt}% 8.1.0 +% let legacy shadowrule key set all topic/contents/sidebar border +% keys to the common value given by user to shadowrule +\def\KV@sphinx@shadowrule #1{% + \@nameuse{KV@sphinx@div.topic_border-width}{#1}% + \@nameuse{KV@sphinx@div.contents_border-width}{#1}% + \@nameuse{KV@sphinx@div.sidebar_border-width}{#1}% +}% +\spx@tempa{spx@note@} {div.note_} {noteborder} {0.5pt} +\spx@tempa{spx@hint@} {div.hint_} {hintborder} {0.5pt} +\spx@tempa{spx@important@}{div.important_}{importantborder}{0.5pt} +\spx@tempa{spx@tip@} {div.tip_} {tipborder} {0.5pt} +\spx@tempa{spx@seealso@} {div.seealso_} {seealsoborder} {0.5pt}% new at 7.4.0 +\spx@tempa{spx@todo@} {div.todo_} {todoborder} {0.5pt}% new at 7.4.0 +\spx@tempa{spx@warning@} {div.warning_} {warningborder} {1pt} +\spx@tempa{spx@caution@} {div.caution_} {cautionborder} {1pt} +\spx@tempa{spx@attention@}{div.attention_}{attentionborder}{1pt} +\spx@tempa{spx@danger@} {div.danger_} {dangerborder} {1pt} +\spx@tempa{spx@error@} {div.error_} {errorborder} {1.25pt}% mod. at 7.4.0 +% this one new at 6.2.0: (we do not create a "legacy name" for it) +\spx@tempa{spx@box@} {box_} {box_border-width}{0.4pt} +% Reset default box-decoration-break style to "clone" for \sphinxbox, +% but anyhow this is ignored as \sphinxbox produces unbreakable boxes. +\spx@box@border@openfalse + +% Padding keys +% At 7.4.0, \spx@@padding internal macros removed, only @top, @right, +% @bottom, @left are actually needed by sphinxpackageboxes.sty. +\def\spx@tempa#1{% + \expandafter\spx@tempb + \csname #1padding@top\expandafter\endcsname + \csname #1padding@right\expandafter\endcsname + \csname #1padding@bottom\expandafter\endcsname + \csname #1padding@left\endcsname +}% +\def\spx@tempb #1#2#3#4#5#6#7#8#9{% #5 = option prefix + \define@key{sphinx}{#5padding-top}{\def#1{##1}}% + \define@key{sphinx}{#5padding-right}{\def#2{##1}}% + \define@key{sphinx}{#5padding-bottom}{\def#3{##1}}% + \define@key{sphinx}{#5padding-left}{\def#4{##1}}% + \define@key{sphinx}{#5padding}{% + \def#1{##1}\let#2#1\let#3#1\let#4#1% + }% + % initial defaults + \def#1{#6}\def#2{#7}\def#3{#8}\def#4{#9}% +} +% MEMO: prior to 6.2.0 the \fboxsep value (3pt, a priori) was frozen here via +% a \dimen assignment done immediately. From 6.2.0 to 7.4.0 an unfrozen +% \fboxsep was used, and at 7.4.0 it is again explicit 3pt. +% The defaults for admonitions were all modified at 7.4.0. +% For topic/contents and all admonitions the horizontal padding plus borders +% are put inside the text area (i.e. do not go into the margins). +% In order for perfect exact same vertical alignment of contents from all such +% directives, the value of horizontal border-width+padding is kept constant +% (equal to 7.5pt since 7.4.0). +% 8.1.0 styles separately topic, contents, and sidebar. +% #1 macro prefix #6 option prefix top right bottom left +\spx@tempa{spx@pre@} {pre_} {3pt}{3pt}{3pt}{3pt} +\spx@tempa{spx@topic@} {div.topic_} {6pt}{7pt}{6pt}{7pt}% mod. at 8.1.0 +% contents styling inherits at 8.1.0 the former 7.4.0 topic defaults +\spx@tempa{spx@contents@} {div.contents_} {10pt}{7pt}{12pt}{7pt}% 8.1.0 +\spx@tempa{spx@sidebar@} {div.sidebar_} {6pt}{6.5pt}{6pt}{6.5pt}% 8.1.0 +% 7.4.0 drops legacy settings which linked strangely padding with border width +\spx@tempa{spx@note@} {div.note_} {6pt}{7pt}{6pt}{7pt} +\spx@tempa{spx@hint@} {div.hint_} {6pt}{7pt}{6pt}{7pt} +\spx@tempa{spx@important@}{div.important_} {6pt}{7pt}{6pt}{7pt} +\spx@tempa{spx@tip@} {div.tip_} {6pt}{7pt}{6pt}{7pt} +\spx@tempa{spx@seealso@} {div.seealso_} {6pt}{7pt}{6pt}{7pt} +\spx@tempa{spx@todo@} {div.todo_} {6pt}{7pt}{6pt}{7pt} +\spx@tempa{spx@warning@} {div.warning_} {6pt}{6.5pt}{6pt}{6.5pt} +\spx@tempa{spx@caution@} {div.caution_} {6pt}{6.5pt}{6pt}{6.5pt} +\spx@tempa{spx@attention@}{div.attention_} {6pt}{6.5pt}{6pt}{6.5pt} +\spx@tempa{spx@danger@} {div.danger_} {6pt}{6.5pt}{6pt}{6.5pt} +\spx@tempa{spx@error@} {div.error_} {6pt}{6.25pt}{6pt}{6.25pt} +\spx@tempa{spx@box@} {box_} {3pt}{3pt}{3pt}{3pt} +% define legacy verbatimsep key as alias of pre_padding key +\expandafter\let\expandafter\KV@sphinx@verbatimsep\csname KV@sphinx@pre_padding\endcsname +% let legacy shadowsep key set all topic/contents/sidebar padding +% keys to the common value given by user to shadosep +\def\KV@sphinx@shadowsep #1{% + \@nameuse{KV@sphinx@div.topic_padding}{#1}% + \@nameuse{KV@sphinx@div.contents_padding}{#1}% + \@nameuse{KV@sphinx@div.sidebar_padding}{#1}% +}% + +% Corner radii keys +% +% Prior to 6.2.0, the "rounded box" branch obeyed the 4 radii but ignored +% the separate border widths and used only the border-width setting. +% Now, all 4 + 4 parameters are obeyed. +\def\spx@tempa#1{% #1 = macro prefix + \expandafter\spx@tempb + \csname #1radius@topleft\expandafter\endcsname + \csname #1radius@topright\expandafter\endcsname + \csname #1radius@bottomright\expandafter\endcsname + \csname #1radius@bottomleft\endcsname +}% +\def\spx@tempb #1#2#3#4#5#6#7#8#9{% #5 = option prefix + \define@key{sphinx}{#5border-top-left-radius}{\def#1{##1}}% + \define@key{sphinx}{#5border-top-right-radius}{\def#2{##1}}% + \define@key{sphinx}{#5border-bottom-right-radius}{\def#3{##1}}% + \define@key{sphinx}{#5border-bottom-left-radius}{\def#4{##1}}% + \define@key{sphinx}{#5border-radius}{\def#1{##1}\let#2#1\let#3#1\let#4#1}% + \def#1{#6}\def#2{#7}\def#3{#8}\def#4{#9}% +} +% The init value for corner radius in code-blocks was \z@ (i.e. 0pt) prior +% to 6.0.0., then 3pt, then \fboxsep at 6.2.0 as padding was also \fboxsep. +% At 7.4.0: +% - the 3pt is used (which is normal value of \fboxsep). +% - some admonitions use rounded corners as well. +% - topic boxed have only their bottom right corner rounded. +% At 8.1.0 topic, contents and sidebar separately styled. +% macro prefix option prefix tl tr br bl +\spx@tempa{spx@pre@} {pre_} {3pt}{3pt}{3pt}{3pt} +% use four rounded corners (and no shadow) for topic at 8.1.0 +\spx@tempa{spx@topic@} {div.topic_} {8pt}{8pt}{8pt}{8pt} +% contents inherits at 8.1.0 the 7.4.0 former styling of topic +\spx@tempa{spx@contents@} {div.contents_} \z@ \z@ {12pt} \z@ +% make sidebard distinctive as we can't really safely implement +% it with text flowing around it, but rather as a full width block +\spx@tempa{spx@sidebar@} {div.sidebar_} {12pt}\z@ {12pt} \z@ +\spx@tempa{spx@note@} {div.note_} {5pt}{5pt}{5pt}{5pt} +\spx@tempa{spx@hint@} {div.hint_} {5pt}{5pt}{5pt}{5pt} +\spx@tempa{spx@important@}{div.important_} \z@\z@\z@\z@ +\spx@tempa{spx@tip@} {div.tip_} {5pt}{5pt}{5pt}{5pt} +\spx@tempa{spx@seealso@} {div.seealso_} \z@\z@\z@\z@ +\spx@tempa{spx@todo@} {div.todo_} \z@\z@\z@\z@ +\spx@tempa{spx@warning@} {div.warning_} \z@\z@\z@\z@ +\spx@tempa{spx@caution@} {div.caution_} \z@\z@\z@\z@ +\spx@tempa{spx@attention@}{div.attention_} \z@\z@\z@\z@ +\spx@tempa{spx@danger@} {div.danger_} \z@\z@\z@\z@ +\spx@tempa{spx@error@} {div.error_} \z@\z@\z@\z@ +\spx@tempa{spx@box@} {box_} {3pt}{3pt}{3pt}{3pt} + +% Shadow keys +% +% Prior to 6.2.0, an "inset" shadow caused the rendering to ignore +% rounded corners. Starting with 6.2.0, an "inset" shadow is simply +% ignored (not implemented) if any of the corner radii is positive, +% rather than forcing a rectangle+inset shadow output. +\def\spx@tempa#1{% + \expandafter\spx@tempb + \csname if#1withshadow\expandafter\endcsname + \csname if#1insetshadow\endcsname +}% +\def\spx@tempb#1#2{\newif#1\newif#2}% +% macro prefix +\spx@tempa{spx@pre@} +\spx@tempa{spx@topic@} +\spx@tempa{spx@contents@}% 8.1.0 +\spx@tempa{spx@sidebar@}% 8.1.0 +\spx@tempa{spx@note@} +\spx@tempa{spx@hint@} +\spx@tempa{spx@important@} +\spx@tempa{spx@tip@} +\spx@tempa{spx@seealso@}% 7.4.0 +\spx@tempa{spx@todo@}% 7.4.0 +\spx@tempa{spx@warning@} +\spx@tempa{spx@caution@} +\spx@tempa{spx@attention@} +\spx@tempa{spx@danger@} +\spx@tempa{spx@error@} +\spx@tempa{spx@box@} +% +\def\spx@tempa#1{% #1 = macro prefix + \expandafter\spx@tempb + \csname #1withshadowtrue\expandafter\endcsname + \csname #1withshadowfalse\expandafter\endcsname + \csname #1insetshadowtrue\expandafter\endcsname + \csname #1insetshadowfalse\expandafter\endcsname + \csname #1shadow@setter\expandafter\endcsname + \csname #1shadow@xoffset\expandafter\endcsname + \csname #1shadow@yoffset\endcsname +}% +\def\spx@tempb#1#2#3#4#5#6#7#8{% #8 = option prefix + \define@key{sphinx}{#8box-shadow}{#5##1 {} {} \@nnil}% + \def#5##1 ##2 ##3 ##4\@nnil{% + \begingroup\edef\spx@tempa{##1}\expandafter\endgroup + \ifx\spx@tempa\spxstring@none + #2% + % MEMO: at 5.1.0 and up to 6.2.0, an \edef with \number\dimexpr was + % used here. Since 6.2.0, expansion is delayed to time of use as for + % the other dimensions handled above. This is synched with an added + % encapsulation in \dimexpr...\relax by the "setup" from + % sphinxpackageboxes.sty. + \else #1% + \def#6{##1}% + \if\relax\detokenize{##2}\relax\let#7#6\else\def#7{##2}\fi + \if\relax\detokenize{##3}\relax#4\else#3\fi + \fi + }% + #5none {} {} \@nnil % no shadow by default (except for topic, see below) +} +\spx@tempa{spx@pre@} {pre_} +\spx@tempa{spx@topic@} {div.topic_} +\spx@tempa{spx@contents@} {div.contents_} +\spx@tempa{spx@sidebar@} {div.sidebar_} +% This corresponds to the legacy parameters for topic/contents/sidebar, +% but they are now only kept for contents + \spx@contents@shadow@setter 4pt 4pt {} \@nnil +% topic and sidebar default to no shadow +\spx@tempa{spx@note@} {div.note_} +\spx@tempa{spx@hint@} {div.hint_} +\spx@tempa{spx@important@}{div.important_} +\spx@tempa{spx@tip@} {div.tip_} +\spx@tempa{spx@seealso@} {div.seealso_} +\spx@tempa{spx@todo@} {div.todo_} +\spx@tempa{spx@warning@} {div.warning_} +\spx@tempa{spx@caution@} {div.caution_} +\spx@tempa{spx@attention@}{div.attention_} +\spx@tempa{spx@danger@} {div.danger_} +\spx@tempa{spx@error@} {div.error_} +\spx@tempa{spx@box@} {box_} + +% Support for legacy shadowsize (topic/contents/sidebar) +% This definition was broken due to a typo at 5.1.0 and got fixed at 6.1.2 +% MEMO: at 6.2.0 this no longer does \number\dimexpr in an \edef. Reason is to +% keep in sync with div.topic_box-shadow handling of xoffset and yoffset. +\define@key{sphinx}{shadowsize}{% + \def\spx@topic@shadow@xoffset{#1}% + \let\spx@contents@shadow@xoffset\spx@topic@shadow@xoffset + \let\spx@sidebar@shadow@xoffset \spx@topic@shadow@xoffset + \let\spx@topic@shadow@yoffset \spx@topic@shadow@xoffset + \let\spx@contents@shadow@yoffset\spx@topic@shadow@xoffset + \let\spx@sidebar@shadow@yoffset \spx@topic@shadow@xoffset + \ifdim\dimexpr\spx@topic@shadow@xoffset=\z@ + \spx@topic@withshadowfalse + \spx@contents@withshadowfalse + \spx@sidebar@withshadowfalse + \else + \spx@topic@withshadowtrue + \spx@topic@insetshadowfalse + \spx@contents@withshadowtrue + \spx@contents@insetshadowfalse + \spx@sidebar@withshadowtrue + \spx@sidebar@insetshadowfalse + \fi +}% + +% Color keys, TeXextras key, keys for admonition titles with icon +% +% Historical remarks to be removed at some point: +% +% Some problems due to legacy naming scheme which had diverging conventions +% for code-blocks (VerbatimBorderColor, VerbatimColor) and admonitions +% (sphinxwarningBorderColor, sphinxwarningBgColor, etc...) regarding the +% internal names of the used colors. Unfortunately VerbatimColor and for +% example sphinxwarningBgColor are also documented at user level, they are not +% only internally used. +% +% For topic directive, "legacy" (around 2016-2017) had no interface for +% colours, so some internals could be changed with no breakage during 5.x up +% to 6.2.0. For example topic (shadowbox) could be unified with admonitions +% (sphinxheavybox), and the "setup" macros could all be moved into a single +% one in the sphinxpackageboxes.sty file, with only one argument holding the +% directive type. +% +% It was then needed only by sphinxlatexliterals.sty to let its emitted +% \spx@verb@boxes@fcolorbox@setup incorporate some extra adjustment. +% +% 7.4.0 removes usages of booleans relative to usage of a colour for +% background or border which were there to optimize the boxing code from +% sphinxpackageboxes.sty when colours where not needed. These were internal +% macros so their removal should not be considered breaking. +% We keep the infrastructure for "shadowcolor" and "textcolor" because the +% defaults for them remain not to have specific colour. +% +% 7.4.0 adds keys for admonition titles: for background and foreground colors, +% and for icons (whose defaults are picked from Free Fontawesome 5). +\def\spx@tempa#1{% + \expandafter\spx@tempb + \csname if#1withshadowcolor\expandafter\endcsname + \csname if#1withtextcolor\endcsname +}% +\def\spx@tempb#1#2{\newif#1\newif#2}% +% macro prefix +\spx@tempa{spx@pre@} +\spx@tempa{spx@topic@} +\spx@tempa{spx@contents@} +\spx@tempa{spx@sidebar@} +\spx@tempa{spx@note@} +\spx@tempa{spx@hint@} +\spx@tempa{spx@important@} +\spx@tempa{spx@tip@} +\spx@tempa{spx@seealso@} +\spx@tempa{spx@todo@} +\spx@tempa{spx@warning@} +\spx@tempa{spx@caution@} +\spx@tempa{spx@attention@} +\spx@tempa{spx@danger@} +\spx@tempa{spx@error@} +\spx@tempa{spx@box@} +% +\def\spx@tempa#1{% #1 = macro prefix + \expandafter\spx@tempb + \csname #1withshadowcolortrue\expandafter\endcsname + \csname #1withtextcolortrue\expandafter\endcsname + \csname #1TeXextras\endcsname +} +% 7.4.0 adds options for a title. They have an action only for admonitions, +% seealso and todo directives. +\def\spx@tempb#1#2#3#4#5{% #4 = option prefix, #5 = color name prefix + \define@key{sphinx}{#4border-TeXcolor}% + {\spx@defineorletcolor{#5BorderColor}##1\relax}% + \define@key{sphinx}{#4background-TeXcolor}% + {\spx@defineorletcolor{#5BgColor}##1\relax}% + \define@key{sphinx}{#4title-background-TeXcolor}% + {\spx@defineorletcolor{#5TtlBgColor}##1\relax}% + \define@key{sphinx}{#4title-foreground-TeXcolor}% + {\spx@defineorletcolor{#5TtlFgColor}##1\relax}% + \define@key{sphinx}{#4title-icon}% + {\@namedef{#5TtlIcon}{##1}}% + \define@key{sphinx}{#4box-shadow-TeXcolor}% + {#1\spx@defineorletcolor{#5ShadowColor}##1\relax}% + \define@key{sphinx}{#4TeXcolor}% + {#2\spx@defineorletcolor{#5TextColor}##1\relax}% + \define@key{sphinx}{#4TeXextras}% + {\def#3{##1}}% +} +% macro prefix option prefix color name prefix +\spx@tempa{spx@pre@} {pre_} {Verbatim} + % (memo: internal VerbatimShadowColor was formerly sphinxVerbatimShadowColor) + % internal legacy color name is VerbatimColor not VerbatimBgColor, so redefine: + \define@key{sphinx}{pre_background-TeXcolor}% + {\spx@defineorletcolor{VerbatimColor}#1\relax}% + % Keep legacy option names working + \expandafter\let\expandafter\KV@sphinx@VerbatimBorderColor + \csname KV@sphinx@pre_border-TeXcolor\endcsname + \expandafter\let\expandafter\KV@sphinx@VerbatimColor + \csname KV@sphinx@pre_background-TeXcolor\endcsname +% (6.2.0 modified some internal namings for the colors of topic boxes) +% macro prefix option prefix color name prefix +% There was no legacy interface for topic/contents/sidebar +% 8.1.0 allows separate styling for topic/contents/sidebar +\spx@tempa{spx@topic@} {div.topic_} {sphinxtopic} +\spx@tempa{spx@contents@} {div.contents_} {sphinxcontents} +\spx@tempa{spx@sidebar@} {div.sidebar_} {sphinxsidebar} +\spx@tempa{spx@note@} {div.note_} {sphinxnote} +\spx@tempa{spx@hint@} {div.hint_} {sphinxhint} +\spx@tempa{spx@important@}{div.important_} {sphinximportant} +\spx@tempa{spx@tip@} {div.tip_} {sphinxtip} +\spx@tempa{spx@seealso@} {div.seealso_} {sphinxseealso} +\spx@tempa{spx@todo@} {div.todo_} {sphinxtodo} +\spx@tempa{spx@warning@} {div.warning_} {sphinxwarning} +\spx@tempa{spx@caution@} {div.caution_} {sphinxcaution} +\spx@tempa{spx@attention@}{div.attention_} {sphinxattention} +\spx@tempa{spx@danger@} {div.danger_} {sphinxdanger} +\spx@tempa{spx@error@} {div.error_} {sphinxerror} +\spx@tempa{spx@box@} {box_} {sphinxbox} + % Keep legacy sphinxsetup color options interface for "strong" admonitions + \def\spx@tempa#1#2{% #1 = option prefix, #2 = legacy option prefix + \expandafter\let\csname KV@sphinx@#2BorderColor\expandafter\endcsname + \csname KV@sphinx@#1border-TeXcolor\endcsname + \expandafter\let\csname KV@sphinx@#2BgColor\expandafter\endcsname + \csname KV@sphinx@#1background-TeXcolor\endcsname + } + \spx@tempa{div.warning_} {warning} + \spx@tempa{div.caution_} {caution} + \spx@tempa{div.attention_} {attention} + \spx@tempa{div.danger_} {danger} + \spx@tempa{div.error_} {error} + + % Keep legacy sphinxsetup BorderColor for =note, hint, ... + % Add "legacy" names BgColor (added at 7.4.0) and TextColor + \def\spx@tempa#1#2{% #1 = CSS like option prefix, #2 = legacy option prefix + \expandafter\let\csname KV@sphinx@#2BorderColor\expandafter\endcsname + \csname KV@sphinx@#1border-TeXcolor\endcsname + \expandafter\let\csname KV@sphinx@#2BgColor\expandafter\endcsname + \csname KV@sphinx@#1background-TeXcolor\endcsname + \expandafter\let\csname KV@sphinx@#2TextColor\expandafter\endcsname + \csname KV@sphinx@#1TeXcolor\endcsname + } + \spx@tempa{div.note_} {note} + \spx@tempa{div.hint_} {hint} + \spx@tempa{div.important_} {important} + \spx@tempa{div.tip_} {tip} + + % Add "legacy" hintTeXextras etc... + \def\spx@tempa#1#2{% #1 = CSS like option prefix, #2 = legacy option prefix + \expandafter\let\csname KV@sphinx@#2TeXextras\expandafter\endcsname + \csname KV@sphinx@#1TeXextras\endcsname + } + \spx@tempa{div.note_} {note} + \spx@tempa{div.hint_} {hint} + \spx@tempa{div.important_} {important} + \spx@tempa{div.tip_} {tip} + + % At 7.4.0, let topic/contents boxes acquire background and border colours + % and give the shadow some colour other than black + % 8.1.0 styles separately topic/contents/sidebar + % topic has no shadow but we keep 7.4.0 color in case it gets needed + \setkeys{sphinx}{% + div.topic_border-TeXcolor=sphinx-admonition-bordercolor, + div.topic_background-TeXcolor=sphinx-admonition-bgcolor, + div.topic_box-shadow-TeXcolor={RGB}{108,108,108}, + div.contents_border-TeXcolor=sphinx-admonition-bordercolor, + div.contents_background-TeXcolor=sphinx-admonition-bgcolor, + div.contents_box-shadow-TeXcolor={RGB}{108,108,108}, + div.sidebar_border-TeXcolor=sphinx-admonition-bordercolor, + div.sidebar_background-TeXcolor=sphinx-admonition-bgcolor, + div.sidebar_box-shadow-TeXcolor=sphinx-admonition-bordercolor!80,% #9eacaf + } + + +% 7.4.0 lets all types of admonitions style especially their titlss. +% The Sphinx default colours for admonition titles are copied from PR #12486 +% which modified sphinx13.css (see also earlier #12439) +% The actual code using the colours and icons whose defaults are set here +% is to be found in sphinxlatexadmonitions.sty. +% +% MEMO: unfortunately xcolor does NOT implement HSL but only HSB! +% So the sphinx13.css colours specified via hsl() got converted to RGB here +\definecolor{sphinx-admonition-title-bgcolor}{RGB}{229,229,229} % hsl(0, 0%, 90%); +\definecolor{sphinx-admonition-title-fgcolor}{RGB}{127,127,127} % hsl(0, 0%, 50%); +\definecolor{sphinx-warning-title-bgcolor} {RGB}{248,228,210} % hsl(28.5, 74%, 90%); +\definecolor{sphinx-warning-title-fgcolor} {RGB}{221,122,33} % hsl(28.5, 74%, 50%); +\definecolor{sphinx-note-title-bgcolor} {RGB}{208,222,250} % hsl(219.5, 84%, 90%); +\definecolor{sphinx-note-title-fgcolor} {RGB}{20,93,234} % hsl(219.5, 84%, 50%); +\definecolor{sphinx-success-title-bgcolor} {RGB}{220,239,230} % hsl(150, 36.7%, 90%); +\definecolor{sphinx-success-title-fgcolor} {RGB}{81,174,128} % hsl(150, 36.7%, 50%); +\definecolor{sphinx-error-title-bgcolor} {RGB}{238,220,220} % hsl(0, 37%, 90%); +\definecolor{sphinx-error-title-fgcolor} {RGB}{174,80,80} % hsl(0, 37%, 50%); +\definecolor{sphinx-todo-title-bgcolor} {RGB}{226,204,254} % hsl(266.8, 100%, 90%); +\definecolor{sphinx-todo-title-fgcolor} {RGB}{113,0,255} % hsl(266.8, 100%, 50%); + +% Now use the above colours as default settings, following the choices +% done in sphinx13.css +\setkeys{sphinx}{ + div.note_title-background-TeXcolor=sphinx-note-title-bgcolor, + div.note_title-foreground-TeXcolor=sphinx-note-title-fgcolor, +% + div.hint_title-background-TeXcolor=sphinx-success-title-bgcolor, + div.hint_title-foreground-TeXcolor=sphinx-success-title-fgcolor, + div.tip_title-background-TeXcolor=sphinx-success-title-bgcolor, + div.tip_title-foreground-TeXcolor=sphinx-success-title-fgcolor, + div.seealso_title-background-TeXcolor=sphinx-success-title-bgcolor, + div.seealso_title-foreground-TeXcolor=sphinx-success-title-fgcolor, + div.todo_title-background-TeXcolor=sphinx-todo-title-bgcolor, + div.todo_title-foreground-TeXcolor=sphinx-todo-title-fgcolor, +% + div.important_title-background-TeXcolor=sphinx-warning-title-bgcolor, + div.important_title-foreground-TeXcolor=sphinx-warning-title-fgcolor, + div.caution_title-background-TeXcolor=sphinx-warning-title-bgcolor, + div.caution_title-foreground-TeXcolor=sphinx-warning-title-fgcolor, + div.warning_title-background-TeXcolor=sphinx-warning-title-bgcolor, + div.warning_title-foreground-TeXcolor=sphinx-warning-title-fgcolor, +% + div.attention_title-background-TeXcolor=sphinx-error-title-bgcolor, + div.attention_title-foreground-TeXcolor=sphinx-error-title-fgcolor, + div.danger_title-background-TeXcolor=sphinx-error-title-bgcolor, + div.danger_title-foreground-TeXcolor=sphinx-error-title-fgcolor, + div.error_title-background-TeXcolor=sphinx-error-title-bgcolor, + div.error_title-foreground-TeXcolor=sphinx-error-title-fgcolor, +% +% 8.1.0 add title rows, but will not use icons per default, so +% the fgcolor setting will be used only if user uses title-icon key + div.topic_title-background-TeXcolor=sphinx-admonition-title-bgcolor, + div.topic_title-foreground-TeXcolor=sphinx-admonition-title-fgcolor, + div.contents_title-background-TeXcolor=sphinx-admonition-title-bgcolor, + div.contents_title-foreground-TeXcolor=sphinx-admonition-title-fgcolor, + div.sidebar_title-background-TeXcolor=sphinx-note-title-bgcolor, + div.sidebar_title-foreground-TeXcolor=sphinx-note-title-fgcolor, +} + +% 7.4.0 Support for icons in admonition titles +% We try to +% - get Sphinx PDF builds to process fine in absence of fontawesome5 +% - use fontawesome5 if present, but not if user prefers another package +% - provide an interface for using other LaTeX code for icons +% - provide an interface for using some other package than fontawesome5 +% Indeed we can't load fontawesome5 unconditionally even if available, +% as it proves incompatible with fontawesome package. +% We thus must delay its loading. +\IfFileExists{fontawesome5.sty}{% + \DeclareStringOption[fontawesome5]{iconpackage}% +}% +{% + \IfFileExists{fontawesome.sty} + {\DeclareStringOption[fontawesome]{iconpackage}} + {\DeclareStringOption[none]{iconpackage}}% +}% +\newcommand\spx@faIcon[2][]{}% +% The above \spx@faIcon which gobbles one mandatory and one optional +% argument is put into use only if both fontawesome5 and fontawesome +% LaTeX packages are not available, as part of the defaults for the +% div.*_title-icon keys (these keys can be redefined via the sphinxsetup +% interface). +% +\def\spxstring@fontawesome{fontawesome} +\def\spxstring@fontawesomev{fontawesome5} +\AtBeginDocument{% + \ifx\spx@opt@iconpackage\spxstring@none + \else + \IfFileExists{\spx@opt@iconpackage.sty} + {\RequirePackage{\spx@opt@iconpackage}% + \ifx\spx@opt@iconpackage\spxstring@fontawesomev + \renewcommand\spx@faIcon{\faIcon}% + \else + \ifx\spx@opt@iconpackage\spxstring@fontawesome + \renewcommand\spx@faIcon[2][]{\faicon{##2}}% + % The \ifdefined's are a bit silly because we know that + % fontawesome.sty does not provide it, but perhaps + % there can be some new release of that package? + \ifdefined\faicon@lightbulb\else + \let\faicon@lightbulb\faLightbulbO + \fi + \ifdefined\faicon@radiation\else + \let\faicon@radiation\faBolt + \fi + \ifdefined\faicon@pen\else + \let\faicon@pen\faPencil + \fi + % if neither has been required, \spx@faIcon will simply swallow + % its argument and it is up to user + % to set the various div.*_title-icon keys appropriately. + \fi\fi % + }% + {% + \sphinxbuildwarning{badiconpackage}% + \PackageWarningNoLine{sphinx}{% + You have set iconpackage=\spx@opt@iconpackage\MessageBreak + But \spx@opt@iconpackage.sty is not found by LaTeX} + }% + \fi +} + +\setkeys{sphinx}{ +% Icon defaults. + div.note_title-icon = \spx@faIcon{info-circle}, + div.hint_title-icon = \spx@faIcon[regular]{lightbulb}, + div.tip_title-icon = \spx@faIcon[regular]{lightbulb}, + div.seealso_title-icon = \spx@faIcon{share}, + div.todo_title-icon = \spx@faIcon{pen}, + div.important_title-icon = \spx@faIcon{pause-circle}, + div.caution_title-icon = \spx@faIcon{radiation}, + div.warning_title-icon = \spx@faIcon{exclamation-triangle}, + div.attention_title-icon = \spx@faIcon{exclamation-triangle}, + div.danger_title-icon = \spx@faIcon{radiation}, + div.error_title-icon = \spx@faIcon{times-circle}, +% MEMO: the new at 8.1.0 defaults for contents/topic/sidebar directives +% use no icons, they use \sphinxdotitlerow which detects automatically +% whether title-icon key has been set or not. +} + +\newif\ifspx@opt@box@addstrut +\expandafter\def\csname KV@sphinx@box_addstrut\endcsname#1{% + \csname spx@opt@box@addstrut#1\endcsname +} +\expandafter\def\csname KV@sphinx@box_addstrut@default\endcsname{% + \spx@opt@box@addstruttrue +} + +\DeclareDefaultOption{\@unknownoptionerror} +\ProcessKeyvalOptions* +% don't allow use of maxlistdepth via \sphinxsetup. +\DisableKeyvalOption{sphinx}{maxlistdepth} +\DisableKeyvalOption{sphinx}{numfigreset} +\DisableKeyvalOption{sphinx}{nonumfigreset} +\DisableKeyvalOption{sphinx}{mathnumfig} +\DisableKeyvalOption{sphinx}{booktabs} +\DisableKeyvalOption{sphinx}{borderless} +\DisableKeyvalOption{sphinx}{rowcolors} +% FIXME: this is unrelated to an option, move this elsewhere +% To allow hyphenation of first word in narrow contexts; no option, +% customization to be done via 'preamble' key +\newcommand*\sphinxAtStartPar{\leavevmode\nobreak\hskip\z@skip} +% No need for the \hspace{0pt} trick (\hskip\z@skip) with luatex +\ifdefined\directlua\let\sphinxAtStartPar\@empty\fi +% user interface: options can be changed midway in a document! +\newcommand\sphinxsetup{\setkeys{sphinx}} + + +%% MISCELLANEOUS CONTEXT +% +% flag to be set in a framed environment +% (defined here as currently needed by three sphinxlatex....sty files and +% even if not needed if such files are replaced, the definition does no harm) +\newif\ifspx@inframed +% +% \spx@ifcaptionpackage (defined at begin document) +% is needed currently in macros from: +% sphinxlatexliterals.sty (sphinxVerbatim) +% sphinxlatextables.sty (for some macros used in the table templates) +% +% \sphinxcaption is mark-up injected by the tabular and tabulary templates +% it is defined in sphinxlatextables.sty +% +% store the original \caption macro for usage with figures inside longtable +% and tabulary cells. Make sure we get the final \caption in presence of +% caption package, whether the latter was loaded before or after sphinx. +\AtBeginDocument{% + \let\spx@originalcaption\caption + \@ifpackageloaded{caption} + {\let\spx@ifcaptionpackage\@firstoftwo + \caption@AtBeginDocument*{\let\spx@originalcaption\caption}% +% in presence of caption package, drop our own \sphinxcaption whose aim was to +% ensure same width of caption to all kinds of tables (tabular(y), longtable), +% because caption package has its own width (or margin) option + \def\sphinxcaption{\caption}% + }% + {\let\spx@ifcaptionpackage\@secondoftwo}% +} + +%% PASS OPTIONS +% +% pass options to hyperref; it must not have been loaded already +\RequirePackage{sphinxoptionshyperref} +% pass options to geometry; it must not have been loaded already +\RequirePackage{sphinxoptionsgeometry} + + +%% COLOR (general) +% +% FIXME: these two should be deprecated +% +% FIXME: \normalcolor should be used and \py@NormalColor never defined +\def\py@NormalColor{\color{black}} +% FIXME: \color{TitleColor} should be used directly and \py@TitleColor +% should never get defined. +\def\py@TitleColor{\color{TitleColor}} + + +%% PACKAGES +% +% as will be indicated below, secondary style files load some more packages +% +% For \text macro (sphinx.util.texescape) +% also for usage of \firstchoice@true(false) in sphinxlatexgraphics.sty +\RequirePackage{amstext} +% It was passed "warn" option from latex template in case it is already loaded +% via some other package before \usepackage{sphinx} in preamble +\RequirePackage{textcomp} +% For the H specifier. Do not \restylefloat{figure}, it breaks Sphinx code +% for allowing figures in tables. +\RequirePackage{float} +% For floating figures in the text. Better to load after float. +\RequirePackage{wrapfig} +% Provides \captionof, used once by latex writer (\captionof{figure}) +\RequirePackage{capt-of} +% Support hlist directive +\RequirePackage{multicol} + + +%% GRAPHICS +% +% It will always be needed, so let's load it here +\RequirePackage{graphicx} +\RequirePackage{sphinxlatexgraphics} + + +%% FRAMED ENVIRONMENTS +% +% \sphinxbox added at 6.2.0, its definition is in sphinxpackageboxes. +% +% Alias all \sphinxsetup "box_" keys to become \sphinxboxsetup no-prefix keys +\@tfor\x:={border-width}% + {border-top-width}{border-right-width}{border-bottom-width}{border-left-width}% + {box-decoration-break}% This one is actually useless, as \sphinxbox + % creates an unbreakable horizontal box, not a breakable vertical + % box. And as is well-known it is very complicated (not to say + % impossible) to create in LaTeX breakable horizontal boxes. No + % package offers them. See the complications for the support of + % verbatimforcewraps in sphinxlatexliterals.sty or see the source + % code of the soul or soulutf8 packages. + {padding}% + {padding-top}{padding-right}{padding-bottom}{padding-left}% + {border-radius}% + {border-top-left-radius}{border-top-right-radius}% + {border-bottom-right-radius}{border-bottom-left-radius}% + {box-shadow}% + {border-TeXcolor}{background-TeXcolor}{box-shadow-TeXcolor}{TeXcolor}% + {TeXextras}{addstrut}{addstrut@default}% +\do{\expandafter\let\csname KV@sphinxbox@\x\expandafter\endcsname + \csname KV@sphinx@box_\x\endcsname} +% Let \sphinxboxsetup also prepare a "reset", which will be used by nested +% boxes; currently and by laziness this is implemented simply by accumulating +% all passed options inside some storage, in the order they were given, rather +% than saving the box would-be parameters. Advantage is that this will not +% have to be modified if additional keys are added in future (e.g. for +% elliptic corners). Storing obeys TeX groups. (these details would be +% relevant only for some genuine independent LaTeX package and manual user +% authored mark-up, not Sphinx auto mark-up). +\newcommand\sphinxboxsetup[1]{% + \setkeys{sphinxbox}{#1}% + \expandafter\def\expandafter\spx@boxes@sphinxbox@defaults\expandafter + {\spx@boxes@sphinxbox@defaults,#1}% +} +\def\spx@boxes@sphinxbox@reset{% + \begingroup\def\x{\endgroup\setkeys{sphinxbox}}% + \expandafter\x\expandafter{\spx@boxes@sphinxbox@defaults}% +} +% Some of these defaults got already set. But we now list them all explicitly +% for a complete initial configuration of reset storage. +% At 7.4.0, \fboxrule and \fboxsep replaced by 0.4pt and 3pt which are anyhow +% the defaults for these LaTeX dimensions. 8.2.0 corrected border-radius +% default back to 3pt (\fboxsep) not 0.4pt (\fboxrule). +\let\spx@boxes@sphinxbox@defaults\@gobble +\sphinxboxsetup{% + border-width=0.4pt, + padding=3pt, + border-radius=3pt, + box-shadow=none, +% MEMO: as xcolor is loaded, \spx@defineorletcolor has a "\colorlet" branch +% which makes this syntax acceptable and avoids duplicating here the values. + border-TeXcolor=VerbatimBorderColor, + background-TeXcolor=VerbatimColor, +% 7.4.0 modified the color of the shadow (anyhow box-shadow is set above to none +% so no shadow is drawn), to be as the new shadow colour of topic boxes. + box-shadow-TeXcolor={RGB}{108,108,108}, + TeXextras={}, + addstrut=false, + }% +\RequirePackage{sphinxpackageboxes} +\RequirePackage{sphinxlatexadmonitions} +\RequirePackage{sphinxlatexliterals} +\RequirePackage{sphinxlatexshadowbox} + + +%% CONTAINERS +% +\RequirePackage{sphinxlatexcontainers} + + +%% PYGMENTS +% stylesheet for highlighting with pygments +\RequirePackage{sphinxhighlight} + + +%% TABLES +% +\RequirePackage{sphinxlatextables} + + +%% NUMBERING OF FIGURES, TABLES, AND LITERAL BLOCKS +% +\RequirePackage{sphinxlatexnumfig} + + +%% LISTS +% +\RequirePackage{sphinxlatexlists} + + +%% FOOTNOTES +% +% Support scopes for footnote numbering +% This is currently stepped at each input file +\newcounter{sphinxscope} +\newcommand{\sphinxstepscope}{\stepcounter{sphinxscope}} +% We ensure \thesphinxscope expands to digits tokens, independently of language +\renewcommand{\thesphinxscope}{\number\value{sphinxscope}} +\newcommand\sphinxthefootnotemark[2]{% + % this is used to make reference to an explicitly numbered footnote not on same page + % #1=label of footnote text, #2=page number where footnote text was printed + \ifdefined\pagename + \pagename\space#2, % <- space + \else + p. #2, % <- space + \fi #1% no space +} +% support large numbered footnotes in minipage; but this is now obsolete +% from systematic use of savenotes environment around minipages +\def\thempfootnote{\arabic{mpfootnote}} +% This package is needed to support hyperlinked footnotes in tables and +% framed contents, and to allow code-blocks in footnotes. +\RequirePackage{sphinxpackagefootnote} + + +%% INDEX, BIBLIOGRAPHY, APPENDIX, TABLE OF CONTENTS +% +\RequirePackage{sphinxlatexindbibtoc} + + +%% STYLING +% +\RequirePackage{sphinxlatexstylepage} +\RequirePackage{sphinxlatexstyleheadings} +\RequirePackage{sphinxlatexstyletext} + + +%% MODULE RELEASE DATA AND OBJECT DESCRIPTIONS +% +\RequirePackage{sphinxlatexobjects} + + +% FIXME: this line should be dropped, as "9" is default anyhow. +\ifdefined\pdfcompresslevel\pdfcompresslevel = 9 \fi + + +\endinput diff --git a/docs/build/latex/sphinx.xdy b/docs/build/latex/sphinx.xdy new file mode 100644 index 0000000..8df526e --- /dev/null +++ b/docs/build/latex/sphinx.xdy @@ -0,0 +1,230 @@ +;;; -*- mode: lisp; coding: utf-8; -*- + +;; Unfortunately xindy is out-of-the-box hyperref-incompatible. This +;; configuration is a workaround, which requires to pass option +;; hyperindex=false to hyperref. +;; textit and emph not currently used, spxpagem replaces former textbf +(define-attributes (("textbf" "textit" "emph" "spxpagem" "default"))) +(markup-locref :open "\textbf{\hyperpage{" :close "}}" :attr "textbf") +(markup-locref :open "\textit{\hyperpage{" :close "}}" :attr "textit") +(markup-locref :open "\emph{\hyperpage{" :close "}}" :attr "emph") +(markup-locref :open "\spxpagem{\hyperpage{" :close "}}" :attr "spxpagem") +(markup-locref :open "\hyperpage{" :close "}" :attr "default") + +(require "numeric-sort.xdy") + +;; xindy base module latex.xdy loads tex.xdy and the latter instructs +;; xindy to ignore **all** TeX macros in .idx entries, except those +;; explicitly described in merge rule. But when after applying all +;; merge rules an empty string results, xindy raises an error: + +;; ERROR: CHAR: index 0 should be less than the length of the string + +;; For example when using pdflatex with utf-8 characters the index +;; file will contain \IeC macros and they will get ignored except if +;; suitable merge rules are loaded early. The texindy script coming +;; with xindy provides this, but only for Latin scripts. The texindy +;; man page says to use rather xelatex or lualatex in case of Cyrillic +;; scripts. + +;; Sphinx contributes LICRcyr2utf8.xdy to provide support for Cyrillic +;; scripts for the pdflatex engine. + +;; Another issue caused by xindy ignoring all TeX macros except those +;; explicitly declared reveals itself when attempting to index ">>>", +;; as the ">" is converted to "\textgreater{}" by Sphinx's LaTeX +;; escaping. + +;; To fix this, Sphinx does **not** use texindy, and does not even +;; load the xindy latex.xdy base module. + +;(require "latex.xdy") + +;; Rather it incorporates some suitable extracts from latex.xdy and +;; tex.xdy with additional Sphinx contributed rules. + +;; But, this means for pdflatex and Latin scripts that the xindy file +;; tex/inputenc/uf8.xdy is not usable because it refers to the macro +;; \IeC only sporadically, and as tex.xdy is not loaded, a rule such as +;; (merge-rule "\'e" "é" :string) +;; does not work, it must be +;; (merge-rule "\IeC {\'e}" "é" :string) +;; So Sphinx contributes LICRlatin2utf8.xdy to mitigate that problem. + +;;;;;;;; extracts from tex.xdy (discarding most original comments): + +;;; +;;; TeX conventions +;;; + +;; Discard leading and trailing white space. Collapse multiple white +;; space characters to blank. + +(merge-rule "^ +" "" :eregexp) +(merge-rule " +$" "" :eregexp) +(merge-rule " +" " " :eregexp) + +;; Handle TeX markup + +(merge-rule "\\([{}$%&#])" "\1" :eregexp) + +;;;;;;;; end of extracts from xindy's tex.xdy + +;;;;;;;; extracts from latex.xdy: + +;; Standard location classes: arabic and roman numbers, and alphabets. + +(define-location-class "arabic-page-numbers" ("arabic-numbers")) +(define-location-class "roman-page-numbers" ("roman-numbers-lowercase")) +(define-location-class "Roman-page-numbers" ("roman-numbers-uppercase")) +(define-location-class "alpha-page-numbers" ("alpha")) +(define-location-class "Alpha-page-numbers" ("ALPHA")) + +;; Output Markup + +(markup-letter-group-list :sep "~n~n \indexspace~n") + +(markup-indexentry :open "~n \item " :depth 0) +(markup-indexentry :open "~n \subitem " :depth 1) +(markup-indexentry :open "~n \subsubitem " :depth 2) + +(markup-locclass-list :open ", " :sep ", ") +(markup-locref-list :sep ", ") + +;;;;;;;; end of extracts from latex.xdy + +;; The LaTeX \index command turns \ into normal character so the TeX macros +;; written to .idx files are not followed by a blank. This is different +;; from non-ascii letters which end up (with pdflatex) as \IeC macros in .idx +;; file, with a blank space after \IeC + +;; Details of the syntax are explained at +;; https://xindy.sourceforge.net/doc/manual-3.html +;; In absence of :string, "xindy uses an auto-detection mechanism to decide, +;; if the pattern is a regular expression or not". But it is not obvious to +;; guess, for example "\\_" is not detected as RE but "\\P\{\}" is, so for +;; being sure we apply the :string switch everywhere and do not use \\ etc... + +;; Go back from sphinx.util.texescape TeX macros to UTF-8 + +(merge-rule "\sphinxleftcurlybrace{}" "{" :string) +(merge-rule "\sphinxrightcurlybrace{}" "}" :string) +(merge-rule "\_" "_" :string) +(merge-rule "{[}" "[" :string) +(merge-rule "{]}" "]" :string) +(merge-rule "\textbackslash{}" "\" :string) ; " for Emacs syntax highlighting +(merge-rule "\textasciitilde{}" "~~" :string); the ~~ escape is needed here +(merge-rule "\textasciicircum{}" "^" :string) +(merge-rule "\sphinxhyphen{}" "-" :string) +(merge-rule "\textquotesingle{}" "'" :string) +(merge-rule "\textasciigrave{}" "`" :string) +(merge-rule "\textless{}" "<" :string) +(merge-rule "\textgreater{}" ">" :string) +(merge-rule "\P{}" "¶" :string) +(merge-rule "\S{}" "§" :string) +(merge-rule "\texteuro{}" "€" :string) +(merge-rule "\(\infty\)" "∞" :string) +(merge-rule "\(\pm\)" "±" :string) +(merge-rule "\(\rightarrow\)" "→" :string) +(merge-rule "\(\checkmark\)" "✓" :string) +(merge-rule "\textendash{}" "–" :string) +(merge-rule "\textbar{}" "|" :string) +(merge-rule "\(\sp{\text{0}}\)" "⁰" :string) +(merge-rule "\(\sp{\text{1}}\)" "¹" :string) +(merge-rule "\(\sp{\text{2}}\)" "²" :string) +(merge-rule "\(\sp{\text{3}}\)" "³" :string) +(merge-rule "\(\sp{\text{4}}\)" "⁴" :string) +(merge-rule "\(\sp{\text{5}}\)" "⁵" :string) +(merge-rule "\(\sp{\text{6}}\)" "⁶" :string) +(merge-rule "\(\sp{\text{7}}\)" "⁷" :string) +(merge-rule "\(\sp{\text{8}}\)" "⁸" :string) +(merge-rule "\(\sp{\text{9}}\)" "⁹" :string) +(merge-rule "\(\sb{\text{0}}\)" "₀" :string) +(merge-rule "\(\sb{\text{1}}\)" "₁" :string) +(merge-rule "\(\sb{\text{2}}\)" "₂" :string) +(merge-rule "\(\sb{\text{3}}\)" "₃" :string) +(merge-rule "\(\sb{\text{4}}\)" "₄" :string) +(merge-rule "\(\sb{\text{5}}\)" "₅" :string) +(merge-rule "\(\sb{\text{6}}\)" "₆" :string) +(merge-rule "\(\sb{\text{7}}\)" "₇" :string) +(merge-rule "\(\sb{\text{8}}\)" "₈" :string) +(merge-rule "\(\sb{\text{9}}\)" "₉" :string) +(merge-rule "\IeC {\textalpha }" "α" :string) +(merge-rule "\IeC {\textbeta }" "β" :string) +(merge-rule "\IeC {\textgamma }" "γ" :string) +(merge-rule "\IeC {\textdelta }" "δ" :string) +(merge-rule "\IeC {\textepsilon }" "ε" :string) +(merge-rule "\IeC {\textzeta }" "ζ" :string) +(merge-rule "\IeC {\texteta }" "η" :string) +(merge-rule "\IeC {\texttheta }" "θ" :string) +(merge-rule "\IeC {\textiota }" "ι" :string) +(merge-rule "\IeC {\textkappa }" "κ" :string) +(merge-rule "\IeC {\textlambda }" "λ" :string) +(merge-rule "\IeC {\textmu }" "μ" :string) +(merge-rule "\IeC {\textnu }" "ν" :string) +(merge-rule "\IeC {\textxi }" "ξ" :string) +(merge-rule "\IeC {\textomicron }" "ο" :string) +(merge-rule "\IeC {\textpi }" "π" :string) +(merge-rule "\IeC {\textrho }" "ρ" :string) +(merge-rule "\IeC {\textsigma }" "σ" :string) +(merge-rule "\IeC {\texttau }" "τ" :string) +(merge-rule "\IeC {\textupsilon }" "υ" :string) +(merge-rule "\IeC {\textphi }" "φ" :string) +(merge-rule "\IeC {\textchi }" "χ" :string) +(merge-rule "\IeC {\textpsi }" "ψ" :string) +(merge-rule "\IeC {\textomega }" "ω" :string) +(merge-rule "\IeC {\textAlpha }" "Α" :string) +(merge-rule "\IeC {\textBeta }" "Β" :string) +(merge-rule "\IeC {\textGamma }" "Γ" :string) +(merge-rule "\IeC {\textDelta }" "Δ" :string) +(merge-rule "\IeC {\textEpsilon }" "Ε" :string) +(merge-rule "\IeC {\textZeta }" "Ζ" :string) +(merge-rule "\IeC {\textEta }" "Η" :string) +(merge-rule "\IeC {\textTheta }" "Θ" :string) +(merge-rule "\IeC {\textIota }" "Ι" :string) +(merge-rule "\IeC {\textKappa }" "Κ" :string) +(merge-rule "\IeC {\textLambda }" "Λ" :string) +(merge-rule "\IeC {\textMu }" "Μ" :string) +(merge-rule "\IeC {\textNu }" "Ν" :string) +(merge-rule "\IeC {\textTheta }" "Θ" :string) +(merge-rule "\IeC {\textIota }" "Ι" :string) +(merge-rule "\IeC {\textKappa }" "Κ" :string) +(merge-rule "\IeC {\textLambda }" "Λ" :string) +(merge-rule "\IeC {\textMu }" "Μ" :string) +(merge-rule "\IeC {\textNu }" "Ν" :string) +(merge-rule "\IeC {\textXi }" "Ξ" :string) +(merge-rule "\IeC {\textOmicron }" "Ο" :string) +(merge-rule "\IeC {\textPi }" "Π" :string) +(merge-rule "\IeC {\textRho }" "Ρ" :string) +(merge-rule "\IeC {\textSigma }" "Σ" :string) +(merge-rule "\IeC {\textTau }" "Τ" :string) +(merge-rule "\IeC {\textUpsilon }" "Υ" :string) +(merge-rule "\IeC {\textPhi }" "Φ" :string) +(merge-rule "\IeC {\textChi }" "Χ" :string) +(merge-rule "\IeC {\textPsi }" "Ψ" :string) +(merge-rule "\IeC {\textOmega }" "Ω" :string) +(merge-rule "\IeC {\textohm }" "Ω" :string) + +;; This xindy module provides some basic support for "see" +(require "makeindex.xdy") + +;; This creates one-letter headings and works fine with utf-8 letters. +;; For Cyrillic with pdflatex works thanks to LICRcyr2utf8.xdy +(require "latin-lettergroups.xdy") + +;; currently we don't (know how to easily) separate "Numbers" from +;; "Symbols" with xindy as is the case with makeindex. +(markup-index :open "\begin{sphinxtheindex} +\let\lettergroup\sphinxstyleindexlettergroup +\let\lettergroupDefault\sphinxstyleindexlettergroupDefault +\let\spxpagem\sphinxstyleindexpagemain +\let\spxentry\sphinxstyleindexentry +\let\spxextra\sphinxstyleindexextra + +" + :close " + +\end{sphinxtheindex} +" + :tree) + diff --git a/docs/build/latex/sphinxhighlight.sty b/docs/build/latex/sphinxhighlight.sty new file mode 100644 index 0000000..170f557 --- /dev/null +++ b/docs/build/latex/sphinxhighlight.sty @@ -0,0 +1,130 @@ +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{sphinxhighlight}[2022/06/30 stylesheet for highlighting with pygments] +% Its contents depend on pygments_style configuration variable. + + +\makeatletter +\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax% + \let\PYG@ul=\relax \let\PYG@tc=\relax% + \let\PYG@bc=\relax \let\PYG@ff=\relax} +\def\PYG@tok#1{\csname PYG@tok@#1\endcsname} +\def\PYG@toks#1+{\ifx\relax#1\empty\else% + \PYG@tok{#1}\expandafter\PYG@toks\fi} +\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{% + \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}} +\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}} + +\@namedef{PYG@tok@w}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} +\@namedef{PYG@tok@c}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\@namedef{PYG@tok@cp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@cs}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}} +\@namedef{PYG@tok@k}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@kp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@kt}{\def\PYG@tc##1{\textcolor[rgb]{0.56,0.13,0.00}{##1}}} +\@namedef{PYG@tok@o}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\@namedef{PYG@tok@ow}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@nb}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@nf}{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}} +\@namedef{PYG@tok@nc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}} +\@namedef{PYG@tok@nn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}} +\@namedef{PYG@tok@ne}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@nv}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\@namedef{PYG@tok@no}{\def\PYG@tc##1{\textcolor[rgb]{0.38,0.68,0.84}{##1}}} +\@namedef{PYG@tok@nl}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.13,0.44}{##1}}} +\@namedef{PYG@tok@ni}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.84,0.33,0.22}{##1}}} +\@namedef{PYG@tok@na}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@nt}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.45}{##1}}} +\@namedef{PYG@tok@nd}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}} +\@namedef{PYG@tok@s}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@sd}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@si}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.44,0.63,0.82}{##1}}} +\@namedef{PYG@tok@se}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@sr}{\def\PYG@tc##1{\textcolor[rgb]{0.14,0.33,0.53}{##1}}} +\@namedef{PYG@tok@ss}{\def\PYG@tc##1{\textcolor[rgb]{0.32,0.47,0.09}{##1}}} +\@namedef{PYG@tok@sx}{\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}} +\@namedef{PYG@tok@m}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@gh}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\@namedef{PYG@tok@gu}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} +\@namedef{PYG@tok@gd}{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} +\@namedef{PYG@tok@gi}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} +\@namedef{PYG@tok@gr}{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} +\@namedef{PYG@tok@ge}{\let\PYG@it=\textit} +\@namedef{PYG@tok@gs}{\let\PYG@bf=\textbf} +\@namedef{PYG@tok@ges}{\let\PYG@bf=\textbf\let\PYG@it=\textit} +\@namedef{PYG@tok@gp}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}} +\@namedef{PYG@tok@go}{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.20}{##1}}} +\@namedef{PYG@tok@gt}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} +\@namedef{PYG@tok@err}{\def\PYG@bc##1{{\setlength{\fboxsep}{\string -\fboxrule}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}} +\@namedef{PYG@tok@kc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@kd}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@kn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@kr}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@bp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@fm}{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}} +\@namedef{PYG@tok@vc}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\@namedef{PYG@tok@vg}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\@namedef{PYG@tok@vi}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\@namedef{PYG@tok@vm}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\@namedef{PYG@tok@sa}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@sb}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@sc}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@dl}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@s2}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@sh}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@s1}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@mb}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@mf}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@mh}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@mi}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@il}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@mo}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@ch}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\@namedef{PYG@tok@cm}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\@namedef{PYG@tok@cpf}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\@namedef{PYG@tok@c1}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} + +\def\PYGZbs{\char`\\} +\def\PYGZus{\char`\_} +\def\PYGZob{\char`\{} +\def\PYGZcb{\char`\}} +\def\PYGZca{\char`\^} +\def\PYGZam{\char`\&} +\def\PYGZlt{\char`\<} +\def\PYGZgt{\char`\>} +\def\PYGZsh{\char`\#} +\def\PYGZpc{\char`\%} +\def\PYGZdl{\char`\$} +\def\PYGZhy{\char`\-} +\def\PYGZsq{\char`\'} +\def\PYGZdq{\char`\"} +\def\PYGZti{\char`\~} +% for compatibility with earlier versions +\def\PYGZat{@} +\def\PYGZlb{[} +\def\PYGZrb{]} +\makeatother + +% Sphinx redefinitions +% Originally to obtain a straight single quote via package textcomp, then +% to fix problems for the 5.0.0 inline code highlighting (captions!). +% The \text is from amstext, a dependency of sphinx.sty. It is here only +% to avoid build errors if for some reason expansion is in math mode. +\def\PYGZbs{\text\textbackslash} +\def\PYGZus{\_} +\def\PYGZob{\{} +\def\PYGZcb{\}} +\def\PYGZca{\text\textasciicircum} +\def\PYGZam{\&} +\def\PYGZlt{\text\textless} +\def\PYGZgt{\text\textgreater} +\def\PYGZsh{\#} +\def\PYGZpc{\%} +\def\PYGZdl{\$} +\def\PYGZhy{\sphinxhyphen}% defined in sphinxlatexstyletext.sty +\def\PYGZsq{\text\textquotesingle} +\def\PYGZdq{"} +\def\PYGZti{\text\textasciitilde} +\makeatletter +% use \protected to allow syntax highlighting in captions +\protected\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+{\PYG@do{#2}}} +\makeatother diff --git a/docs/build/latex/sphinxhowto.cls b/docs/build/latex/sphinxhowto.cls new file mode 100644 index 0000000..8d7dd0e --- /dev/null +++ b/docs/build/latex/sphinxhowto.cls @@ -0,0 +1,102 @@ +% +% sphinxhowto.cls for Sphinx (https://www.sphinx-doc.org/) +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{sphinxhowto}[2019/12/01 v2.3.0 Document class (Sphinx howto)] + +% 'oneside' option overriding the 'twoside' default +\newif\if@oneside +\DeclareOption{oneside}{\@onesidetrue} +% Pass remaining document options to the parent class. +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}} +\ProcessOptions\relax + +% Default to two-side document +\if@oneside +% nothing to do (oneside is the default) +\else +\PassOptionsToClass{twoside}{\sphinxdocclass} +\fi + +\LoadClass{\sphinxdocclass} + +% Set some sane defaults for section numbering depth and TOC depth. You can +% reset these counters in your preamble. +% +\setcounter{secnumdepth}{2} +\setcounter{tocdepth}{2}% i.e. section and subsection + +% Adapt \and command to the flushright context of \sphinxmaketitle, to +% avoid ragged line endings if author names do not fit all on one single line +\DeclareRobustCommand{\and}{% + \end{tabular}\kern-\tabcolsep + \allowbreak + \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}% +}% +% If it is desired that each author name be on its own line, use in preamble: +%\DeclareRobustCommand{\and}{% +% \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}% +%}% +% Change the title page to look a bit better, and fit in with the fncychap +% ``Bjarne'' style a bit better. +% +\newcommand{\sphinxmaketitle}{% + \noindent\rule{\linewidth}{1pt}\par + \begingroup % for PDF information dictionary + \def\endgraf{ }\def\and{\& }% + \pdfstringdefDisableCommands{\def\\{, }}% overwrite hyperref setup + \hypersetup{pdfauthor={\@author}, pdftitle={\@title}}% + \endgroup + \begin{flushright} + \sphinxlogo + \py@HeaderFamily + {\Huge \@title }\par + {\itshape\large \py@release \releaseinfo}\par + \vspace{25pt} + {\Large + \begin{tabular}[t]{c} + \@author + \end{tabular}\kern-\tabcolsep}\par + \vspace{25pt} + \@date \par + \py@authoraddress \par + \end{flushright} + \@thanks + \setcounter{footnote}{0} + \let\thanks\relax\let\maketitle\relax + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} +} + +\newcommand{\sphinxtableofcontents}{% + \begingroup + \parskip \z@skip + \sphinxtableofcontentshook + \tableofcontents + \endgroup + \noindent\rule{\linewidth}{1pt}\par + \vspace{12pt}% +} +\newcommand\sphinxtableofcontentshook{} +\pagenumbering{arabic} + +% Fix the bibliography environment to add an entry to the Table of +% Contents. +% For an article document class this environment is a section, +% so no page break before it. +% +\newenvironment{sphinxthebibliography}[1]{% + % \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}% + \addcontentsline{toc}{section}{\ifdefined\refname\refname\else\ifdefined\bibname\bibname\fi\fi}}{\end{thebibliography}} + + +% Same for the indices. +% The memoir class already does this, so we don't duplicate it in that case. +% +\@ifclassloaded{memoir} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}} + {\newenvironment{sphinxtheindex}{% + \phantomsection % needed because no chapter, section, ... is created by theindex + \begin{theindex}% + \addcontentsline{toc}{section}{\indexname}}{\end{theindex}}} diff --git a/docs/build/latex/sphinxlatexadmonitions.sty b/docs/build/latex/sphinxlatexadmonitions.sty new file mode 100644 index 0000000..0519903 --- /dev/null +++ b/docs/build/latex/sphinxlatexadmonitions.sty @@ -0,0 +1,403 @@ +%% NOTICES AND ADMONITIONS +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexadmonitions}[2024/10/11 v8.1.1 admonitions] + +% Provides support for this output mark-up from Sphinx latex writer: +% +% - sphinxseealso environment added at 6.1.0. +% +% - sphinxtodo environment added at 7.4.0. +% +% - sphinxadmonition (environment) +% This is a dispatch which formerly configured +% +% - note, hint, important, tip to use sphinxlightbox (or optionally +% sphinxheavybox since 6.2.0), +% - warning, caution, attention, danger, error to use sphinxheavybox. +% +% Since 7.4.0 all admonitions use sphinxheavybox. +% +% - All environments sphinxnote, sphinxwarning, etc... can be redefined as +% will by user. Thay have a single parameter #1 which is the title. +% +% - Also redefinable by user are the one-argument commands +% * \sphinxstylenotetitle, +% * \sphinxstylewarningtitle, +% * etc.... one for each admonition type (also seealso and todo). +% +% - At 7.4.0, all commands of previous item use \sphinxdotitlerow. +% (the 7.4.0 name, still usable, was \sphinxdotitlerowwithicon; the 8.1.0 +% version is also used for topic, contents and sidebar directives, see +% sphinxlatexshadowbox.sty, and handles both "with icon" and "without +% icon" situations). +% +% The sphinxlightbox environment is kept for backward compatibility, for user +% custom code which used it via custom definitions done in preamble or via +% raw latex directive. +% MEMO: here is for example how sphinxnote was formerly defined: +% (where #1 is the localized string Note, followed with a colon) +% \newenvironment{sphinxnote}[1] +% {\begin{sphinxlightbox}\sphinxstrong{#1} } +% {\end{sphinxlightbox}} +% Use this if you want to revert the 7.4.0 switch to usage of sphinxheavybox. +% (the 7.4.0 redefined \sphinxstylenotetitle will not work in sphinxlightbox, +% so \sphinxstrong{#1} which was its former default is used above). + +% Dependencies (they do not need to be defined at time of loading): +% +% - of course the various colour and dimension options handled via sphinx.sty +% - dimension register \spx@image@maxheight from sphinxlatexgraphics.sty +% - \savenotes/\spewnotes from sphinxpackagefootnote.sty +% - \ifspx@inframed defined in sphinx.sty +% - \spx@boxes@fcolorbox@setup from sphinxpackageboxes.sty +% +\RequirePackage{framed} +% Those are required either before or after by sphinx.sty anyhow, but for +% clarity we list them here: +\RequirePackage{sphinxlatexgraphics} +\RequirePackage{sphinxpackagefootnote} +\RequirePackage{sphinxpackageboxes} +% +% Provides: (also in sphinxlatexliterals.sty) +% Only needed here by legacy (deprecated) sphinxlightbox environment. +\providecommand*\sphinxvspacefixafterfrenchlists{% + \ifvmode\ifdim\lastskip<\z@ \vskip\parskip\fi\else\par\fi +} + +% This \dimen register is a legacy relic from Sphinx 1.5 which is used now +% only for sphinxlightbox. It is set in the sphinxadmonition environment. +\newdimen\spx@notice@border +% sphinxlightbox is now also a legacy relic, not used by Sphinx anymore +\newenvironment{sphinxlightbox}{% + \par + \noindent{\color{spx@notice@bordercolor}% + \rule{\linewidth}{\spx@notice@border}}% + \par\nobreak + {\parskip\z@skip\noindent}% + } + {% + % counteract previous possible negative skip (French lists!): + % (we can't cancel that any earlier \vskip introduced a potential pagebreak) + \sphinxvspacefixafterfrenchlists + \nobreak\vbox{\noindent\kern\@totalleftmargin + {\color{spx@notice@bordercolor}% + \rule[\dimexpr.4\baselineskip-\spx@notice@border\relax] + {\linewidth}{\spx@notice@border}}\hss}\allowbreak + }% end of sphinxlightbox environment definition + +% Since 1.5 these environments are named individually sphinxnote, sphinxhint, +% etc... to allow user to redefine them entirely. +% +% The Sphinx definitions for note/hint/important/tip notices were done like +% this, prior to 6.2.0: +% +% \newenvironment{sphinxhint}[1] +% {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +% +% Then from 6.2.0 to 7.4.0 (exclusive) a more complex definition decided +% to use either sphinxlightbox or sphinxheavybox according to whether +% some CSS-like options had been used, for example for a background color. +% +% 6.2.0 also added one layer of mark-up via \sphinxnotetitle etc..., because +% the former \sphinxstrong{#1} used a too generic \sphinxstrong. +% +% At 7.4.0, sphinxheavybox environment is default for all types of notices +% and also for the seealso and todo directives. +% +% Code adapted from framed.sty's "snugshade" environment. +% Nesting works (inner frames do not allow page breaks). +\newenvironment{sphinxheavybox}{\par + % (MEMO: it is not a problem here if there is no sphinxShadowColor, + % as it used only if set) + \spx@boxes@fcolorbox@setup{\spx@noticetype}% + % Those are used by sphinxVerbatim if the \ifspx@inframed boolean is true + \setlength{\FrameRule}{0.5\dimexpr\spx@boxes@border@top+\spx@boxes@border@bottom\relax}% + % MEMO: prior to 5.1.0 \FrameSep was determined as 0.6\baselineskip - + % \FrameRule, and there was no possibility for user to adjust padding. + % Then \fcolorbox was used with \fboxrule set to \FrameRule and \fboxsep + % set to \FrameSep. + % The 5.1.0 default calculation of padding parameters maintains PDF output + % identical to legacy behaviour, as long as padding is not set by user. + \setlength{\FrameSep}{0.5\dimexpr\spx@boxes@padding@top+\spx@boxes@padding@bottom\relax}% + % "setup" macro has prepared the \spx@boxes@... dimen registers + \advance\spx@image@maxheight + -\dimexpr\spx@boxes@border@top+\spx@boxes@border@bottom + +\spx@boxes@padding@top+\spx@boxes@padding@bottom + +\baselineskip\relax % will happen again if nested, needed indeed! + % MEMO: the next comment is before boxing was extended to allow padding and + % multiple border-widths, not to mention shadows... + % configure framed.sty's parameters to obtain same vertical spacing + % as for "light" boxes. We need for this to manually insert parskip glue and + % revert a skip done by framed before the frame. + \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}% + \vspace{\FrameHeightAdjust} + % copied/adapted from framed.sty's snugshade + % but now using in place of \fcolorbox the Sphinx sophisticated own + \def\FrameCommand##1{% + \hskip\@totalleftmargin + % "setup" macro MUST have been called before + \spx@boxes@fcolorbox{##1}% + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth + }% + % 6.2.0 adds support for div._box-decoration-break=slice. + % (it is yet undecided if slice style should inhibit a bottom shadow) + \csname ifspx@\spx@noticetype @border@open\endcsname + \def\FirstFrameCommand + {\spx@boxes@fcolorbox@setup@openbottom\FrameCommand}% + \def\MidFrameCommand + {\spx@boxes@fcolorbox@setup@openboth \FrameCommand}% + \def\LastFrameCommand + {\spx@boxes@fcolorbox@setup@opentop \FrameCommand}% + \fi + \savenotes + % use a minipage if we are already inside a framed environment + \ifspx@inframed + \noindent\begin{minipage}{\linewidth} + \else + % handle case where notice is first thing in a list item (or is quoted) + \if@inlabel + \noindent\par\vspace{-\baselineskip} + \else + \vspace{\parskip} + \fi + \fi + \MakeFramed {\spx@inframedtrue + \advance\hsize-\width \@totalleftmargin\z@ \linewidth\hsize + % minipage initialization copied from LaTeX source code. + \@pboxswfalse + \let\@listdepth\@mplistdepth \@mplistdepth\z@ + \@minipagerestore + \@setminipage }% + \color@begingroup % workaround to an upstream framed.sty bug + } + {% + \par\unskip + \color@endgroup % matches the \color@begingroup + \@minipagefalse + \endMakeFramed + \ifspx@inframed\end{minipage}\fi + % set footnotes at bottom of page + \spewnotes + % arrange for similar spacing below frame as for "light" boxes. + \vskip .4\baselineskip + }% end of sphinxheavybox environment definition + +% - Since 1.5 these environments are named individually to allow user to +% redefine them entirely. +% +% - Since 5.1.0, sphinxheavybox is more versatile and four border widths, four +% padding widths, four corner radii, optional shadow, and three colors can all +% be modified via CSS-named alike options. +% +% - Since 6.2.0, also note/hint/important/tip notices can use these options +% and then they go automatically via sphinxheavybox. If only the legacy options +% are used, they keep using sphinxlightbox. +% +% - Since 6.2.0, \sphinxwarningtitle etc... add one level of mark-up (they +% expand to \sphinxstrong{#1} which was former hard-coded mark-up). +% Example: +% \renewcommand{\sphinxwarningtitle}[1]{\textbf{#1}\par\smallskip +% {\color{sphinxwarningBorderColor}\hrule height1pt}\smallskip} +% +% - Since 7.4.0, all types of notices use sphinxheavybox and the default +% for \sphinxstyletitle is mapped to using \sphinxdotitlerowwithicon{} +% +% MEMO: except for the generic admonition directive (which uses "note" type) +% the argument #1 in these environments has a postfixed colon originating +% in Sphinx LaTeX writer legacy code. The +% \sphinxremovefinalcolon utility in sphinxlatexstyletext.sty can be used as +% \sphinxremovefinalcolon{#1} from inside the definitions of +% \sphinxstylenotetitle et al. commands. + +% Important: even prior to 5.1.0 it was not really possible to use directly +% sphinxheavybox if not triggered from sphinxadmonition, because some +% parameters were defined in sphinxadmonition. This meant that the +% sphinxwarning, sphinxcaution etc... environments (defined below) could not +% be used directly in a document, they had to be triggered via +% sphinxadmonition. The sole data since 5.1.0 needed by sphinxheavybox is the +% type of the notice which sphinxadmonition stores into \spx@noticetype. +% +% In order to facilitate recycling or imitation of the sphinx +% environments, 7.4.0 inserts an extra \def\spx@noticetype{} in their +% definitions, so that they can be used independently of sphinxadmonition +% dispatcher. +% +% MEMO: direct usage of these environments does not execute the div._TeXextras +% and div._TexColor code, there are only done from the sphinxadmonition wrapper. +\newenvironment{sphinxnote}[1] + {\def\spx@noticetype{note}\begin{sphinxheavybox}\sphinxstylenotetitle{#1}} + {\end{sphinxheavybox}} +\newenvironment{sphinxhint}[1] + {\def\spx@noticetype{hint}\begin{sphinxheavybox}\sphinxstylehinttitle{#1}} + {\end{sphinxheavybox}} +\newenvironment{sphinxtip}[1] + {\def\spx@noticetype{tip}\begin{sphinxheavybox}\sphinxstyletiptitle{#1}} + {\end{sphinxheavybox}} +\newenvironment{sphinximportant}[1] + {\def\spx@noticetype{important}\begin{sphinxheavybox}\sphinxstyleimportanttitle{#1}} + {\end{sphinxheavybox}} +\newenvironment{sphinxwarning}[1] + {\def\spx@noticetype{warning}\begin{sphinxheavybox}\sphinxstylewarningtitle{#1}} + {\end{sphinxheavybox}} +\newenvironment{sphinxcaution}[1] + {\def\spx@noticetype{caution}\begin{sphinxheavybox}\sphinxstylecautiontitle{#1}} + {\end{sphinxheavybox}} +\newenvironment{sphinxattention}[1] + {\def\spx@noticetype{attention}\begin{sphinxheavybox}\sphinxstyleattentiontitle{#1}} + {\end{sphinxheavybox}} +\newenvironment{sphinxdanger}[1] + {\def\spx@noticetype{danger}\begin{sphinxheavybox}\sphinxstyledangertitle{#1}} + {\end{sphinxheavybox}} +\newenvironment{sphinxerror}[1] + {\def\spx@noticetype{error}\begin{sphinxheavybox}\sphinxstyleerrortitle{#1}} + {\end{sphinxheavybox}} +% The "see also" was quite plain until 7.4.0 as it simply did +% \newenvironment{sphinxseealso}[1]{\sphinxstyleseealsotitle{#1}}{} +% Here we need to manually insert execution of div.seealso_TeX{color,extras} values +\newenvironment{sphinxseealso}[1] + {\def\spx@noticetype{seealso}% + \begin{sphinxheavybox}\sphinxstyleseealsotitle{#1}% + \ifspx@seealso@withtextcolor\color{sphinxseealsoTextColor}\fi + \spx@seealso@TeXextras + } + {\end{sphinxheavybox}} +% There was no sphinxtodo environment until 7.4.0 because sphinx.ext.todo +% generated \begin{sphinxadmonition}{note}{Todo:} mark-up. +\newcounter{sphinxtodo}% to provide targets from todolist directive output +\newenvironment{sphinxtodo}[1] + {\refstepcounter{sphinxtodo}\def\spx@noticetype{todo}% + \begin{sphinxheavybox}\sphinxstyletodotitle{#1}% + \ifspx@todo@withtextcolor\color{sphinxtodoTextColor}\fi + \spx@todo@TeXextras + } + {\end{sphinxheavybox}} + + +% the main dispatch for all types of notices +\newenvironment{sphinxadmonition}[2]{% #1=type, #2=heading + % can't use #1 directly in definition of end part + \def\spx@noticetype {#1}% + % those next three are a remnant of legacy code; they are not used at + % all by sphinxheavybox, and their usage could be disposed of by sphinxlightbox + % but we keep for backward compatibility and also because it may be simpler + % for user redefinitions to employ for example "spx@notice@bgcolor" and not + % the more bulky "sphinx\spx@noticetype BgColor". + \sphinxcolorlet{spx@notice@bordercolor}{sphinx#1BorderColor}% + \sphinxcolorlet{spx@notice@bgcolor}{sphinx#1BgColor}% + % At 7.4.0 there are no \spx@@boder macros anymore only top, left, + % bottom, right. For this legacy \spx@notice@border only needed by + % sphinxlightbox (which is not used by own Sphinx environments anymore) + % we thus use here @top + \spx@notice@border \dimexpr\csname spx@#1@border@top\endcsname\relax + % trigger the sphinx environment, #2=heading is passed as argument + \begin{sphinx#1}{#2}% + % MEMO: the heading #2 will be typeset before the next lines are executed + % 6.2.0 support of div._TeX{color,extras} options + \csname ifspx@\spx@noticetype @withtextcolor\endcsname + \color{sphinx\spx@noticetype TextColor}% + \fi + % Other code to be executed at start of contents (after title) + \csname spx@\spx@noticetype @TeXextras\endcsname + } + % workaround some LaTeX "feature" of \end command (i.e. can't use "sphinx#1" here) + {\edef\spx@temp{\noexpand\end{sphinx\spx@noticetype}}\spx@temp} + +% TODO: allow these next three settings to be customized individually. +% This can however already be done at user level by \renewcommand +% inside renew'ed environments sphinxnote, sphinxhint etc... +\newcommand\sphinxtitlerowtoppadding{5pt} +\newcommand\sphinxtitlerowbottompadding{3pt} +\newcommand\sphinxtitlerowaftericonspacecmd{\hskip0.5em\relax} +% 7.4.0 used this longer name: +\newcommand\sphinxdotitlerowwithicon{\sphinxdotitlerow} +\newcommand\sphinxdotitlerow[2]{% #1=type, #2=heading (without final colon) + \begingroup + \kern-\spx@boxes@padding@top + \parskip\z@skip % the \parskip business is a workaround to a vertical + % glue issue showing in LaTeX earlier than 2023-06-01 + \noindent + \kern-\spx@boxes@padding@left % must have been configured by a prior + % \spx@boxes@fcolorbox@setup{} + % inherit settings from the enclosing box and modify what is needed + \spx@boxes@border@top =\z@ + \spx@boxes@border@right =\z@ + \spx@boxes@border@bottom =\z@ + \spx@boxes@border@left =\z@ + \spx@boxes@radius@bottomright@x=\z@ + \spx@boxes@radius@bottomright@y=\z@ + \spx@boxes@radius@bottomleft@x=\z@ + \spx@boxes@radius@bottomleft@x=\z@ + \spx@boxes@padding@top =\sphinxtitlerowtoppadding\relax + \spx@boxes@padding@bottom=\sphinxtitlerowbottompadding\relax + \spx@boxes@withshadowfalse + \sphinxcolorlet{spx@boxes@backgroundcolor}{sphinx#1TtlBgColor}% + \spx@boxes@fcolorbox{% + \parbox[t]{\linewidth}{% 7.4.0 used \makebox, but wrapping of long titles + % is needed for generic admonition or topic box. + \sphinxAtStartPar + % 8.1.0 auto-drops extra space if no icon + \sbox\z@{\@nameuse{sphinx#1TtlIcon}}% + \ifdim\wd\z@>\z@ + \textcolor{sphinx#1TtlFgColor}{% + \@nameuse{sphinx#1TtlIcon}% + % The next macro is located here for legacy reasons of earlier + % functioning of \spx@faIcon. When fontawesome{5,}.sty both + % are unavailable, it (formerly) gobbled this next macro. + % We leave it here now although it could be moved to after + % the closing brace. + \sphinxtitlerowaftericonspacecmd + }% + \fi + \sphinxstrong{#2}% + \strut + \par + }% + }% + \kern-\spx@boxes@padding@right + \par + \endgroup + \vskip-\parskip + \kern\spx@boxes@padding@top +} + +% #1 holds the localized name of the notice, postfixed with a colon. +% \sphinxremovefinalcolon{#1} will typeset #1 without the colon. +% Legacy definitions (done in sphinxlatexstyletext.sty) were all using +% a boring plain \sphinxstrong{#1}, now we use a coloured title row. +\newcommand\sphinxstylenotetitle [1]{\sphinxdotitlerow{note}{\sphinxremovefinalcolon{#1}}} +\newcommand\sphinxstylehinttitle [1]{\sphinxdotitlerow{hint}{\sphinxremovefinalcolon{#1}}} +\newcommand\sphinxstyleimportanttitle[1]{\sphinxdotitlerow{important}{\sphinxremovefinalcolon{#1}}} +\newcommand\sphinxstyletiptitle [1]{\sphinxdotitlerow{tip}{\sphinxremovefinalcolon{#1}}} +\newcommand\sphinxstylewarningtitle [1]{\sphinxdotitlerow{warning}{\sphinxremovefinalcolon{#1}}} +\newcommand\sphinxstylecautiontitle [1]{\sphinxdotitlerow{caution}{\sphinxremovefinalcolon{#1}}} +\newcommand\sphinxstyleattentiontitle[1]{\sphinxdotitlerow{attention}{\sphinxremovefinalcolon{#1}}} +\newcommand\sphinxstyledangertitle [1]{\sphinxdotitlerow{danger}{\sphinxremovefinalcolon{#1}}} +\newcommand\sphinxstyleerrortitle [1]{\sphinxdotitlerow{error}{\sphinxremovefinalcolon{#1}}} +\newcommand\sphinxstyleseealsotitle [1]{\sphinxdotitlerow{seealso}{\sphinxremovefinalcolon{#1}}} +\newcommand\sphinxstyletodotitle [1]{\sphinxdotitlerow{todo}{\sphinxremovefinalcolon{#1}}} +% +% A utility to remove a final colon. Removing last token is not easy in +% LaTeX, and there are additional complications: +% - some languages will make the : "active" in document body, +% - the generic admonition ends up using "note", so for \sphinxnotetitle to +% use it safely, the utility has to allow an input not having any final colon. +% - a bit far-fetched but maybe there is more than one colon inside the input +% (possible from a generic admonition title). +% Hence the scary code. +\newcommand\sphinxremovefinalcolon[1]{% #1 is the "active" : TeX token +% Prior to 7.4.0 this was defined with \protected\def but we do not +% see what usefulness this could have. +\renewcommand\sphinxremovefinalcolon[1]{% + % complications due to : possibly "active" + \begingroup\ifnum\catcode`:=\active + \def\x####1#1\relax{####1}% + \else\def\x####1:\relax{####1}\fi + \expandafter\endgroup\x##1\relax + % trick to let \x work also if input ##1 has no ending colon + \@gobblefour#1\relax:\relax\relax\relax + }% +}% end of wrapper to inject active : +\begingroup\catcode`:\active\expandafter\endgroup\sphinxremovefinalcolon: + +\endinput diff --git a/docs/build/latex/sphinxlatexcontainers.sty b/docs/build/latex/sphinxlatexcontainers.sty new file mode 100644 index 0000000..012d9ee --- /dev/null +++ b/docs/build/latex/sphinxlatexcontainers.sty @@ -0,0 +1,22 @@ +%% CONTAINER DIRECTIVES +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexcontainers}[2021/05/03 containers] + +% The purpose of this file is to provide a dummy environment sphinxclass which +% will be inserted for each class in each container directive. The class name +% will be passed as the argument to the environment. +% +% For a class foo, the user can define customised handling of that class by +% defining the sphinxclassfoo LaTeX environment. + +\newenvironment{sphinxuseclass}[1]{% + \def\sphinxClassFunctionName{sphinxclass#1}% + \ltx@ifundefined{\sphinxClassFunctionName}% + {}% undefined so do nothing + {\expandafter\begin\expandafter{\sphinxClassFunctionName}}% +}{% + \ltx@ifundefined{\sphinxClassFunctionName}% + {}% we did nothing so we keep doing nothing + {\expandafter\end\expandafter{\sphinxClassFunctionName}}% +}% diff --git a/docs/build/latex/sphinxlatexgraphics.sty b/docs/build/latex/sphinxlatexgraphics.sty new file mode 100644 index 0000000..f0c7c25 --- /dev/null +++ b/docs/build/latex/sphinxlatexgraphics.sty @@ -0,0 +1,123 @@ +%% GRAPHICS +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexgraphics}[2024/08/13 v8.1.0 graphics] + +% Provides support for this output mark-up from Sphinx latex writer: +% +% - macros: +% +% - \sphinxfigcaption +% - \sphinxincludegraphics +% +% - environments: +% +% - sphinxfigure-in-table +% +% May change: +% +% - \sphinxcaption (at begin document) +% +% Also provides: +% +% - \sphinxsafeincludegraphics (default of \sphinxincludegraphics since 2.0) +% - \spx@image@maxheight dimension (used by sphinxlatexadmonitions.sty) +% - \spx@image@box scratch box register (also used by sphinxlatexliterals.sty) +% +% Requires: +% \RequirePackage{graphicx}% done in sphinx.sty +\RequirePackage{amstext}% needed for \firstchoice@true(false) + +% \sphinxincludegraphics resizes images larger than the TeX \linewidth (which +% is adjusted in indented environments), or taller than a certain maximal +% height (usually \textheight and this is reduced in the environments which use +% framed.sty to avoid infinite loop if image too tall). +% +% In case height or width options are present the rescaling is done +% (since 2.0), in a way keeping the width:height ratio either native from +% image or from the width and height options if both were present. +% +\newdimen\spx@image@maxheight +\AtBeginDocument{\spx@image@maxheight\textheight} + +% box scratch register +\newbox\spx@image@box +\newcommand*{\sphinxsafeincludegraphics}[2][]{% + % #1 contains possibly width=, height=, but no scale= since 1.8.4 + \setbox\spx@image@box\hbox{\includegraphics[#1,draft]{#2}}% + \in@false % use some handy boolean flag + \ifdim \wd\spx@image@box>\linewidth + \in@true % flag to remember to adjust options and set box dimensions + % compute height which results from rescaling width to \linewidth + % and keep current aspect ratio. multiply-divide in \numexpr uses + % temporarily doubled precision, hence no overflow. (of course we + % assume \ht is not a few sp's below \maxdimen...(about 16384pt). + \edef\spx@image@rescaledheight % with sp units + {\the\numexpr\ht\spx@image@box + *\linewidth/\wd\spx@image@box sp}% + \ifdim\spx@image@rescaledheight>\spx@image@maxheight + % the rescaled height will be too big, so it is height which decides + % the rescaling factor + \def\spx@image@requiredheight{\spx@image@maxheight}% dimen register + \edef\spx@image@requiredwidth % with sp units + {\the\numexpr\wd\spx@image@box + *\spx@image@maxheight/\ht\spx@image@box sp}% + % TODO: decide if this commented-out block could be needed due to + % rounding in numexpr operations going up + % \ifdim\spx@image@requiredwidth>\linewidth + % \def\spx@image@requiredwidth{\linewidth}% dimen register + % \fi + \else + \def\spx@image@requiredwidth{\linewidth}% dimen register + \let\spx@image@requiredheight\spx@image@rescaledheight% sp units + \fi + \else + % width is ok, let's check height + \ifdim\ht\spx@image@box>\spx@image@maxheight + \in@true + \edef\spx@image@requiredwidth % with sp units + {\the\numexpr\wd\spx@image@box + *\spx@image@maxheight/\ht\spx@image@box sp}% + \def\spx@image@requiredheight{\spx@image@maxheight}% dimen register + \fi + \fi % end of check of width and height + \ifin@ + \setbox\spx@image@box + \hbox{\includegraphics + [#1,% contains only width and/or height which are overruled next + % but in future may contain page=N hence must be kept + width=\spx@image@requiredwidth,height=\spx@image@requiredheight]% + {#2}}% + % \includegraphics does not set box dimensions to the exactly + % requested ones, see https://github.com/latex3/latex2e/issues/112 + \wd\spx@image@box\spx@image@requiredwidth + \ht\spx@image@box\spx@image@requiredheight + \leavevmode\box\spx@image@box + \else + % here we do not modify the options, no need to adjust width and height + % on output, they will be computed exactly as with "draft" option + \setbox\spx@image@box\box\voidb@x % clear memory + \includegraphics[#1]{#2}% + \fi +}% +% Use the "safe" one by default (2.0) +\def\sphinxincludegraphics{\sphinxsafeincludegraphics} + + +%% FIGURE IN TABLE +% +\newenvironment{sphinxfigure-in-table}[1][\linewidth]{% + \def\@captype{figure}% + \sphinxsetvskipsforfigintablecaption + \begin{minipage}{#1}% +}{\end{minipage}} +% tabulary expands twice contents, we need to prevent double counter stepping +\newcommand*\sphinxfigcaption + {\ifx\equation$%$% this is trick to identify tabulary first pass + \firstchoice@false\else\firstchoice@true\fi + \spx@originalcaption } +\newcommand*\sphinxsetvskipsforfigintablecaption + {\abovecaptionskip\smallskipamount + \belowcaptionskip\smallskipamount} + +\endinput diff --git a/docs/build/latex/sphinxlatexindbibtoc.sty b/docs/build/latex/sphinxlatexindbibtoc.sty new file mode 100644 index 0000000..052d31e --- /dev/null +++ b/docs/build/latex/sphinxlatexindbibtoc.sty @@ -0,0 +1,69 @@ +%% INDEX, BIBLIOGRAPHY, APPENDIX, TABLE OF CONTENTS +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexindbibtoc}[2021/01/27 index, bib., toc] + +% Provides support for this output mark-up from Sphinx latex writer: +% +% - environments: (backup defaults or get redefined) +% +% - sphinxtheindex (direct mark-up or via python.ist or sphinx.xdy) +% - sphinxthebibliography +% +% - macros: (defines defaults) +% +% - \sphinxmaketitle +% - \sphinxtableofcontents +% - \sphinxnonalphabeticalgroupname +% - \sphinxsymbolsname +% - \sphinxnumbersname +% - \sphinxcite +% +% Requires: +\RequirePackage{makeidx} + +% fix the double index and bibliography on the table of contents +% in jsclasses (Japanese standard document classes) +\ifx\@jsc@uplatextrue\@undefined\else + \renewenvironment{sphinxtheindex} + {\cleardoublepage\phantomsection + \begin{theindex}} + {\end{theindex}} + + \renewenvironment{sphinxthebibliography}[1] + {\cleardoublepage% \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}} + {\end{thebibliography}} +\fi + +% disable \@chappos in Appendix in pTeX +\ifx\kanjiskip\@undefined\else + \let\py@OldAppendix=\appendix + \renewcommand{\appendix}{ + \py@OldAppendix + \gdef\@chappos{} + } +\fi + +% make commands known to non-Sphinx document classes +\providecommand*{\sphinxmaketitle}{\maketitle} +\providecommand*{\sphinxtableofcontents}{\tableofcontents} +\ltx@ifundefined{sphinxthebibliography} + {\newenvironment + {sphinxthebibliography}{\begin{thebibliography}}{\end{thebibliography}}% + } + {}% else clause of \ltx@ifundefined +\ltx@ifundefined{sphinxtheindex} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}}% + {}% else clause of \ltx@ifundefined + +% for usage with xindy: this string gets internationalized in preamble +\newcommand*{\sphinxnonalphabeticalgroupname}{} +% redefined in preamble, headings for makeindex produced index +\newcommand*{\sphinxsymbolsname}{} +\newcommand*{\sphinxnumbersname}{} + +\protected\def\sphinxcite{\cite} + + +\endinput diff --git a/docs/build/latex/sphinxlatexlists.sty b/docs/build/latex/sphinxlatexlists.sty new file mode 100644 index 0000000..4db3af2 --- /dev/null +++ b/docs/build/latex/sphinxlatexlists.sty @@ -0,0 +1,131 @@ +%% ALPHANUMERIC LIST ITEMS +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexlists}[2021/12/20 lists] + +% Provides support for this output mark-up from Sphinx latex writer: +% - \sphinxsetlistlabels +% - \sphinxlineitem +% and for the maxlistdepth key of sphinxsetup +% Dependencies: the \spx@opt@maxlistdepth from sphinx.sty + +% We need some helpers macros +\newtoks\spx@lineitemlabel +\long\def\sphinx@gobto@sphinxlineitem#1\sphinxlineitem{} +% TeX/LaTeX has no (easy to use) built-in "peek-ahead" mechanism, but +% we would like to know if next token is another \sphinxlineitem (this +% can happen in glossary entries with multiple terms for same definition) +% so we simply grab next token (assuming it is not {tokens} originally) +\newcommand\sphinxlineitem[2]{% + % safe test of whether #2 is \sphinxlineitem + \sphinx@gobto@sphinxlineitem#2\@gobbletwo\sphinxlineitem\unless + \iftrue + % case with sphinxlineitem immediately followed by another \sphinxlineitem: + % accumulate successive terms until actual definition or sub-list is found + \spx@lineitemlabel\expandafter{\the\spx@lineitemlabel\strut#1\\}% + \else + % now issue the \item command with possibly multi-line contents + % these weird incantations with \kern are related to how LaTeX + % handles \item generally + \item[\kern\labelwidth\kern-\itemindent\kern-\leftmargin + {\parbox[t]{\dimexpr\linewidth+\leftmargin\relax}{% + \raggedright + \the\spx@lineitemlabel% accumulated terms before this one, CR separated + \strut#1}}% due to LaTeX internals no \par token allowed here, + % but the \parbox will insert one tacitly at end + \kern-\labelsep]% + \spx@lineitemlabel{}% + % this causes the label to be typeset (filling up the line), clearing up + % things in case a nested list follows. + \leavevmode + \fi #2% +}% + + +\newcommand\sphinxsetlistlabels[5] +{% #1 = style, #2 = enum, #3 = enumnext, #4 = prefix, #5 = suffix + % #2 and #3 are counters used by enumerate environment e.g. enumi, enumii. + % #1 is a macro such as \arabic or \alph + % prefix and suffix are strings (by default empty and a dot). + \@namedef{the#2}{#1{#2}}% + \@namedef{label#2}{#4\@nameuse{the#2}#5}% + \@namedef{p@#3}{\@nameuse{p@#2}#4\@nameuse{the#2}#5}% +}% + + +%% MAXLISTDEPTH +% +% remove LaTeX's cap on nesting depth if 'maxlistdepth' key used. +% This is a hack, which works with the standard classes: it assumes \@toodeep +% is always used in "true" branches: "\if ... \@toodeep \else .. \fi." + +% will force use the "false" branch (if there is one) +\def\spx@toodeep@hack{\fi\iffalse} + +% do nothing if 'maxlistdepth' key not used or if package enumitem loaded. +\ifnum\spx@opt@maxlistdepth=\z@\expandafter\@gobbletwo\fi +\AtBeginDocument{% +\@ifpackageloaded{enumitem}{\remove@to@nnil}{}% + \let\spx@toodeepORI\@toodeep + \def\@toodeep{% + \ifnum\@listdepth<\spx@opt@maxlistdepth\relax + \expandafter\spx@toodeep@hack + \else + \expandafter\spx@toodeepORI + \fi}% +% define all missing \@list... macros + \count@\@ne + \loop + \ltx@ifundefined{@list\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \expandafter\let + \csname @list\romannumeral\the\count@\expandafter\endcsname + \csname @list\romannumeral\the\numexpr\count@-\@ne\endcsname + % workaround 2.6--3.2d babel-french issue (fixed in 3.2e; no change needed) + \ltx@ifundefined{leftmargin\romannumeral\the\count@} + {\expandafter\let + \csname leftmargin\romannumeral\the\count@\expandafter\endcsname + \csname leftmargin\romannumeral\the\numexpr\count@-\@ne\endcsname}{}% + \advance\count@\@ne + \repeat +% define all missing enum... counters and \labelenum... macros and \p@enum.. + \count@\@ne + \loop + \ltx@ifundefined{c@enum\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \newcounter{enum\romannumeral\the\count@}% + \expandafter\def + \csname labelenum\romannumeral\the\count@\expandafter\endcsname + \expandafter + {\csname theenum\romannumeral\the\numexpr\count@\endcsname.}% + \expandafter\def + \csname p@enum\romannumeral\the\count@\expandafter\endcsname + \expandafter + {\csname p@enum\romannumeral\the\numexpr\count@-\@ne\expandafter + \endcsname\csname theenum\romannumeral\the\numexpr\count@-\@ne\endcsname.}% + \advance\count@\@ne + \repeat +% define all missing labelitem... macros + \count@\@ne + \loop + \ltx@ifundefined{labelitem\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \expandafter\let + \csname labelitem\romannumeral\the\count@\expandafter\endcsname + \csname labelitem\romannumeral\the\numexpr\count@-\@ne\endcsname + \advance\count@\@ne + \repeat + \PackageInfo{sphinx}{maximal list depth extended to \spx@opt@maxlistdepth}% +\@gobble\@nnil +} + +\endinput diff --git a/docs/build/latex/sphinxlatexliterals.sty b/docs/build/latex/sphinxlatexliterals.sty new file mode 100644 index 0000000..11991d9 --- /dev/null +++ b/docs/build/latex/sphinxlatexliterals.sty @@ -0,0 +1,1000 @@ +%% LITERAL BLOCKS +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexliterals}[2024/07/01 v7.4.0 code-blocks and parsed literals] + +% Provides support for this output mark-up from Sphinx latex writer: +% +% - macros: +% - \sphinxLiteralBlockLabel +% - \sphinxSetupCaptionForVerbatim +% - \sphinxSetupCodeBlockInFootnote +% - \sphinxhref +% - \sphinxnolinkurl +% - \sphinxresetverbatimhllines +% - \sphinxunactivateextrasandspace +% - \sphinxupquote +% - \sphinxurl +% +% - environments: +% - sphinxVerbatim +% - sphinxVerbatimintable +% - sphinxalltt +% +% Dependency: +% +% - hyperref (for \phantomsection and \capstart) (loaded later) +% +% Executes \RequirePackage for: +% +% - framed +% - fancyvrb +% - alltt +% - upquote +% - needspace +% - sphinxpackageboxes +\RequirePackage{sphinxpackageboxes} +% 7.4.0 removes unneeded usage of \spx@boxes@border + +% also in sphinxlatexadmonitions.sty: +% This is a workaround to a "feature" of French lists, when literal block +% follows immediately; usable generally (does only \par then), a priori... +\providecommand*\sphinxvspacefixafterfrenchlists{% + \ifvmode\ifdim\lastskip<\z@ \vskip\parskip\fi\else\par\fi +} + +% For framing allowing pagebreaks +\RequirePackage{framed} +% For source code +% MEMO: fancyvrb is used mainly to +% 1- control horizontal and vertical spacing +% 2- optional line numbering +% 3- optional line emphasizing +% 4- while still allowing expansion of Pygments latex mark-up +% Other aspects such as framing, caption handling, codeline wrapping are +% added on top of it. We should stop using fancyvrb and implement +% 1, 2, 3, 4 by own Sphinx fully native Verbatim. This would greatly simplify +% in particular wrapping long code lines in a way allowing page breaks. +\RequirePackage{fancyvrb} +% For parsed-literal blocks. +\RequirePackage{alltt} +% Display "real" single quotes in literal blocks. +\RequirePackage{upquote} +% Skip to next page if not enough space at bottom +\RequirePackage{needspace} + +% Based on use of "fancyvrb.sty"'s Verbatim. +% - with framing allowing page breaks ("framed.sty") +% - with breaking of long lines (exploits Pygments mark-up), +% - with possibly of a top caption, non-separable by pagebreak. +% - and usable inside tables or footnotes ("sphinxpackagefootnote.sty"). + +% for emphasizing lines +\define@key{FV}{hllines}{\def\sphinx@verbatim@checkifhl##1{\in@{, ##1,}{#1}}} +% sphinxVerbatim must be usable by third party without requiring hllines set-up +\def\sphinxresetverbatimhllines{\def\sphinx@verbatim@checkifhl##1{\in@false}} +\sphinxresetverbatimhllines + +% Prior to Sphinx 1.5, \Verbatim and \endVerbatim were modified by Sphinx. +% The aliases defined here are used in sphinxVerbatim environment and can +% serve as hook-points with no need to modify \Verbatim itself. +\let\OriginalVerbatim \Verbatim +\let\endOriginalVerbatim\endVerbatim + +% for captions of literal blocks +% at start of caption title +\newcommand*{\fnum@literalblock}{\literalblockname\nobreakspace\theliteralblock} +% this will be overwritten in document preamble by Babel translation +\newcommand*{\literalblockname}{Listing } +% file extension needed for \caption's good functioning, the file is created +% only if a \listof{literalblock}{foo} command is encountered, which is +% analogous to \listoffigures, but for the code listings (foo = chosen title.) +\newcommand*{\ext@literalblock}{lol} + +% if forced use of minipage encapsulation is needed (e.g. table cells) +\newif\ifsphinxverbatimwithminipage \sphinxverbatimwithminipagefalse + +% Framing macro for use with framed.sty's \FrameCommand +% MEMO: the sophisticated code in \spx@fcolorbox/\spx@CustomFBox +% is here for good reasons +% - be responsive to indented list environments in the manner of +% the "framed" (\fbox) and "shaded" (\colorbox) environments of +% framed.sty; indeed code here is an evolution related to \fcolorbox +% - attach non-detachable continuation hints above/below frame +% - draw the frame and fill the background color in a manner avoiding +% problems in some pdf viewers +% - do background coloring differently from color.sty/xcolor.sty macros +% (even core internal ones) to work around issues at page breaks +% as the framed contents are split into chunks with possibly unpaired +% "color push" or "color pop" +% About the produced output: +% - it obeys current indentation, +% - frame with 4 padding parameters and 4 border-width parameters +% - the contents use the full available text width, limited by indentation, +% - #1 = will be typeset above frame, in a non detachable way, +% - #2 = will be typeset below frame, in a non detachable way, +% - #3 = will be typeset within the frame. +% #1 and #2 are expected to be already typeset \hbox'es. +% #3 are the contents, and in the context of usage of fancyvrb+framed, +% it will arrive here already transformed into horizontal boxes, +% interline penalties and glues. +% +\long\def\spx@verb@FrameCommand #1#2#3{% + % The \spx@verb@boxes@fcolorbox@setup MUST have been executed beforehand. + % These \hskips are for fancyvrb.sty measuring and will make the + % framing "adapt" to an indented context. + \hskip\@totalleftmargin + \hskip-\spx@boxes@border@left\hskip-\spx@boxes@padding@left + \spx@verb@fcolorbox {#1}{#2}{#3}% + \hskip-\spx@boxes@padding@right\hskip-\spx@boxes@border@right + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth +}% +\long\def\spx@verb@fcolorbox #1#2#3{% + % The \spx@verb@boxes@fcolorbox@setup MUST have been executed beforehand. +% + % MEMO: in the context of framed.sty this will always expand inside some + % \hbox isolated from other code, so we can use \box\z@, \box\tw@,... + % with no need of extra group. +% + % MEMO: this code was originally using \color@b@x but the latter has + % problematic features regarding color in a context like here where #3 + % may contain an unbalanced "color push". +% + \setbox\z@\hbox{#3}% + \edef\spx@verb@fcolorbox@width@sp + {\number\dimexpr\wd\z@+\spx@boxes@border@left + +\spx@boxes@padding@left + +\spx@boxes@padding@right + +\spx@boxes@border@right\relax sp}% + \vbox{#1% continuation hint attached above frame, uses \spx@verb@fcolorbox@width@sp + % the boxes@fcolorbox constructs an \hbox with bbox containing the border + % \spx@verb@boxes@fcolorbox@setup MUST have been executed beforehand. + \spx@boxes@fcolorbox{\box\z@}% + % This \nointerlineskip to maintain legacy spacing when a \hrule was + % formerly last prior item in vertical list. TODO: remove this at 6.0.0 ? + \nointerlineskip + #2% continuation hint attached below frame, uses \spx@verb@fcolorbox@width@sp + }% end of \vbox +}% +\def\spx@verb@fcolorbox@put@c#1{% hide width from framed.sty measuring + \moveright.5\dimexpr\spx@verb@fcolorbox@width@sp\hb@xt@\z@{\hss#1\hss}% +}% +\def\spx@verb@fcolorbox@put@r#1{% right align with contents, width hidden + \moveright\dimexpr\spx@verb@fcolorbox@width@sp-% + \spx@boxes@padding@right-% + \spx@boxes@border@right\hb@xt@\z@{\hss#1}% +}% +\def\spx@verb@fcolorbox@put@l#1{% left align with contents, width hidden + \moveright\dimexpr\spx@boxes@border@left+% + \spx@boxes@padding@left\hb@xt@\z@{#1\hss}% +}% +% +\def\sphinxVerbatim@Continued{% + \csname spx@verb@fcolorbox@put@\spx@opt@verbatimcontinuedalign\endcsname + {{\normalcolor\sphinxstylecodecontinued\literalblockcontinuedname}}% +}% +\def\sphinxVerbatim@Continues{% + \csname spx@verb@fcolorbox@put@\spx@opt@verbatimcontinuesalign\endcsname + {{\normalcolor\sphinxstylecodecontinues\literalblockcontinuesname}}% +}% +\def\sphinxVerbatim@Title{% + \spx@verb@fcolorbox@put@c{\unhcopy\sphinxVerbatim@TitleBox}% +}% +\let\sphinxVerbatim@Before\@empty +\let\sphinxVerbatim@After\@empty +% Defaults are redefined in document preamble according to language +\newcommand*\literalblockcontinuedname{continued from previous page}% +\newcommand*\literalblockcontinuesname{continues on next page}% +% +\def\sphinxVerbatim@FrameCommand{% + \spx@verb@FrameCommand\sphinxVerbatim@Before\sphinxVerbatim@After +}% +\def\sphinxVerbatim@FirstFrameCommand{% + \ifspx@pre@border@open + \spx@boxes@fcolorbox@setup@openbottom + \fi + \spx@verb@FrameCommand\sphinxVerbatim@Before\sphinxVerbatim@Continues +}% +\def\sphinxVerbatim@MidFrameCommand{% + \ifspx@pre@border@open + \spx@boxes@fcolorbox@setup@openboth + \fi + \spx@verb@FrameCommand\sphinxVerbatim@Continued\sphinxVerbatim@Continues +}% +\def\sphinxVerbatim@LastFrameCommand{% + \ifspx@pre@border@open + \spx@boxes@fcolorbox@setup@opentop + \fi + \spx@verb@FrameCommand\sphinxVerbatim@Continued\sphinxVerbatim@After +}% +% +\def\spx@verb@boxes@fcolorbox@setup{% + % Prepares usage of \spx@boxes@fcolorbox + % Extras to remap legacy color names VerbatimBorderColor and VerbatimColor + % to a common naming scheme with admonitions (and topic directive), as + % expected by \spx@boxes@fcolorbox@setup from sphinxpackageboxes.sty. + \sphinxcolorlet{sphinxpreBorderColor}{VerbatimBorderColor}% + \sphinxcolorlet{sphinxpreBgColor}{VerbatimColor}% + % This VerbatimShadowColor is not a legacy name nor user documented but is + % an outcome of sphinx.sty batch definitions for CSS option support. + \sphinxcolorlet{sphinxpreShadowColor}{VerbatimShadowColor}% + \spx@boxes@fcolorbox@setup{pre}% + \ifspx@opt@verbatimwithframe + \else + \spx@boxes@border@top\z@ + \spx@boxes@border@right\z@ + \spx@boxes@border@bottom\z@ + \spx@boxes@border@left\z@ + % MEMO: rounded corners still make sense in presence of a background + % color, so we do not force the fcolorbox@rectangle here + \fi +}% + +% For linebreaks inside Verbatim environment from package fancyvrb. +\newbox\sphinxcontinuationbox +\newbox\sphinxvisiblespacebox +\newcommand*\sphinxafterbreak {\copy\sphinxcontinuationbox} + +% Take advantage of the already applied Pygments mark-up to insert +% potential linebreaks for TeX processing. +% {, <, #, %, $, ' and ": go to next line. +% _, }, ^, &, >, -, ~, and \: stay at end of broken line. +% Use of \textquotesingle for straight quote. +% FIXME: convert this to package options ? +\newcommand*\sphinxbreaksbeforelist {% + \do\PYGZob\{\do\PYGZlt\<\do\PYGZsh\#\do\PYGZpc\%% {, <, #, %, + \do\PYGZdl\$\do\PYGZdq\"% $, " + \def\PYGZsq + {\discretionary{}{\sphinxafterbreak\textquotesingle}{\textquotesingle}}% ' +} +\newcommand*\sphinxbreaksafterlist {% + \do\PYGZus\_\do\PYGZcb\}\do\PYGZca\^\do\PYGZam\&% _, }, ^, &, + \do\PYGZgt\>\do\PYGZhy\-\do\PYGZti\~% >, -, ~ + \do\PYGZbs\\% \ +} +\newcommand*\sphinxbreaksatspecials {% + \def\do##1##2% + {\def##1{\discretionary{}{\sphinxafterbreak\char`##2}{\char`##2}}}% + \sphinxbreaksbeforelist + \def\do##1##2% + {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}% + \sphinxbreaksafterlist +} + +\def\sphinx@verbatim@nolig@list {\do \`}% +% Some characters . , ; ? ! / are neither pygmentized nor "tex-escaped". +% This macro makes them "active" and they will insert potential linebreaks. +% Not compatible with math mode (cf \sphinxunactivateextras, which uses +% these lists to make sure activated characters get de-activated). +\newcommand*\sphinxbreaksbeforeactivelist {}% none +\newcommand*\sphinxbreaksafteractivelist {\do\.\do\,\do\;\do\?\do\!\do\/} +\newcommand*\sphinxbreaksviaactive {% + \def\do##1{\lccode`\~`##1% + \lowercase{\def~}{\discretionary{}{\sphinxafterbreak\char`##1}{\char`##1}}% + \catcode`##1\active}% + \sphinxbreaksbeforeactivelist + \def\do##1{\lccode`\~`##1% + \lowercase{\def~}{\discretionary{\char`##1}{\sphinxafterbreak}{\char`##1}}% + \catcode`##1\active}% + \sphinxbreaksafteractivelist + \lccode`\~`\~ +} + +% If the linebreak is at a space, the latter will be displayed as visible +% space at end of first line, and a continuation symbol starts next line. +\def\spx@verbatim@space {% + \nobreak\hskip\z@skip + \discretionary{\copy\sphinxvisiblespacebox}{\sphinxafterbreak} + {\kern\fontdimen2\font}% +}% + +% if the available space on page is less than \literalblockneedspace, insert pagebreak +\newcommand{\sphinxliteralblockneedspace}{5\baselineskip} +\newcommand{\sphinxliteralblockwithoutcaptionneedspace}{1.5\baselineskip} +% The title (caption) is specified from outside as macro \sphinxVerbatimTitle. +% \sphinxVerbatimTitle is reset to empty after each use of Verbatim. +\newcommand*\sphinxVerbatimTitle {} +% This box to typeset the caption before framed.sty multiple passes for framing. +\newbox\sphinxVerbatim@TitleBox +% This box to measure contents if nested as inner \MakeFramed requires then +% minipage encapsulation but too long contents then break outer \MakeFramed +\newbox\sphinxVerbatim@ContentsBox +% Holder macro for labels of literal blocks. Set-up by LaTeX writer. +\newcommand*\sphinxLiteralBlockLabel {} +\newcommand*\sphinxSetupCaptionForVerbatim [1] +{% + \sphinxvspacefixafterfrenchlists + \needspace{\sphinxliteralblockneedspace}% +% insert a \label via \sphinxLiteralBlockLabel +% reset to normal the color for the literal block caption + \def\sphinxVerbatimTitle + {\py@NormalColor\sphinxcaption{\sphinxLiteralBlockLabel #1}}% +} +\newcommand*\sphinxSetupCodeBlockInFootnote {% + \fvset{fontsize=\footnotesize}\let\caption\sphinxfigcaption + \sphinxverbatimwithminipagetrue % reduces vertical spaces + % we counteract (this is in a group) the \@normalsize from \caption + \let\normalsize\footnotesize\let\@parboxrestore\relax + \def\spx@abovecaptionskip{\sphinxverbatimsmallskipamount}% +} +\newcommand*{\sphinxverbatimsmallskipamount}{\smallskipamount} +% serves to implement line highlighting +\newcommand\sphinxFancyVerbFormatLine[1]{% + \expandafter\sphinx@verbatim@checkifhl\expandafter{\the\FV@CodeLineNo}% + \ifin@ + \sphinxVerbatimHighlightLine{#1}% + \else + \sphinxVerbatimFormatLine{#1}% + \fi +}% +\let\spx@original@set@color\set@color +\newcommand\sphinxVerbatimHighlightLine[1]{% +% This is morally a \colorbox (with a \fboxsep which would be 0pt) +% but some issues of potential colour disappearance at pagebreaks +% require workaround such as the one done here. + \leavevmode + % MEMO: usage of original \colorbox would insert a \set@color here + % and this then places a "color pop" at the end of the \box\z@. + % But this could pair erroneously with an unmatched "color push" + % as #1 is maybe only a part (already hboxed) of a codeline + % if (default) verbatimwrapslines=true + % (cf \spx@verb@@PreProcessLine; refs: #8686) + % MEMO: formerly we did something with \fboxsep in relation to the LaTeX + % bug graphics/4524 for \colorbox, but as we don't use \colorbox... + \setbox\z@\hb@xt@\linewidth{\strut#1\hss}% + % MEMO: \colorbox would lead to \color{sphinxVerbatimHighlightColor} + % plus \color@block, which results in doubled (a color.sty feature) + % color command send to device driver and more importantly has + % a "color pop" which will be after \box\z@. We avoid that for reasons + % mentioned above. + {% + \def\set@color{\let\set@color\spx@original@set@color}% + % will only set \current@color and delay the \set@color to \color@block + % as this all happens inside fancyvrb nested \hbox'es. + \color{sphinxVerbatimHighlightColor}% + % will use \current@color and pop it **before** \box\z@ + \color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@ + }% + % we added a group only for \FV@RightListNumber not be influenced by the + % \current@color, if \fvset has been used to set numbers to the right. +}% +% MEMO: fancyvrb has options obeytabs and tabsize. Anyhow tab characters +% do not make it to the tex file, they have been converted to spaces earlier. +% But, if this was not the case, the support would be implemented here via +% \newcommand\sphinxVerbatimFormatLine[1]{\FV@ObeyTabs{\strut #1}}% +\newcommand\sphinxVerbatimFormatLine[1]{\strut#1}% +% MEMO: if verbatimwrapslines is set to true (default) the #1 above is +% simply \box\spx@tempboxb, from the next two macros. +% The next two macros are a deep hack of fancyvrb.sty core line processing in +% order to wrap too long lines, either at spaces and natural break-points, +% (soft wrap) or optionally at any character (hard wrap). This requires deep +% hack to work around the \hbox'es wrappers of fancyvrb.sty as they would +% prevent page breaks. Formerly Sphinx obtained wrapping by inserting the +% material into a vertical box (which was later again boxed -- twice -- by +% fancyvrb thinking it was a single line...) but this was incompatible with +% allowing page breaks (refs: #8686). +% We use core TeX techniques to pre-process a paragraph then recover its +% constituents lines (as boxes, not as tokens) and hand them over to original +% fancyvrb line process. It is mandatory to update \FV@ProcessLine and +% \@tempboxa globally to get fancyvrb internals into working to our +% satisfaction. +% This will get disrupted if anything adding vertical penalties or glues +% is activated via some \vadjust from inside the Pygmentized code lines. +\def\spx@verb@@ProcessLines{% + \unskip + \unpenalty + \setbox\spx@tempboxb\lastbox +\ifvoid\spx@tempboxb\else + {\spx@verb@@ProcessLines}% + \FV@ProcessLine{\box\spx@tempboxb}% + \global\let\FV@ProcessLine\FV@ProcessLine + \global\setbox\@tempboxa=\box\@tempboxa + \aftergroup\spx@verb@@InhibitLineNumber +\fi +}% +\def\spx@verb@@InhibitLineNumber{% + \let\FV@LeftListNumber\relax + \let\FV@RightListNumber\relax +}% +% This will replace fancyvrb's \FV@@PreProcessLine +% Instead of boxing \FV@Line (which contains the Pygmentized line tokens), we +% first typeset it in a vertical box of the suitable width (taking into +% account nested lists) to activate the TeX built-in paragraph builder, then +% we recover individual lines as horizontal boxes and feed them to fancyvrb +% native line processing (which may add line numbers). The interline +% penalties and vertical glue to maintain baseline distance will be added +% again by this process so in recursive \spx@verb@@ProcessLines which starts +% from bottom and makes its way up to first part of the wrapped line we do not +% need to worry about them. An additional initial measuring step is needed if +% user issued verbatimforcewraps=true, which elaborates on the same technique. +% If hard wraps get activated, they get implemented via hacked \PYG macros. +\def\spx@verb@@PreProcessLine{% + \FV@StepLineNo + \FV@Gobble + \def\spx@verb@FV@Line{\FV@Line}% + \ifspx@opt@verbatimforcewraps + \spx@verb@DecideIfWillDoForceWrap + \fi +% MEMO: \everypar{} was issued earlier (and due to \@setminipage +% would have been only \@minipagefalse\everypar{} otherwise). + \setbox\spx@tempboxa=\vtop{\hsize\linewidth + \raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ + \doublehyphendemerits\z@\finalhyphendemerits\z@ +% MEMO: fancyvrb has options obeytabs and tabsize. Anyhow tab characters +% do not make it to the tex file, they have been converted to spaces earlier. +% But, if this was not the case, the support would be implemented here via +% \FV@ObeyTabs{\strut\spx@verb@FV@Line\strut}% +% And one would need a similar change in the measuring phase done by +% \spx@verb@DecideIfWillDoForceWrap + \strut\spx@verb@FV@Line\strut +% MEMO: since LaTeX 2021-06-01, there might be some hooks executed at +% start and end of paragraphs (in future: PDF tagging), but we need an +% explicit \par here for that. Else the kernel hooks at start of paragraph +% are executed but not the ones at its end. + \par + }% + \setbox\spx@tempboxa=\vtop{\unvbox\spx@tempboxa + \setbox\spx@tempboxb\lastbox + {\spx@verb@@ProcessLines}% + \FV@ProcessLine{\box\spx@tempboxb}% + \global\let\FV@ProcessLine\FV@ProcessLine + \global\setbox\@tempboxa=\box\@tempboxa + }% + \unvbox\spx@tempboxa +}% +% +% The normal line wrapping allows breaks at spaces and ascii non +% letters, non digits. The \raggedright above means there will be +% an overfilled line only if some non-breakable "word" was +% encountered, which is longer than a line (it is moved always to +% be on its own on a new line). +% +% The "forced" line wrapping will parse the tokens to add potential +% breakpoints at each character. As some strings are highlighted, +% we have to apply the highlighting character per character, which +% requires to manipulate the output of the Pygments LaTeXFormatter. +% +% Doing this at latex level is complicated. The contents should +% be as expected: i.e. some active characters from +% \sphinxbreaksviaactive, some Pygments character escapes such as +% \PYGZdl{}, and the highlighting \PYG macro with always 2 +% arguments. No other macros should be there, except perhaps +% zero-parameter macros. In particular: +% - the texcomments Pygments option must be set to False +% +% With pdflatex, Unicode input gives multi-bytes characters +% where the first byte is active. We support the "utf8" macros +% only. "utf8x" is not supported. +% +% The highlighting macro \PYG will be applied character per +% character. Highlighting via a colored background gives thus a +% chain of small colored boxes which may cause some artefact in +% some pdf viewers. Can't do anything here if we do want the line +% break to be possible. +% +% First a measurement step is done of what would the standard line +% wrapping give (i.e line breaks only at spaces and non-letter, +% non-digit ascii characters), cf TeX by Topic for the basic +% dissecting technique: TeX unfortunately when building a vertical +% box does not store in an accessible way what was the maximal +% line-width during paragraph building. +% +% MEMO: in future use perhaps rather \RawNoindent/\RawParEnd, but +% ltpara (LaTeX 2021-06-01) is not yet in final form (June 2022). +% +% Avoid LaTeX 2021 alteration of \@@par which potentially could break our +% measurement step (typically if the para/after hook is configured to use +% \vspace). Of course, breakage could happen only from user or package +% adding things to basic Sphinx latex. And perhaps spring LaTeX 2021 will +% provide a non-hooked \@@par, but this should work anyway and can't be +% beaten for speed. +\ltx@ifundefined{tex_par:D} +% We could use \@ifl@t@r\fmtversion{2020/02/02}{use \tex_par:D}{use \@@par}. + {\let\spx@par\@@par}% \@@par is then expected to be TeX's original \par + {\expandafter\let\expandafter\spx@par\csname tex_par:D\endcsname} +% More hesitation for avoiding the at-start-of-par hooks for our +% measurement : 1. with old LaTeX, we can not avoid hooks from everyhook +% or similar packages, 2. and perhaps the hooks add stuff which we should +% actually measure. Ideally, hooks are for inserting things in margin +% which do not change spacing. Most everything else in fact should not be +% executed in our scratch box for measurement, such as counter stepping. +\ltx@ifundefined{tex_everypar:D} + {\let\spx@everypar\everypar} + {\expandafter\let\expandafter\spx@everypar\csname tex_everypar:D\endcsname} +% +% If the max width exceeds the linewidth by more than verbatimmaxoverfull +% character widths, or if the min width plus verbatimmaxunderfull character +% widths is inferior to linewidth, then we apply the "force wrapping" with +% potential line break at each character, else we don't. +\long\def\spx@verb@DecideIfWillDoForceWrap{% + \global\let\spx@verb@maxwidth\z@ + \global\let\spx@verb@minwidth\linewidth + \setbox\spx@tempboxa + \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ + \doublehyphendemerits\z@\finalhyphendemerits\z@ +% Avoid TeX reporting Overfull \hbox'es during this measuring phase. Setting +% \hbadness to \@M to avoid Underfull reports is unneeded due to \raggedright. + \hfuzz\maxdimen + \spx@everypar{}\noindent\strut\FV@Line\strut\spx@par + \spx@verb@getwidths}% + \ifdim\spx@verb@maxwidth> + \dimexpr\linewidth+\spx@opt@verbatimmaxoverfull\fontcharwd\font`X \relax +% The \expandafter is due to \spx@verb@wrapPYG requiring to "see" the TeX tokens +% from the pygmentize output. + \def\spx@verb@FV@Line{\expandafter\spx@verb@wrapPYG\FV@Line\spx@verb@wrapPYG}% + \else + \ifdim\spx@verb@minwidth< + \dimexpr\linewidth-\spx@opt@verbatimmaxunderfull\fontcharwd\font`X \relax + \def\spx@verb@FV@Line{\expandafter\spx@verb@wrapPYG\FV@Line\spx@verb@wrapPYG}% + \fi + \fi +}% +% auxiliary paragraph dissector to get max and min widths +% but minwidth must not take into account the last line +\def\spx@verb@getwidths {% + \unskip\unpenalty + \setbox\spx@tempboxb\lastbox + \ifvoid\spx@tempboxb + \else + \setbox\spx@tempboxb\hbox{\unhbox\spx@tempboxb}% + \ifdim\spx@verb@maxwidth<\wd\spx@tempboxb + \xdef\spx@verb@maxwidth{\number\wd\spx@tempboxb sp}% + \fi + \expandafter\spx@verb@getwidths@loop + \fi +}% +\def\spx@verb@getwidths@loop {% + \unskip\unpenalty + \setbox\spx@tempboxb\lastbox + \ifvoid\spx@tempboxb + \else + \setbox\spx@tempboxb\hbox{\unhbox\spx@tempboxb}% + \ifdim\spx@verb@maxwidth<\wd\spx@tempboxb + \xdef\spx@verb@maxwidth{\number\wd\spx@tempboxb sp}% + \fi + \ifdim\spx@verb@minwidth>\wd\spx@tempboxb + \xdef\spx@verb@minwidth{\number\wd\spx@tempboxb sp}% + \fi + \expandafter\spx@verb@getwidths@loop + \fi +}% +% auxiliary macros to implement "cut long line even in middle of word" +\catcode`Z=3 % safe delimiter +\def\spx@verb@wrapPYG{% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@i +}% +\def\spx@verb@wrapPYG@i{% + \ifx\spx@nexttoken\spx@verb@wrapPYG\let\next=\@gobble\else + \ifx\spx@nexttoken\PYG\let\next=\spx@verb@wrapPYG@PYG@onebyone\else + \discretionary{}{\sphinxafterbreak}{}% + \let\next\spx@verb@wrapPYG@ii + \fi\fi + \next +}% +% Let's recognize active characters. We don't support utf8x only utf8. +% And here #1 should not have picked up (non empty) braced contents +\long\def\spx@verb@wrapPYG@ii#1{% + \ifcat\noexpand~\noexpand#1\relax% active character + \expandafter\spx@verb@wrapPYG@active + \else % non-active character, control sequence such as \PYGZdl, or empty + \expandafter\spx@verb@wrapPYG@one + \fi {#1}% +}% +\long\def\spx@verb@wrapPYG@active#1{% +% Let's hope expansion of active character does not really require arguments, +% as we certainly don't want to go into expanding upfront token stream anyway. + \expandafter\spx@verb@wrapPYG@iii#1{}{}{}{}{}{}{}{}{}Z#1% +}% +\long\def\spx@verb@wrapPYG@iii#1#2Z{% + \ifx\UTFviii@four@octets#1\let\next=\spx@verb@wrapPYG@four\else + \ifx\UTFviii@three@octets#1\let\next=\spx@verb@wrapPYG@three\else + \ifx\UTFviii@two@octets#1\let\next=\spx@verb@wrapPYG@two\else + \let\next=\spx@verb@wrapPYG@one + \fi\fi\fi + \next +}% +\long\def\spx@verb@wrapPYG@one #1{#1\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@two #1#2{#1#2\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@three #1#2#3{#1#2#3\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@four #1#2#3#4{#1#2#3#4\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +% Replace \PYG by itself applied one character at a time! This way breakpoints +% can be inserted. +\def\spx@verb@wrapPYG@PYG@onebyone#1#2#3{% #1 = \PYG, #2 = highlight spec, #3 = tokens + \def\spx@verb@wrapPYG@PYG@spec{{#2}}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i#3Z% +}% +\def\spx@verb@wrapPYG@PYG@i{% + \ifx\spx@nexttokenZ\let\next=\spx@verb@wrapPYG@PYG@done\else + \discretionary{}{\sphinxafterbreak}{}% + \let\next\spx@verb@wrapPYG@PYG@ii + \fi + \next +}% +\def\spx@verb@wrapPYG@PYG@doneZ{\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@PYG@ii#1{% + \ifcat\noexpand~\noexpand#1\relax% active character + \expandafter\spx@verb@wrapPYG@PYG@active + \else % non-active character, control sequence such as \PYGZdl, or empty + \expandafter\spx@verb@wrapPYG@PYG@one + \fi {#1}% +}% +\long\def\spx@verb@wrapPYG@PYG@active#1{% +% Let's hope expansion of active character does not really require arguments, +% as we certainly don't want to go into expanding upfront token stream anyway. + \expandafter\spx@verb@wrapPYG@PYG@iii#1{}{}{}{}{}{}{}{}{}Z#1% +}% +\long\def\spx@verb@wrapPYG@PYG@iii#1#2Z{% + \ifx\UTFviii@four@octets#1\let\next=\spx@verb@wrapPYG@PYG@four\else + \ifx\UTFviii@three@octets#1\let\next=\spx@verb@wrapPYG@PYG@three\else + \ifx\UTFviii@two@octets#1\let\next=\spx@verb@wrapPYG@PYG@two\else + \let\next=\spx@verb@wrapPYG@PYG@one + \fi\fi\fi + \next +}% +\long\def\spx@verb@wrapPYG@PYG@one#1{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@two#1#2{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@three#1#2#3{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2#3}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@four#1#2#3#4{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2#3#4}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\catcode`Z 11 % +% +\g@addto@macro\FV@SetupFont{% + \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% + \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}% +}% +\newenvironment{sphinxVerbatim}{% + % first, let's check if there is a caption + \ifx\sphinxVerbatimTitle\empty + \sphinxvspacefixafterfrenchlists + \parskip\z@skip + \vskip\sphinxverbatimsmallskipamount + % there was no caption. Check if nevertheless a label was set. + \ifx\sphinxLiteralBlockLabel\empty\else + % we require some space to be sure hyperlink target from \phantomsection + % will not be separated from upcoming verbatim by a page break + \needspace{\sphinxliteralblockwithoutcaptionneedspace}% + \phantomsection\sphinxLiteralBlockLabel + \fi + \else + \parskip\z@skip + \if t\spx@opt@literalblockcappos + \vskip\spx@abovecaptionskip + \def\sphinxVerbatim@Before + {\sphinxVerbatim@Title\nointerlineskip + \kern\dimexpr-\dp\strutbox+\sphinxbelowcaptionspace + % MEMO: prior to 7.4.0 a test was done for presence or + % not of a frame and if not top padding was removed if + % no background color. A background color is now always + % assumed, so this got removed. + % caption package adds \abovecaptionskip vspace, remove it + \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax}% + \else + \vskip\sphinxverbatimsmallskipamount + \def\sphinxVerbatim@After + {\nointerlineskip\kern\dimexpr\dp\strutbox + % MEMO: 7.4.0 removes here too an optional removal of bottom padding + \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax + \sphinxVerbatim@Title}% + \fi + \def\@captype{literalblock}% + \capstart + % \sphinxVerbatimTitle must reset color + \setbox\sphinxVerbatim@TitleBox + \hbox{\begin{minipage}{\linewidth}% + % caption package may detect wrongly if top or bottom, so we help it + \spx@ifcaptionpackage + {\caption@setposition{\spx@opt@literalblockcappos}}{}% + \sphinxVerbatimTitle + \end{minipage}}% + \fi + \global\let\sphinxLiteralBlockLabel\empty + \global\let\sphinxVerbatimTitle\empty + % the "FrameCommand"'s are also responsible to attach the "Title". + \let\FrameCommand \sphinxVerbatim@FrameCommand + % those will also check status of the pre_box-decoration-break option + \let\FirstFrameCommand\sphinxVerbatim@FirstFrameCommand + \let\MidFrameCommand \sphinxVerbatim@MidFrameCommand + \let\LastFrameCommand \sphinxVerbatim@LastFrameCommand + % + \ifspx@opt@verbatimhintsturnover\else + \let\sphinxVerbatim@Continued\@empty + \let\sphinxVerbatim@Continues\@empty + \fi + % initialization for \spx@boxes@fcolorbox from sphinxpackageboxes.sty + % it will take into account status of verbatimwithframe Boolean + \spx@verb@boxes@fcolorbox@setup + \ifspx@opt@verbatimwrapslines + % deep hack into fancyvrb's internal processing of input lines + \let\FV@@PreProcessLine\spx@verb@@PreProcessLine + % space character will allow line breaks + \let\FV@Space\spx@verbatim@space + % allow breaks at special characters using \PYG... macros. + \sphinxbreaksatspecials + % breaks at punctuation characters . , ; ? ! and / (needs catcode activation) + \fvset{codes*=\sphinxbreaksviaactive}% + \fi + \let\FancyVerbFormatLine\sphinxFancyVerbFormatLine + \VerbatimEnvironment + % workaround to fancyvrb's check of current list depth + \def\@toodeep {\advance\@listdepth\@ne}% + % The list environment is needed to control perfectly the vertical space. + % Note: \OuterFrameSep used by framed.sty is later set to \topsep hence 0pt. + % - if caption: distance from last text baseline to caption baseline is + % A+(B-F)+\ht\strutbox, A = \abovecaptionskip (default 10pt), B = + % \baselineskip, F is the framed.sty \FrameHeightAdjust macro, default 6pt. + % Formula valid for F < 10pt. + % - distance of baseline of caption to top of frame is like for tables: + % \sphinxbelowcaptionspace (=0.5\baselineskip) + % - if no caption: distance of last text baseline to code frame is S+(B-F), + % with S = \sphinxverbatimtopskip (=\smallskip) + % - and distance from bottom of frame to next text baseline is + % \baselineskip+\parskip. + % The \trivlist is used to avoid possible "too deeply nested" error. + \itemsep \z@skip + \topsep \z@skip + \partopsep \z@skip + % trivlist will set \parsep to \parskip (which itself is set to zero above) + % \leftmargin will be set to zero by trivlist + \rightmargin\z@ + \parindent \z@% becomes \itemindent. Default zero, but perhaps overwritten. + \trivlist\item\relax + \ifspx@inframed\setbox\sphinxVerbatim@ContentsBox\vbox\bgroup + \@setminipage\hsize\linewidth + % use bulk of minipage paragraph shape restores (this is needed + % in indented contexts, at least for some) + \textwidth\hsize \columnwidth\hsize \@totalleftmargin\z@ + \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip + \else + \ifsphinxverbatimwithminipage\noindent\begin{minipage}{\linewidth}\fi + \MakeFramed {% adapted over from framed.sty's snugshade environment + \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage + }% + \fi + % For grid placement from \strut's in \FancyVerbFormatLine + \lineskip\z@skip + % active comma should not be overwritten by \@noligs + \ifspx@opt@verbatimwrapslines + \let\verbatim@nolig@list \sphinx@verbatim@nolig@list + \fi + % optimization: as codelines will be handled inside boxes, \everypar is + % never reset, and it issues \@minipagefalse repeatedly (from \@setminipage). + % As fancyvrb Verbatim will do \@minipagefalse itself, let's simplify things. + \everypar{}% + \color@begingroup % protect against color leaks (upstream framed.sty bug) + \ifspx@pre@withtextcolor\color{VerbatimTextColor}\fi % mostly shadowed by + % Pygments highlighting anyhow + \spx@pre@TeXextras + % will fetch its optional arguments if any + \OriginalVerbatim +}% +{% + \endOriginalVerbatim + \color@endgroup % matches the \color@begingroup + \ifspx@inframed + \egroup % finish \sphinxVerbatim@ContentsBox vbox + \nobreak % update page totals +%%%% +% MEMO (2022/07/09, while preparing 5.1.0 LaTeX CSS-style sphinxsetup options) +% This test will systematically cause to abandon framing if the code-block +% is near bottom of a warning-type notice which TeX has not yet decided whether +% it fits on current page and which is near bottom of page. Indeed the +% \pagetotal will already be very near \pagegoal. This is probably a not +% intended behaviour, and perhaps the whole thing should be removed? Indeed +% the result is surprising then because the notice will be split, code-block +% will be on page 2 and will have no background-color, no border. + \ifdim\dimexpr + \ht\sphinxVerbatim@ContentsBox+ + \dp\sphinxVerbatim@ContentsBox+ + \ht\sphinxVerbatim@TitleBox+ + \dp\sphinxVerbatim@TitleBox+ + % 6.2.0 uses here the dimen registers from sphinxpackageboxes.sty, + % they got setup by \spx@verb@boxes@fcolorbox@setup + \spx@boxes@padding@top+ + \spx@boxes@padding@bottom+ + \ifspx@opt@verbatimwithframe \spx@boxes@border@top+ + \spx@boxes@border@bottom+\fi + % try to account for external frame parameters + % MEMO: this is because the sphinxheavybox (for warning admonitions) + % environment sets \FrameSep and \FrameRule + % TODO: fix this bad implicit dependency + \FrameSep+\FrameRule+ + % Usage here of 2 baseline distances is empirical. + % In border case where code-block fits barely in remaining space, + % it gets framed and looks good but the outer frame may continue + % on top of next page and give (if no contents after code-block) + % an empty framed line, as testing showed. + 2\baselineskip+ + % now add all to accumulated page totals and compare to \pagegoal + \pagetotal+\pagedepth>\pagegoal + % long contents: do not \MakeFramed. Do make a caption (either before or + % after) if title exists. Continuation hints across pagebreaks dropped. + % FIXME? a bottom caption may end up isolated at top of next page + % (no problem with a top caption, which is default) + \spx@opt@verbatimwithframefalse + \def\sphinxVerbatim@Title{\noindent\box\sphinxVerbatim@TitleBox\par}% + \sphinxVerbatim@Before + \noindent\unvbox\sphinxVerbatim@ContentsBox\par + \sphinxVerbatim@After + \else + % short enough contents: use \MakeFramed. As it is nested, this requires + % minipage encapsulation. + \noindent\begin{minipage}{\linewidth}% + \MakeFramed {% Use it now with the fetched contents + \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage + }% + \unvbox\sphinxVerbatim@ContentsBox + % the \@minipagefalse is superfluous, actually. + \par\unskip\@minipagefalse\endMakeFramed + \end{minipage}% + \fi + \else % non-nested \MakeFramed + \par\unskip\@minipagefalse\endMakeFramed % from framed.sty snugshade + \ifsphinxverbatimwithminipage\end{minipage}\fi + \fi + \endtrivlist +} +\newenvironment {sphinxVerbatimNoFrame} + {\spx@opt@verbatimwithframefalse + \VerbatimEnvironment + \begin{sphinxVerbatim}} + {\end{sphinxVerbatim}} +\newenvironment {sphinxVerbatimintable} + {% don't use a frame if in a table cell + \spx@opt@verbatimwithframefalse + \sphinxverbatimwithminipagetrue + % the literal block caption uses \sphinxcaption which is wrapper of \caption, + % but \caption must be modified because longtable redefines it to work only + % for the own table caption, and tabulary has multiple passes + \let\caption\sphinxfigcaption + % reduce above caption skip + \def\spx@abovecaptionskip{\sphinxverbatimsmallskipamount}% + \VerbatimEnvironment + \begin{sphinxVerbatim}} + {\end{sphinxVerbatim}} + + +%% PARSED LITERALS +% allow long lines to wrap like they do in code-blocks + +% this should be kept in sync with definitions in sphinx.util.texescape +\newcommand*\sphinxbreaksattexescapedchars{% + \def\do##1##2% put potential break point before character + {\def##1{\discretionary{}{\sphinxafterbreak\char`##2}{\char`##2}}}% + \do\{\{\do\textless\<\do\#\#\do\%\%\do\$\$% {, <, #, %, $ + \def\do##1##2% put potential break point after character + {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}% + \do\_\_\do\}\}\do\textasciicircum\^\do\&\&% _, }, ^, &, + \do\textgreater\>\do\textasciitilde\~% >, ~ + \do\textbackslash\\% \ +} +\newcommand*\sphinxbreaksviaactiveinparsedliteral{% + \sphinxbreaksviaactive % by default handles . , ; ? ! / + \lccode`\~`\~ % + % update \dospecials as it is used by \url + % but deactivation will already have been done hence this is unneeded: + % \expandafter\def\expandafter\dospecials\expandafter{\dospecials + % \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist\do\-}% +} +\newcommand*\sphinxbreaksatspaceinparsedliteral{% + \lccode`~32 \lowercase{\let~}\spx@verbatim@space\lccode`\~`\~ +} +\newcommand*{\sphinxunactivateextras}{\let\do\@makeother + \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist}% +% the \catcode13=5\relax (deactivate end of input lines) is left to callers +\newcommand*{\sphinxunactivateextrasandspace}{\catcode32=10\relax + \sphinxunactivateextras}% +% alltt uses a monospace font and linebreaks at dashes (which are escaped +% to \sphinxhyphen{} which expands to -\kern\z@) are inhibited with pdflatex. +% Not with xelatex (cf \defaultfontfeatures in latex writer), so: +\newcommand*{\sphinxhypheninparsedliteral}{\sphinxhyphennobreak} +% now for the modified alltt environment +\newenvironment{sphinxalltt} +{% at start of next line to workaround Emacs/AUCTeX issue with this file +\begin{alltt}% + \ifspx@opt@parsedliteralwraps + \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% + \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}% + \let\sphinxhyphen\sphinxhypheninparsedliteral + \sphinxbreaksattexescapedchars + \sphinxbreaksviaactiveinparsedliteral + \sphinxbreaksatspaceinparsedliteral +% alltt takes care of the ' as derivative ("prime") in math mode + \everymath\expandafter{\the\everymath\sphinxunactivateextrasandspace + \catcode`\<=12\catcode`\>=12\catcode`\^=7\catcode`\_=8 }% +% not sure if displayed math (align,...) can end up in parsed-literal, anyway + \everydisplay\expandafter{\the\everydisplay + \catcode13=5 \sphinxunactivateextrasandspace + \catcode`\<=12\catcode`\>=12\catcode`\^=7\catcode`\_=8 }% + \fi } +{\end{alltt}} + + +%% INLINE MARK-UP +% + +% Protect \href's first argument in contexts such as sphinxalltt (or +% \sphinxcode). Sphinx uses \#, \%, \& ... always inside \sphinxhref. +\protected\def\sphinxhref#1#2{{% + \sphinxunactivateextrasandspace % never do \scantokens with active space! +% for the \endlinechar business, https://github.com/latex3/latex2e/issues/286 + \endlinechar\m@ne\everyeof{{\endlinechar13 #2}}% keep catcode regime for #2 + \scantokens{\href{#1}}% normalise it for #1 during \href expansion +}} +% Same for \url. And also \nolinkurl for coherence. +\protected\def\sphinxurl#1{{% + \sphinxunactivateextrasandspace\everyeof{}% (<- precaution for \scantokens) + \endlinechar\m@ne\scantokens{\url{#1}}% +}} +\protected\def\sphinxnolinkurl#1{{% + \sphinxunactivateextrasandspace\everyeof{}% + \endlinechar\m@ne\scantokens{\nolinkurl{#1}}% +}} + +% \sphinxupquote +% to obtain straight quotes we execute \@noligs as patched by upquote, and +% \scantokens is needed in cases where it would be too late for the macro to +% first set catcodes and then fetch its argument. We also make the contents +% breakable at non-escaped . , ; ? ! / using \sphinxbreaksviaactive, +% and also at \ character (which is escaped to \textbackslash{}). +\protected\def\sphinxtextbackslashbreakbefore + {\discretionary{}{\sphinxafterbreak\sphinx@textbackslash}{\sphinx@textbackslash}} +\protected\def\sphinxtextbackslashbreakafter + {\discretionary{\sphinx@textbackslash}{\sphinxafterbreak}{\sphinx@textbackslash}} +\let\sphinxtextbackslash\sphinxtextbackslashbreakafter +% - is escaped to \sphinxhyphen{} and this default ensures no linebreak +% behaviour (also with a non monospace font, or with xelatex) +\newcommand*{\sphinxhyphenininlineliteral}{\sphinxhyphennobreak} +% the macro must be protected if it ends up used in moving arguments, +% in 'alltt' \@noligs is done already, and the \scantokens must be avoided. +\protected\def\sphinxupquote#1{{\def\@tempa{alltt}% + \ifx\@tempa\@currenvir\else + \let\sphinxhyphen\sphinxhyphenininlineliteral + \ifspx@opt@inlineliteralwraps + % break at . , ; ? ! / + \sphinxbreaksviaactive + % break also at \ + \setbox8=\hbox{\textbackslash}% + \def\sphinx@textbackslash{\copy8}% + \let\textbackslash\sphinxtextbackslash + % by default, no continuation symbol on next line but may be added + \let\sphinxafterbreak\sphinxafterbreakofinlineliteral + % do not overwrite the comma set-up + \let\verbatim@nolig@list\sphinx@literal@nolig@list + \fi + % fix a space-gobbling issue due to LaTeX's original \do@noligs +% TODO: using \@noligs as patched by upquote.sty is now unneeded because +% either ` and ' are escaped (non-unicode engines) or they don't build +% ligatures (unicode engines). Thus remove this and unify handling of `, <, >, +% ' and - with the characters . , ; ? ! / as handled via +% \sphinxbreaksviaactive. +% Hence \sphinx@do@noligs will be removed, or rather replaced with code +% inserting discretionaries, as they allow a continuation symbol on start of +% next line to achieve common design with code-blocks. +% TODO: do the above TODO! +% Extend \sphinxunactivateextras for \sphinxhref as the latter may +% actually be in the scope of \sphinxupquote and does a \scantokens +% of its own. + \expandafter\def\expandafter\sphinxunactivateextras\expandafter + {\sphinxunactivateextras\verbatim@nolig@list}% + \let\do@noligs\sphinx@do@noligs + \@noligs\endlinechar\m@ne\everyeof{}% (<- in case inside \sphinxhref) + \expandafter\scantokens + \fi {{#1}}}}% extra brace pair to fix end-space gobbling issue... +\def\sphinx@do@noligs #1{\catcode`#1\active\begingroup\lccode`\~`#1\relax + \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1 }}} +\def\sphinx@literal@nolig@list {\do\`\do\<\do\>\do\'\do\-}% +\let\sphinxafterbreakofinlineliteral\empty + + +\endinput diff --git a/docs/build/latex/sphinxlatexnumfig.sty b/docs/build/latex/sphinxlatexnumfig.sty new file mode 100644 index 0000000..22fcbb0 --- /dev/null +++ b/docs/build/latex/sphinxlatexnumfig.sty @@ -0,0 +1,135 @@ +%% NUMBERING OF FIGURES, TABLES, AND LITERAL BLOCKS +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexnumfig}[2024/07/31 v8.1.0 numbering] + +% Requires: remreset (old LaTeX only) +% relates to numfig and numfig_secnum_depth configuration variables + +% LaTeX 2018-04-01 and later provides \@removefromreset +\ltx@ifundefined{@removefromreset} + {\RequirePackage{remreset}} + {}% avoid warning +% Everything is delayed to \begin{document} to allow hyperref patches into +% \newcounter to solve duplicate label problems for internal hyperlinks to +% code listings (literalblock counter). User or extension re-definitions of +% \theliteralblock, et al., thus have also to be delayed. (changed at 3.5.0) +\AtBeginDocument{% +\ltx@ifundefined{c@chapter} + {\newcounter{literalblock}}% + {\newcounter{literalblock}[chapter]% + \def\theliteralblock{\ifnum\c@chapter>\z@\arabic{chapter}.\fi + \arabic{literalblock}}% + }% +\ifspx@opt@nonumfigreset + \ltx@ifundefined{c@chapter}{}{% + \@removefromreset{figure}{chapter}% + \@removefromreset{table}{chapter}% + \@removefromreset{literalblock}{chapter}% + \ifspx@opt@mathnumfig + \@removefromreset{equation}{chapter}% + \fi + }% + \def\thefigure{\arabic{figure}}% + \def\thetable {\arabic{table}}% + \def\theliteralblock{\arabic{literalblock}}% + \ifspx@opt@mathnumfig + \def\theequation{\arabic{equation}}% + \fi +\else +% See apologetic comments on TeX wizardry at bottom of file. +% The reason for this one is to catch case where there will be only +% the number with no prefix from enclosing sectioning (can happen +% with latex_toplevel_sectioning='part'). +\def\spx@preAthefigure{\expandafter\spx@magicsep@s\romannumeral-`0} +\let\spx@preBthefigure\@empty +% \ifspx@opt@usespart % <-- LaTeX writer could pass such a 'usespart' boolean +% % as sphinx.sty package option +% If document uses \part, (triggered in Sphinx by latex_toplevel_sectioning) +% LaTeX core per default does not reset chapter or section +% counters at each part. +% But if we modify this, we need to redefine \thechapter, \thesection to +% include the part number and this will cause problems in table of contents +% because of too wide numbering. Simplest is to do nothing. +% \fi +\ifnum\spx@opt@numfigreset>0 + \ltx@ifundefined{c@chapter} + {} + {\g@addto@macro\spx@preAthefigure{\ifnum\c@chapter>\z@\arabic{chapter}\spx@magicsep}% + \g@addto@macro\spx@preBthefigure{\fi}}% +\fi +\ifnum\spx@opt@numfigreset>1 + \@addtoreset{figure}{section}% + \@addtoreset{table}{section}% + \@addtoreset{literalblock}{section}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{section}% + \fi% + \g@addto@macro\spx@preAthefigure{\ifnum\c@section>\z@\arabic{section}\spx@magicsep}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>2 + \@addtoreset{figure}{subsection}% + \@addtoreset{table}{subsection}% + \@addtoreset{literalblock}{subsection}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subsection}% + \fi% + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsection>\z@\arabic{subsection}\spx@magicsep}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>3 + \@addtoreset{figure}{subsubsection}% + \@addtoreset{table}{subsubsection}% + \@addtoreset{literalblock}{subsubsection}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subsubsection}% + \fi% + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubsection>\z@\arabic{subsubsection}\spx@magicsep}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>4 + \@addtoreset{figure}{paragraph}% + \@addtoreset{table}{paragraph}% + \@addtoreset{literalblock}{paragraph}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{paragraph}% + \fi% + \g@addto@macro\spx@preAthefigure{\ifnum\c@subparagraph>\z@\arabic{subparagraph}\spx@magicsep}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>5 + \@addtoreset{figure}{subparagraph}% + \@addtoreset{table}{subparagraph}% + \@addtoreset{literalblock}{subparagraph}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subparagraph}% + \fi% + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubparagraph>\z@\arabic{subsubparagraph}\spx@magicsep}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\expandafter\g@addto@macro +\expandafter\spx@preAthefigure\expandafter{\spx@preBthefigure}% +\let\thefigure\spx@preAthefigure +\let\thetable\spx@preAthefigure +\let\theliteralblock\spx@preAthefigure +\g@addto@macro\thefigure{\arabic{figure}}% +\g@addto@macro\thetable{\arabic{table}}% +\g@addto@macro\theliteralblock{\arabic{literalblock}}% + \ifspx@opt@mathnumfig + \let\theequation\spx@preAthefigure + \g@addto@macro\theequation{E}% + \fi +\fi +}% end of big \AtBeginDocument + +% Sorry for TeX wizardry here. We need to keep expandability. Explaining +% the mechanism is not really feasible to non TeX-experts, but the idea +% is to force next `\ifnum` conditional so we can check what comes next. +% All cases are accounted for (i.e. not an equation, or an equation at top +% level, or an equation in some section at some depth). +\def\spx@magicsep{\expandafter\spx@magicsep@i\romannumeral-`0} +\def\spx@magicsep@i#1{\if#1E\spx@opt@mathnumsep\arabic{equation}\else.#1\fi} +% +\def\spx@magicsep@s#1{\if#1E\arabic{equation}\else#1\fi} +\endinput diff --git a/docs/build/latex/sphinxlatexobjects.sty b/docs/build/latex/sphinxlatexobjects.sty new file mode 100644 index 0000000..1147a01 --- /dev/null +++ b/docs/build/latex/sphinxlatexobjects.sty @@ -0,0 +1,384 @@ +%% MODULE RELEASE DATA AND OBJECT DESCRIPTIONS +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexobjects}[2025/02/11 documentation environments] + +% Provides support for this output mark-up from Sphinx latex writer: +% +% - environments +% +% - fulllineitems +% - productionlist +% - optionlist +% - DUlineblock (also "lineblock") +% +% - macros +% +% - \DUrole +% - various legacy support macros related to author and release +% data of documented objects and modules. + +% \moduleauthor{name}{email} +\newcommand{\moduleauthor}[2]{} + +% \sectionauthor{name}{email} +\newcommand{\sectionauthor}[2]{} + +% Allow the release number to be specified independently of the +% \date{}. This allows the date to reflect the document's date and +% release to specify the release that is documented. +% +\newcommand{\py@release}{\releasename\space\version} +\newcommand{\version}{}% part of \py@release, used by title page and headers +% \releaseinfo is used on titlepage (sphinxmanual.cls, sphinxhowto.cls) +\newcommand{\releaseinfo}{} +\newcommand{\setreleaseinfo}[1]{\renewcommand{\releaseinfo}{#1}} +% this is inserted via template and #1=release config variable +\newcommand{\release}[1]{\renewcommand{\version}{#1}} +% this is defined by template to 'releasename' latex_elements key +\newcommand{\releasename}{} +% Fix issue in case release and releasename deliberately left blank +\newcommand{\sphinxheadercomma}{, }% used in fancyhdr header definition +\newcommand{\sphinxifemptyorblank}[1]{% +% test after one expansion of macro #1 if contents is empty or spaces + \if&\expandafter\@firstofone\detokenize\expandafter{#1}&% + \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}% +\AtBeginDocument {% + \sphinxifemptyorblank{\releasename} + {\sphinxifemptyorblank{\version}{\let\sphinxheadercomma\empty}{}} + {}% +}% + +% Allow specification of the author's address separately from the +% author's name. This can be used to format them differently, which +% is a good thing. +% +\newcommand{\py@authoraddress}{} +\newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}} + +% {fulllineitems} is the main environment for object descriptions. +% +% With 4.0.0 \pysigline (and \pysiglinewithargsret), used in a fulllineitems +% environment the #1 will already be of the width which is computed here, i.e. +% the available width on line, so the \makebox becomes a bit superfluous +\newcommand{\py@itemnewline}[1]{% macro used as \makelabel in fulllineitems +% Memo: this presupposes \itemindent is 0pt + \kern\labelsep % because \@labels core latex box does \hskip-\labelsep + \makebox[\dimexpr\linewidth+\labelwidth\relax][l]{#1}% + \kern-\labelsep % because at end of \@labels box there is \hskip\labelsep +} + +\newenvironment{fulllineitems}{% + \begin{list}{}{\labelwidth \leftmargin + \rightmargin \z@ \topsep -\parskip \partopsep \parskip + \itemsep -\parsep + \let\makelabel=\py@itemnewline}% +}{\end{list}} + +% Signatures, possibly multi-line +% +% For legacy reasons Sphinx uses LaTeX \list and \item's for signatures +% This is delicate: +% - the actual item label is not typeset immediately by \item but later as part +% of the \everypar which will be triggered by either next paragraph or a manual +% \leavevmode, or if nothing in-between by the next \item, +% - \begingroup \item[foo] \endgroup leads to errors, +% - vertical space depends on \parskip and \itemsep values in somewhat +% subtle manners. +% +% Since the 2022/01/13 version things are simpler as \parskip is simply set +% to zero during execution of \pysigline/\pysiglinewithargsret +% +% Parameter for separation via \itemsep of multiple signatures with common desc +\newlength\sphinxsignaturesep +\setlength\sphinxsignaturesep{\smallskipamount} +% latex.py outputs mark-up like this: +% \pysigstartsignatures \pysigstopsignatures +\newcommand{\pysigstartsignatures}{% + % store current \parskip and \itemsep + \edef\pysig@restore@itemsep@and@parskip{% + \itemsep\the\itemsep\relax + \parskip\the\parskip\relax + }% + % set them to control the spacing between signatures sharing common desc + \parskip\z@skip + \itemsep\sphinxsignaturesep +} +\newcommand{\pysigstopsignatures}{% +% 1) encourage a pagebreak in an attempt to try to avoid last +% signature ending up separated from description (due to voodoo next) +\penalty-100 +% 2) some voodoo to separate last signature from description in a manner +% robust with respect to the latter being itself a LaTeX list object +\leavevmode\par\kern-\baselineskip\item[\strut] +% + \leavevmode + % it is important \leavevmode was issued before the \parskip reset, and + % it is also needed for the case of an object desc itself a LaTeX \list + % now restore \itemsep and \parskip + \pysig@restore@itemsep@and@parskip +} +% Each signature is rendered as NAME[TPLIST](ARGLIST) where the +% size of is parametrized by \sphinxsignaturelistskip (0pt by default). +\newlength\sphinxsignaturelistskip +\setlength\sphinxsignaturelistskip{0pt} +\newcommand{\pysigtypelistopen}{\hskip\sphinxsignaturelistskip\sphinxcode{[}} +\newcommand{\pysigtypelistclose}{\sphinxcode{]}} +\newcommand{\pysigarglistopen}{\hskip\sphinxsignaturelistskip\sphinxcode{(}} +\newcommand{\pysigarglistclose}{\sphinxcode{)}} +% +% Use a \parbox to accommodate long argument list in signatures +% LaTeX did not imagine that an \item label could need multi-line rendering +\newlength{\py@argswidth} +\newcommand{\py@sigparams}[2]{% + % The \py@argswidth has been computed in \pysiglinewithargsret to make the + % argument list use full available width + \parbox[t]{\py@argswidth}{\raggedright #1\pysigarglistclose#2\strut}% + % final strut is to help get correct vertical separation +} +\newcommand{\py@sigparamswithtypelist}[3]{% + % similar to \py@sigparams but with different delimiters and an additional + % type parameters list given as #1, the argument list as #2 and the return + % annotation as #3 + \parbox[t]{\py@argswidth}{% + \raggedright #1\pysigtypelistclose% + \pysigarglistopen#2\pysigarglistclose% + #3\strut}% +} + +\newcommand{\pysigline}[1]{% + % as \py@argswidth is available, we use it but no "args" here + % the \relax\relax is because \py@argswidth is a "skip" variable + % this will make the label occupy the full available linewidth + \py@argswidth=\dimexpr\linewidth+\labelwidth\relax\relax + \item[{\parbox[t]{\py@argswidth}{\raggedright #1\strut}}] + \pysigadjustitemsep +} +\newcommand{\pysiglinewithargsret}[3]{% + % as #1 may contain a footnote using \label we need to make \label + % a no-op here to avoid LaTeX complaining about duplicates +\let\spx@label\label\let\label\@gobble + \settowidth{\py@argswidth}{#1\pysigarglistopen}% +\let\label\spx@label + \py@argswidth=\dimexpr\linewidth+\labelwidth-\py@argswidth\relax\relax + \item[{#1\pysigarglistopen\py@sigparams{#2}{#3}\strut}] + \pysigadjustitemsep +} +\newcommand{\pysiglinewithargsretwithtypelist}[4]{ +% #1 = name, #2 = typelist, #3 = arglist, #4 = retann +\let\spx@label\label\let\label\@gobble + \settowidth{\py@argswidth}{#1\pysigtypelistopen}% +\let\label\spx@label + \py@argswidth=\dimexpr\linewidth+\labelwidth-\py@argswidth\relax\relax + \item[{#1\pysigtypelistopen\py@sigparamswithtypelist{#2}{#3}{#4}\strut}] + \pysigadjustitemsep +} + +\def\sphinxoptionalextraspace{0.5mm} +\newcommand{\pysigwithonelineperarg}[3]{% + % render each argument on its own line + \item[#1\pysigarglistopen\strut] + \leavevmode\par\nopagebreak + % this relies on \pysigstartsignatures having set \parskip to zero + \begingroup + \let\sphinxparamcomma\sphinxparamcommaoneperline + \def\sphinxoptionalhook{\ifvmode\else\kern\sphinxoptionalextraspace\relax\fi}% + % The very first \sphinxparam should not emit a \par hence a complication + % with a group and global definition here as it may occur in a \sphinxoptional + \global\let\spx@sphinxparam\sphinxparam + \gdef\sphinxparam{\gdef\sphinxparam{\par\spx@sphinxparam}\spx@sphinxparam}% + #2\par + \endgroup + \global\let\sphinxparam\spx@sphinxparam + % fulllineitems sets \labelwidth to be like \leftmargin + \nopagebreak\noindent\kern-\labelwidth\pysigarglistclose{#3} + \pysigadjustitemsep +} +\newcommand{\pysigwithonelineperargwithonelinepertparg}[4]{ + % #1 = name, #2 = typelist, #3 = arglist, #4 = retann + % render each type parameter and argument on its own line + \item[#1\pysigtypelistopen\strut] + \leavevmode\par\nopagebreak + \begingroup + \let\sphinxparamcomma\sphinxparamcommaoneperline + % \sphinxtypeparam is treated similarly to \sphinxparam but since + % \sphinxoptional is not accepted in a type parameters list, we do + % not need the hook or the global definition + \let\spx@sphinxtypeparam\sphinxtypeparam + \def\sphinxtypeparam{\def\sphinxtypeparam{\par\spx@sphinxtypeparam}\spx@sphinxtypeparam}% + #2\par + \endgroup + \nopagebreak\noindent\kern-\labelwidth\pysigtypelistclose% + % render the rest of the signature like in \pysigwithonelineperarg + \pysigarglistopen\strut\par\nopagebreak + \begingroup + \let\sphinxparamcomma\sphinxparamcommaoneperline + \def\sphinxoptionalhook{\ifvmode\else\kern\sphinxoptionalextraspace\relax\fi}% + \global\let\spx@sphinxparam\sphinxparam + \gdef\sphinxparam{\gdef\sphinxparam{\par\spx@sphinxparam}\spx@sphinxparam}% + #3\par + \endgroup + \global\let\sphinxparam\spx@sphinxparam + \nopagebreak\noindent\kern-\labelwidth\pysigarglistclose{#4} + \pysigadjustitemsep +} +\newcommand{\pysiglinewithargsretwithonelinepertparg}[4]{ + % #1 = name, #2 = typelist, #3 = arglist, #4 = retann + % render each type parameter on its own line but the arguments list inline + \item[#1\pysigtypelistopen\strut] + \leavevmode\par\nopagebreak + \begingroup + \let\sphinxparamcomma\sphinxparamcommaoneperline + % \sphinxtypeparam is treated similarly to \sphinxparam but since + % \sphinxoptional is not accepted in a type parameters list, we do + % not need the hook or the global definition + \let\spx@sphinxtypeparam\sphinxtypeparam + \def\sphinxtypeparam{\def\sphinxtypeparam{\par\spx@sphinxtypeparam}\spx@sphinxtypeparam}% + #2\par + \endgroup + \nopagebreak\noindent\kern-\labelwidth\pysigtypelistclose% + % render the arguments list on one line + \pysigarglistopen#3\pysigarglistclose#4\strut + \pysigadjustitemsep +} +\newcommand{\pysigwithonelineperargwithtypelist}[4]{ + % #1 = name, #2 = typelist, #3 = arglist, #4 = retann + % render the type parameters list on one line, but each argument is rendered on its own line +\let\spx@label\label\let\label\@gobble + \settowidth{\py@argswidth}{#1\pysigtypelistopen}% +\let\label\spx@label + \py@argswidth=\dimexpr\linewidth+\labelwidth-\py@argswidth\relax\relax + \item[{#1\pysigtypelistopen\parbox[t]{\py@argswidth}{% + \raggedright #2\pysigtypelistclose\pysigarglistopen\strut}\strut}] + % render the rest of the signature like in \pysigwithonelineperarg + \begingroup + \let\sphinxparamcomma\sphinxparamcommaoneperline + \def\sphinxoptionalhook{\ifvmode\else\kern\sphinxoptionalextraspace\relax\fi}% + \global\let\spx@sphinxparam\sphinxparam + \gdef\sphinxparam{\gdef\sphinxparam{\par\spx@sphinxparam}\spx@sphinxparam}% + #3\par + \endgroup + \global\let\sphinxparam\spx@sphinxparam + \nopagebreak\noindent\kern-\labelwidth\pysigarglistclose{#4} + \pysigadjustitemsep +} +\newcommand{\pysigadjustitemsep}{% + % adjust \itemsep to control the separation with the next signature + % sharing common description + \ifsphinxsigismultiline + % inside a multiline signature, no extra vertical spacing + % ("multiline" here does not refer to possibly long + % list of arguments, but to a cpp domain feature) + \itemsep\z@skip + \else + \itemsep\sphinxsignaturesep + \fi +} +\newif\ifsphinxsigismultiline +\newcommand{\pysigstartmultiline}{\sphinxsigismultilinetrue}% +\newcommand{\pysigstopmultiline}{\sphinxsigismultilinefalse\itemsep\sphinxsignaturesep}% + +% Production lists +% This simply outputs the lines as is, in monospace font. Refers #13326. +% (the left padding for multi-line alignment is from the nodes themselves, +% and latex is configured below to obey such horizontal whitespace). +% +% - The legacy code used longtable and hardcoded the separator as ::= +% via dedicated macros defined by the environment itself. +% - Here the separator is part of the node. Any extra LaTeX mark-up would +% have to originate from the writer itself to decorate it. +% - The legacy code used strangely \parindent and \indent. Possibly +% (unchecked) due to an earlier tabular usage, but a longtable does not +% work in paragraph mode, so \parindent was without effect and +% \indent only caused some extra blank line above display. +% - The table had some whitespace on its left, which we imitate here via +% \parindent usage (which works in our context...). +% +\newenvironment{productionlist}{% + \bigskip % imitate close enough legacy vertical whitespace, which was + % visibly excessive + \ttfamily % needed for space tokens to have same width as letters + \parindent1em % width of a "quad", font-dependent, usually circa width of 2 + % letters + \obeylines % line in = line out + \parskip\z@skip % prevent the parskip vertical whitespace between lines, + % which are technically to LaTeX now each its own paragraph + \@vobeyspaces % obey whitespace + % now a technicality to, only locally to this environment, prevent the + % suppression of indentation of first line, if it comes right after + % \section. Cf package indentfirst from which the code is borrowed. + \let\@afterindentfalse\@afterindenttrue\@afterindenttrue +}{% + \par % does not hurt... +} + +% Definition lists; requested by AMK for HOWTO documents. Probably useful +% elsewhere as well, so keep in in the general style support. +% +\newenvironment{definitions}{% + \begin{description}% + \def\term##1{\item[{##1}]\mbox{}\\*[0mm]}% +}{% + \end{description}% +} + +%% FROM DOCTUTILS LATEX WRITER +% +% The following is stuff copied from docutils' latex writer. +% +\newcommand{\optionlistlabel}[1]{\normalfont\bfseries #1 \hfill}% \bf deprecated +\newenvironment{optionlist}[1] +{\begin{list}{} + {\setlength{\labelwidth}{#1}% + \setlength{\rightmargin}{1cm}% + \setlength{\leftmargin}{\rightmargin}% + \addtolength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \renewcommand{\makelabel}{\optionlistlabel}}% +}{\end{list}} + +\newlength{\lineblockindentation} +\setlength{\lineblockindentation}{2.5em} +\newenvironment{lineblock}[1] +{\begin{list}{} + {\setlength{\partopsep}{\parskip}% + \addtolength{\partopsep}{\baselineskip}% + \topsep0pt\itemsep0.15\baselineskip\parsep0pt + \leftmargin#1\relax}% + \raggedright} +{\end{list}} + +% From docutils.writers.latex2e +% inline markup (custom roles) +% \DUrole{#1}{#2} tries \DUrole#1{#2} +\providecommand*{\DUrole}[2]{% + \ifcsname DUrole\detokenize{#1}\endcsname + \csname DUrole\detokenize{#1}\endcsname{#2}% + \else% backwards compatibility: try \docutilsrole#1{#2} + \ifcsname docutilsrole\detokenize{#1}\endcsname + \csname docutilsrole\detokenize{#1}\endcsname{#2}% + \else + #2% + \fi + \fi +} + +\providecommand*{\DUprovidelength}[2]{% + \ifdefined#1\else\newlength{#1}\setlength{#1}{#2}\fi +} + +\DUprovidelength{\DUlineblockindent}{2.5em} +\ifdefined\DUlineblock\else + \newenvironment{DUlineblock}[1]{% + \list{}{\setlength{\partopsep}{\parskip}% + \addtolength{\partopsep}{\baselineskip}% + \setlength{\topsep}{0pt}% + \setlength{\itemsep}{0.15\baselineskip}% + \setlength{\parsep}{0pt}% + \setlength{\leftmargin}{#1}}% + \raggedright + } + {\endlist} +\fi + +\endinput diff --git a/docs/build/latex/sphinxlatexshadowbox.sty b/docs/build/latex/sphinxlatexshadowbox.sty new file mode 100644 index 0000000..53a3338 --- /dev/null +++ b/docs/build/latex/sphinxlatexshadowbox.sty @@ -0,0 +1,178 @@ +%% TOPIC AND CONTENTS BOXES +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexshadowbox}[2024/07/28 v8.1.0 sphinxShadowBox] + +% Provides support for this output mark-up from Sphinx latex writer: +% +% - Environments: sphinxtopic, sphinxcontents, and sphinxsidebar. +% +% These wrappers replace at 8.1.0 former direct use of sphinxShadowBox +% environment which did not allow separate styling. +% +% - Commands: \sphinxstyletopictitle, \sphinxstylecontentstitle, and +% \sphinxstylesidebartitle. +% +% At 8.1.0 they default to use \sphinxdotitlerow whose definiion is done in +% sphinxlatexadmonitions.sty. There is also \sphinxstylesidebarsubtitle +% which does not use \sphinxdotitlerow. +% +% Dependencies (they do not need to be defined at time of loading): +% +% - of course the various colour and dimension options handled via sphinx.sty +% - dimension register \spx@image@maxheight from sphinxlatexgraphics.sty +% - \savenotes/\spewnotes from sphinxpackagefootnote.sty +% - \ifspx@inframed defined in sphinx.sty +% - \sphinxdotitlerow from sphinxlatexadmonitions.sty +% - \spx@boxes@fcolorbox@setup from sphinxpackageboxes.sty +% +\RequirePackage{framed} +% Those are required either before or after by sphinx.sty anyhow, but for +% clarity we list them here: +\RequirePackage{sphinxlatexgraphics} +\RequirePackage{sphinxpackagefootnote} +\RequirePackage{sphinxlatexadmonitions} +\RequirePackage{sphinxpackageboxes} + +% At 5.1.0 the code formerly here in a definition of \spx@ShadowFBox has been +% refactored to hand over to a more powerful \spx@boxes@fcolorbox provided by +% file sphinxpackageboxes.sty, it can draw rounded corners and add a background +% color. + +% At 6.2.0, \spx@ShadowFBox is so much simplified that it is now not +% separately defined but directly incorporated into the \FrameCommand +% definition done by sphinxShadowBox environment below. + +% Use framed.sty \MakeFramed/\endMakeFramed to allow page breaks for topic +% boxes. Originally Sphinx used \shadowbox from fancybox.sty but it did not +% allow pagebreaks (which was problematic for "contents" directive if there +% are many subsections). +% +% Docutils does not allow topic to be nested within topics or other body +% elements. But the LaTeX code here does allow it: +% +% - a topic inside another topic would be rendered in a minipage (thus not +% allowing pagebreaks). Its external frame would adapt perfectly to +% the *current (smaller) width for text*. +% +% - a topic inside (nested) lists or quote environments would have its frame +% take the *full width* of the page, but its text contents on the other hand +% would obey exactly the current indentation plus inner separation. This is +% in contrast with the framing used for literal blocks, also based, but in a +% more sophisticated way on usage of \MakeFramed/\endMakeFramed, and +% adjusting to current text indentation. +% +% At 8.1.0, sphinxShadowBox takes an optional argument #1 and uses it as +% \spx@boxes@fcolorbox@setup{#1} rather than \spx@boxes@fcolorbox@setup{topic}. +% Some hesitation whether to move this line to newly added sphinxtopic, +% sphinxcontents and sphinxsidebar environmments. But anyhow the environment +% also requires later knowing a few more things: sphinxTextColor and +% spx@@texextras. +% +% The #1 defaulting to topic must be such that all parameters expected by +% \spx@boxes@fcolorbox@setup actually do exist, see CSS options in sphinx.sty +% which is what defines them for contents, topic, and sidebar. +% +% Fortunately the #1 is not needed in \end{sphinxShadowBox} so we don't have +% to work around a LaTeX conception bug that such #1 can not be used as is in +% the definition of the \end part of an environment. +% +% MEMO: the "shadow" is not really drawn directly by this environment but +% indirectly via the configuration which is passed over to \spx@boxes@fcolorbox, +% which is the macro creating frame and (perhaps but not necessarily) a shadow. +\newenvironment{sphinxShadowBox}[1][topic]% + {% + \spx@boxes@fcolorbox@setup{#1}% + % we will use the dimen registers from sphinxpackageboxes.sty which now hold + % the values from options related to topic/contents + % MEMO: \spx@boxes@fcolorbox creates an \hbox but does not quit vertical + % mode; but in context of framed.sty's \FrameCommand TeX is already + % in restricted horizontal mode, so no need for a \leavevmode here. + \def\FrameCommand {\spx@boxes@fcolorbox}% + % 6.2.0 adds support for div.topic_box-decoration-break=slice. + % (it is yet undecided if slice style should inhibit a bottom shadow) + \@nameuse{ifspx@#1@border@open}% + \def\FirstFrameCommand + {\spx@boxes@fcolorbox@setup@openbottom\FrameCommand}% + \def\MidFrameCommand + {\spx@boxes@fcolorbox@setup@openboth \FrameCommand}% + \def\LastFrameCommand + {\spx@boxes@fcolorbox@setup@opentop \FrameCommand}% + \fi + \advance\spx@image@maxheight + -\dimexpr\spx@boxes@border@top+\spx@boxes@border@bottom + +\spx@boxes@padding@top+\spx@boxes@padding@bottom + +\ifdim\spx@boxes@shadow@yoffset<\z@-\fi\spx@boxes@shadow@yoffset + +\baselineskip\relax + % configure framed.sty not to add extra vertical spacing + \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}% + % the \trivlist will add the vertical spacing on top and bottom which is + % typical of center environment as used in Sphinx <= 1.4.1 + % the \noindent has the effet of an extra blank line on top, to + % imitate closely the layout from Sphinx <= 1.4.1; the \FrameHeightAdjust + % will put top part of frame on this baseline. + \def\FrameHeightAdjust {\baselineskip}% + % use package footnote to handle footnotes + \savenotes + \trivlist\item\noindent + % use a minipage if we are already inside a framed environment + \ifspx@inframed\begin{minipage}{\linewidth}\fi + \MakeFramed {\spx@inframedtrue + % framed.sty puts into "\width" the added width (padding+border widths) + % adjust \hsize to what the contents must use + \advance\hsize-\width + % adjust LaTeX parameters to behave properly in indented/quoted contexts + \FrameRestore + % typeset the contents as in a minipage (Sphinx <= 1.4.1 used a minipage and + % itemize/enumerate are therein typeset more tightly, we want to keep + % that). We copy-paste from LaTeX source code but don't do a real minipage. + \@pboxswfalse + \let\@listdepth\@mplistdepth \@mplistdepth\z@ + \@minipagerestore + \@setminipage + }% + \color@begingroup % workaround upstream framed.sty bug + \@nameuse{ifspx@#1@withtextcolor}% + \color{sphinx#1TextColor}% + \fi + \@nameuse{spx@#1@TeXextras}% + }% + {% insert the "endminipage" code + \par\unskip + \color@endgroup % matches the \color@begingroup + \@minipagefalse + \endMakeFramed + \ifspx@inframed\end{minipage}\fi + \endtrivlist + % output the stored footnotes + \spewnotes + } + +% 8.1.0 +\newenvironment{sphinxtopic} + {\begin{sphinxShadowBox}[topic]}{\end{sphinxShadowBox}} +\newenvironment{sphinxcontents} + {\begin{sphinxShadowBox}[contents]}{\end{sphinxShadowBox}} +% Arguably sphinxsidebar should rather use a wrapfig or similar environment +% but this is so dysfunctional in LaTeX (except for self-written documents) +% so we prefer to not venture into such a potential quagmire and keep the +% legacy rendering using a full width display. +\newenvironment{sphinxsidebar} + {\begin{sphinxShadowBox}[sidebar]}{\end{sphinxShadowBox}} + +% TODO: decide if this should be in sphinxlatexstyletext.sty rather +% +% 8.1.0 styles topic/contents/sidebar with a title row, too. +% Prior to 8.1.0, definitions use \protected\def but there does not seem +% to be any reason so back to \newcommand. +\newcommand*\sphinxstyletopictitle[1]{\sphinxdotitlerow{topic}{#1}} +\newcommand*\sphinxstylecontentstitle[1]{\sphinxdotitlerow{contents}{#1}} +\newcommand*\sphinxstylesidebartitle[1]{\sphinxdotitlerow{sidebar}{#1}} +% No default color background for subtitle. The contents next are injected by +% LaTeX writer after a blank line in source hence will start a new paragrpah. +% The \sphinxAtStartPar here is only for coherence with other text paragraphs, +% but does not have serious necessity (its general role is to allow hyphenation +% for first word in narrow table cells). +\newcommand*\sphinxstylesidebarsubtitle[1]{\sphinxAtStartPar\textbf{#1}} + +\endinput diff --git a/docs/build/latex/sphinxlatexstyleheadings.sty b/docs/build/latex/sphinxlatexstyleheadings.sty new file mode 100644 index 0000000..08773c0 --- /dev/null +++ b/docs/build/latex/sphinxlatexstyleheadings.sty @@ -0,0 +1,91 @@ +%% TITLES +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexstyleheadings}[2023/02/11 headings] + +\RequirePackage[nobottomtitles*]{titlesec} +% tests showed that this setting guarantees \section title has +% 3 lines of text following it on same page if near bottom. +\renewcommand\bottomtitlespace{6\baselineskip} +% the default setting of 0.2\textheight is about 11\baselineskip +% (for 10pt letterpaper documents) and may create large voids. + +\@ifpackagelater{titlesec}{2016/03/15}% + {\@ifpackagelater{titlesec}{2016/03/21}% + {}% + {\newif\ifsphinx@ttlpatch@ok + \IfFileExists{etoolbox.sty}{% + \RequirePackage{etoolbox}% + \patchcmd{\ttlh@hang}{\parindent\z@}{\parindent\z@\leavevmode}% + {\sphinx@ttlpatch@oktrue}{}% + \ifsphinx@ttlpatch@ok + \patchcmd{\ttlh@hang}{\noindent}{}{}{\sphinx@ttlpatch@okfalse}% + \fi + }{}% + \ifsphinx@ttlpatch@ok + \typeout{^^J Package Sphinx Info: ^^J + **** titlesec 2.10.1 successfully patched for bugfix ****^^J}% + \else + \AtEndDocument{\PackageWarningNoLine{sphinx}{^^J% +******** titlesec 2.10.1 has a bug, (section numbers disappear) ......|^^J% +******** and Sphinx could not patch it, perhaps because your local ...|^^J% +******** copy is already fixed without a changed release date. .......|^^J% +******** If not, you must update titlesec! ...........................|}}% + \sphinxbuildwarning{badtitlesec}% + \fi + }% + }{} + +% Augment the sectioning commands used to get our own font family in place, +% and reset some internal data items (\titleformat from titlesec package) +\titleformat{\section}{\Large\py@HeaderFamily}% + {\py@TitleColor\thesection}{0.5em}{\py@TitleColor} +\titleformat{\subsection}{\large\py@HeaderFamily}% + {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor} +% \normalsize added as work-around to a lualatex-ja upstream problem +% https://osdn.net/projects/luatex-ja/ticket/47321 +\titleformat{\subsubsection}{\normalsize\py@HeaderFamily}% + {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor} +% By default paragraphs (and subsubsections) will not be numbered because +% sphinxmanual.cls and sphinxhowto.cls set secnumdepth to 2 +\titleformat{\paragraph}{\normalsize\py@HeaderFamily}% + {\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor} +\titleformat{\subparagraph}{\normalsize\py@HeaderFamily}% + {\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor} + +% Since Sphinx 1.5, users should use HeaderFamily key to 'sphinxsetup' rather +% than defining their own \py@HeaderFamily command (which is still possible). +% Memo: \py@HeaderFamily is also used by \maketitle as defined in +% sphinxmanual.cls/sphinxhowto.cls +\newcommand{\py@HeaderFamily}{\spx@opt@HeaderFamily} + +% This sets up the fancy chapter headings that make the documents look +% at least a little better than the usual LaTeX output. +\@ifpackagewith{fncychap}{Bjarne}{ + \ChNameVar {\raggedleft\normalsize \py@HeaderFamily} + \ChNumVar {\raggedleft\Large \py@HeaderFamily} + \ChTitleVar{\raggedleft\Large \py@HeaderFamily} + % This creates (numbered) chapter heads without the leading \vspace*{}: + \def\@makechapterhead#1{% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \DOCH + \fi + \fi + \interlinepenalty\@M + \if@mainmatter + \DOTI{#1}% + \else% + \DOTIS{#1}% + \fi + }} +}{}% <-- "false" clause of \@ifpackagewith + +% fix fncychap's bug which uses prematurely the \textwidth value +\@ifpackagewith{fncychap}{Bjornstrup} + {\AtBeginDocument{\mylen\textwidth\advance\mylen-2\myhi}}% + {}% <-- "false" clause of \@ifpackagewith + + +\endinput diff --git a/docs/build/latex/sphinxlatexstylepage.sty b/docs/build/latex/sphinxlatexstylepage.sty new file mode 100644 index 0000000..53f9e48 --- /dev/null +++ b/docs/build/latex/sphinxlatexstylepage.sty @@ -0,0 +1,73 @@ +%% PAGE STYLING +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexstylepage}[2021/01/27 page styling] + +% Separate paragraphs by space by default. +\RequirePackage{parskip} + +% Style parameters and macros used by most documents here +\raggedbottom +\sloppy +\hbadness = 5000 % don't print trivial gripes + +% Require package fancyhdr except under memoir class +\@ifclassloaded{memoir}{}{\RequirePackage{fancyhdr}} +% Use \pagestyle{normal} as the primary pagestyle for text. +% Redefine the 'normal' header/footer style when using "fancyhdr" package: +\@ifpackageloaded{fancyhdr}{% + \ltx@ifundefined{c@chapter} + {% no \chapter, "howto" (non-Japanese) docclass + \fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[C]{{\py@HeaderFamily\thepage}} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} + } + % Same as 'plain', this way we can use it in template + % FIXME: shouldn't this have a running header with Name and Release like 'manual'? + \fancypagestyle{normal}{ + \fancyhf{} + \fancyfoot[C]{{\py@HeaderFamily\thepage}} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} + } + }% + {% classes with \chapter command + \fancypagestyle{normal}{ + \fancyhf{} + \fancyfoot[RO]{{\py@HeaderFamily\thepage}} + \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}} + \fancyhead[RO]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \if@twoside + \fancyfoot[LE]{{\py@HeaderFamily\thepage}} + \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}} + \fancyhead[LE]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \fi + \renewcommand{\headrulewidth}{0.4pt} + \renewcommand{\footrulewidth}{0.4pt} + % define chaptermark with \@chappos when \@chappos is available for Japanese + \ltx@ifundefined{@chappos}{} + {\def\chaptermark##1{\markboth{\@chapapp\space\thechapter\space\@chappos\space ##1}{}}} + } + % Update the plain style so we get the page number & footer line, + % but not a chapter or section title. This is to keep the first + % page of a chapter `clean.' + \fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[RO]{{\py@HeaderFamily\thepage}} + \if@twoside\fancyfoot[LE]{{\py@HeaderFamily\thepage}}\fi + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0.4pt} + } + } + } + {% no fancyhdr: memoir class + % Provide default for 'normal' style simply as an alias of 'plain' style + % This way we can use \pagestyle{normal} in LaTeX template + \def\ps@normal{\ps@plain} + % Users of memoir class are invited to redefine 'normal' style in preamble + } + + +\endinput diff --git a/docs/build/latex/sphinxlatexstyletext.sty b/docs/build/latex/sphinxlatexstyletext.sty new file mode 100644 index 0000000..d083cd9 --- /dev/null +++ b/docs/build/latex/sphinxlatexstyletext.sty @@ -0,0 +1,145 @@ +%% TEXT STYLING +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatexstyletext}[2024/07/28 v8.1.0 text styling] + +% 7.4.0 has moved all that is related to admonitions to sphinxlatexadmonitions.sty +% 8.1.0 has moved topic/contents/sidebar to sphinxlatexshadowbox.sty +% Most everything left here consists of macros which are part of the latex markup +% produced by the Sphinx LaTeX writer. + +% Some custom font markup commands. +\protected\def\sphinxstrong#1{\textbf{#1}} +\protected\def\sphinxcode#1{\texttt{#1}} +\protected\def\sphinxbfcode#1{\textbf{\sphinxcode{#1}}} +\protected\def\sphinxemail#1{\textsf{#1}} +\protected\def\sphinxtablecontinued#1{\textsf{#1}} +\protected\def\sphinxtitleref#1{\emph{#1}} +\protected\def\sphinxmenuselection#1{\emph{#1}} +\protected\def\sphinxguilabel#1{\emph{#1}} +\protected\def\sphinxkeyboard#1{\sphinxcode{#1}} +\protected\def\sphinxaccelerator#1{\underline{#1}} +\protected\def\sphinxcrossref#1{\emph{#1}} +\protected\def\sphinxtermref#1{\emph{#1}} +\protected\def\sphinxsamedocref#1{\emph{#1}} +\protected\def\sphinxparam#1{\emph{#1}} +\protected\def\sphinxtypeparam#1{\emph{#1}} +% \optional is used for ``[, arg]``, i.e. desc_optional nodes. +\long\protected\def\sphinxoptional#1{% + {\sphinxoptionalhook\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}} +\let\sphinxoptionalhook\empty + +% additional customizable styling +\def\sphinxstyleindexentry #1{\texttt{#1}} +\def\sphinxstyleindexextra #1{ (\emph{#1})} +\def\sphinxstyleindexpageref #1{, \pageref{#1}} +\def\sphinxstyleindexpagemain#1{\textbf{#1}} +\def\spxentry{\@backslashchar spxentry}% let to \sphinxstyleindexentry in index +\def\spxextra{\@backslashchar spxextra}% let to \sphinxstyleindexextra in index +\def\sphinxstyleindexlettergroup #1% + {{\Large\sffamily#1}\nopagebreak\vspace{1mm}} +\def\sphinxstyleindexlettergroupDefault #1% + {{\Large\sffamily\sphinxnonalphabeticalgroupname}\nopagebreak\vspace{1mm}} +\protected\def\sphinxstyleothertitle #1{\textbf{#1}} +% \text.. commands do not allow multiple paragraphs +% attention, this one is not self-delimiting +\protected\def\sphinxstyletheadfamily {\sffamily} +\protected\def\sphinxstyleemphasis #1{\emph{#1}} +\protected\def\sphinxstyleliteralemphasis#1{\emph{\sphinxcode{#1}}} +\protected\def\sphinxstylestrong #1{\textbf{#1}} +\protected\def\sphinxstyleliteralstrong#1{\sphinxbfcode{#1}} +\protected\def\sphinxstyleabbreviation #1{\textsc{#1}} +\protected\def\sphinxstyleliteralintitle#1{\sphinxcode{#1}} +\newcommand*\sphinxstylecodecontinued[1]{{\footnotesize(#1)}}% +\newcommand*\sphinxstylecodecontinues[1]{{\footnotesize(#1)}}% +% figure legend comes after caption and may contain arbitrary body elements +\newenvironment{sphinxlegend}{\par\small}{\par} +% reduce hyperref "Token not allowed in a PDF string" warnings on PDF builds +\AtBeginDocument{\pdfstringdefDisableCommands{% +% all "protected" macros possibly ending up in section titles should be here +% TODO: examine if \sphinxhref, \sphinxurl, \sphinnolinkurl should be handled + \let\sphinxstyleemphasis \@firstofone + \let\sphinxstyleliteralemphasis \@firstofone + \let\sphinxstylestrong \@firstofone + \let\sphinxstyleliteralstrong \@firstofone + \let\sphinxstyleabbreviation \@firstofone + \let\sphinxstyleliteralintitle \@firstofone + \let\sphinxupquote \@firstofone + \let\sphinxstrong \@firstofone + \let\sphinxcode \@firstofone + \let\sphinxbfcode \@firstofone + \let\sphinxemail \@firstofone + \let\sphinxcrossref \@firstofone + \let\sphinxtermref \@firstofone + \let\sphinxsamedocref\@firstofone + \let\sphinxhyphen\sphinxhyphenforbookmarks + \def\PYG#1#2{#2}% (can not yet appear in section titles, but perhaps in future) +}} + +% Special characters +% +\def\sphinxparamcomma{, }% by default separate parameters with comma + space +% If the signature is rendered with one line per param, this wil be used +% instead (this \texttt makes the comma slightly more distinctive). +\def\sphinxparamcommaoneperline{\texttt{,}} +% +% The \kern\z@ is to prevent en-dash and em-dash TeX ligatures. +% A linebreak can occur after the dash in regular text (this is +% normal behaviour of "-" in TeX, it is not related to \kern\z@). +% +% Parsed-literals and inline literals also use the \sphinxhyphen +% but linebreaks there are prevented due to monospace font family. +% (xelatex needs a special addition, cf. sphinxlatexliterals.sty) +% +% Inside code-blocks, dashes are escaped via another macro, from +% Pygments latex output (search for \PYGZhy in sphinxlatexliterals.sty), +% and are configured to allow linebreaks despite the monospace font. +% (the #1 swallows the {} from \sphinxhyphen{} mark-up) +\protected\def\sphinxhyphen#1{-\kern\z@} +\protected\def\sphinxhyphennobreak#1{\mbox{-}} +% The {} from texescape mark-up is kept, else -- gives en-dash in PDF bookmark +\def\sphinxhyphenforbookmarks{-} + +% For curly braces inside \index macro +\def\sphinxleftcurlybrace{\{} +\def\sphinxrightcurlybrace{\}} + +% Declare Unicode characters used by linux tree command to pdflatex utf8/utf8x +\def\spx@bd#1#2{% + \leavevmode + \begingroup + \ifx\spx@bd@height \@undefined\def\spx@bd@height{\baselineskip}\fi + \ifx\spx@bd@width \@undefined\setbox0\hbox{0}\def\spx@bd@width{\wd0 }\fi + \ifx\spx@bd@thickness\@undefined\def\spx@bd@thickness{.6\p@}\fi + \ifx\spx@bd@lower \@undefined\def\spx@bd@lower{\dp\strutbox}\fi + \lower\spx@bd@lower#1{#2}% + \endgroup +}% +\@namedef{sphinx@u2500}% BOX DRAWINGS LIGHT HORIZONTAL + {\spx@bd{\vbox to\spx@bd@height} + {\vss\hrule\@height\spx@bd@thickness + \@width\spx@bd@width\vss}}% +\@namedef{sphinx@u2502}% BOX DRAWINGS LIGHT VERTICAL + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss\vrule\@height\spx@bd@height + \@width \spx@bd@thickness\hss}}% +\@namedef{sphinx@u2514}% BOX DRAWINGS LIGHT UP AND RIGHT + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss\raise.5\spx@bd@height + \hb@xt@\z@{\hss\vrule\@height.5\spx@bd@height + \@width \spx@bd@thickness\hss}% + \vbox to\spx@bd@height{\vss\hrule\@height\spx@bd@thickness + \@width.5\spx@bd@width\vss}}}% +\@namedef{sphinx@u251C}% BOX DRAWINGS LIGHT VERTICAL AND RIGHT + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss + \hb@xt@\z@{\hss\vrule\@height\spx@bd@height + \@width \spx@bd@thickness\hss}% + \vbox to\spx@bd@height{\vss\hrule\@height\spx@bd@thickness + \@width.5\spx@bd@width\vss}}}% +\protected\def\sphinxunichar#1{\@nameuse{sphinx@u#1}}% + +% Tell TeX about pathological hyphenation cases: +\hyphenation{Base-HTTP-Re-quest-Hand-ler} + +\endinput diff --git a/docs/build/latex/sphinxlatextables.sty b/docs/build/latex/sphinxlatextables.sty new file mode 100644 index 0000000..4114955 --- /dev/null +++ b/docs/build/latex/sphinxlatextables.sty @@ -0,0 +1,1241 @@ +%% TABLES (WITH SUPPORT FOR MERGED CELLS OF GENERAL CONTENTS) +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxlatextables}[2024/07/01 v7.4.0 tables]% + +% Provides support for this output mark-up from Sphinx latex writer +% and table templates: +% +% - the tabulary and longtable environments from the eponymous packages +% - the varwidth environment +% - the >{} etc mark-up possible in tabularcolumns is from array package +% which is loaded by longtable and tabulary +% - \X, \Y, T column types; others (L, C, R, J) are from tabulary package +% - \sphinxaftertopcaption +% - \sphinxatlongtableend +% - \sphinxatlongtablestart +% - \sphinxattableend +% - \sphinxattablestart +% - \sphinxcapstartof +% - \sphinxcolwidth +% - \sphinxlongtablecapskipadjust +% - \sphinxmultirow +% - \sphinxstartmulticolumn +% - \sphinxstopmulticolumn +% - \sphinxtablestrut +% - \sphinxthecaptionisattop +% - \sphinxthelongtablecaptionisattop +% - \sphinxhline +% - \sphinxcline +% - \sphinxvlinecrossing +% - \sphinxfixclines +% - \sphinxtoprule +% - \sphinxmidrule +% - \sphinxbottomrule +% - \sphinxtableatstartofbodyhook +% - \sphinxtableafterendhook +% - \sphinxthistablewithglobalstyle +% - \sphinxthistablewithbooktabsstyle +% - \sphinxthistablewithborderlessstyle +% - \sphinxthistablewithstandardstyle +% - \sphinxthistablewithcolorrowsstyle +% - \sphinxthistablewithnocolorrowsstyle +% - \sphinxthistablewithvlinesstyle +% - \sphinxthistablewithnovlinesstyle +% +% Also provides user command (see docs) +% - \sphixncolorblend +% (Sphinx 7.4.0 now requires xcolor, so \sphinxcolorblend does not check +% its availability anymore) +% +% Executes \RequirePackage for: +% +% - tabulary +% - longtable +% - varwidth +% - colortbl +% - booktabs if 'booktabs' in latex_table_style +% +% Extends tabulary and longtable via patches and custom macros to support +% merged cells possibly containing code-blocks in complex tables + +\RequirePackage{tabulary} +% tabulary has a bug with its re-definition of \multicolumn in its first pass +% which is not \long. But now Sphinx does not use LaTeX's \multicolumn but its +% own macro. Hence we don't even need to patch tabulary. See +% sphinxpackagemulticell.sty +% X or S (Sphinx) may have meanings if some table package is loaded hence +% \X was chosen to avoid possibility of conflict +\newcolumntype{\X}[2]{p{\dimexpr + (\linewidth-\spx@arrayrulewidth)*#1/#2-\tw@\tabcolsep-\spx@arrayrulewidth\relax}} +\newcolumntype{\Y}[1]{p{\dimexpr + #1\dimexpr\linewidth-\spx@arrayrulewidth\relax-\tw@\tabcolsep-\spx@arrayrulewidth\relax}} +% \spx@arrayrulewidth is used internally and its meaning will be set according +% to the table type; no extra user code should modify it. In particular any +% \setlength{\spx@arrayrulewidth}{...} may break all of LaTeX... (really...) +\def\spx@arrayrulewidth{\arrayrulewidth}% 5.3.0, to be adjusted by each table +% using here T (for Tabulary) feels less of a problem than the X could be +\newcolumntype{T}{J}% +% For tables allowing pagebreaks +\RequirePackage{longtable} +% User interface to set-up whitespace before and after tables: +\newcommand*\sphinxtablepre {0pt}% +\newcommand*\sphinxtablepost{\medskipamount}% +% Space from caption baseline to top of table or frame of literal-block +\newcommand*\sphinxbelowcaptionspace{.5\sphinxbaselineskip}% +% as one can not use \baselineskip from inside longtable (it is zero there) +% we need \sphinxbaselineskip, which defaults to \baselineskip +\def\sphinxbaselineskip{\baselineskip}% +% The following is to ensure that, whether tabular(y) or longtable: +% - if a caption is on top of table: +% a) the space between its last baseline and the top rule of table is +% exactly \sphinxbelowcaptionspace +% b) the space from last baseline of previous text to first baseline of +% caption is exactly \parskip+\baselineskip+ height of a strut. +% c) the caption text will wrap at width \LTcapwidth (4in) +% - make sure this works also if "caption" package is loaded by user +% (with its width or margin option taking place of \LTcapwidth role) +% TODO: obtain same for caption of literal block: a) & c) DONE, b) TO BE DONE +% +% To modify space below such top caption, adjust \sphinxbelowcaptionspace +% To add or remove space above such top caption, adjust \sphinxtablepre: +% notice that \abovecaptionskip, \belowcaptionskip, \LTpre are **ignored** +% A. Table with longtable +\def\sphinxatlongtablestart + {\par + \vskip\parskip + \vskip\dimexpr\sphinxtablepre\relax % adjust vertical position + \vbox{}% get correct baseline from above + \LTpre\z@skip\LTpost\z@skip % set to zero longtable's own skips + \edef\sphinxbaselineskip{\dimexpr\the\dimexpr\baselineskip\relax\relax}% + \spx@inframedtrue % message to sphinxheavybox + }% +% Compatibility with caption package +\def\sphinxthelongtablecaptionisattop{% + \spx@ifcaptionpackage{\noalign{\vskip-\belowcaptionskip}}{}% +}% +% Achieves exactly \sphinxbelowcaptionspace below longtable caption +\def\sphinxlongtablecapskipadjust + {\dimexpr-\dp\strutbox + -\spx@ifcaptionpackage{\abovecaptionskip}{\sphinxbaselineskip}% + +\sphinxbelowcaptionspace\relax}% +\def\sphinxatlongtableend{\@nobreakfalse % latex3/latex2e#173 + \prevdepth\z@\vskip\sphinxtablepost\relax}% +% B. Table with tabular or tabulary +\def\sphinxattablestart{\par\vskip\dimexpr\sphinxtablepre\relax + \spx@inframedtrue % message to sphinxheavybox + }% +\let\sphinxattableend\sphinxatlongtableend +% This is used by tabular and tabulary templates +\newcommand*\sphinxcapstartof[1]{% + \vskip\parskip + \vbox{}% force baselineskip for good positioning by capstart of hyperanchor + % hyperref puts the anchor 6pt above this baseline; in case of caption + % this baseline will be \ht\strutbox above first baseline of caption + \def\@captype{#1}% + \capstart +% move back vertically, as tabular (or its caption) will compensate + \vskip-\baselineskip\vskip-\parskip +}% +\def\sphinxthecaptionisattop{% locate it after \sphinxcapstartof + \spx@ifcaptionpackage + {\caption@setposition{t}% + \vskip\baselineskip\vskip\parskip % undo those from \sphinxcapstartof + \vskip-\belowcaptionskip % anticipate caption package skip + % caption package uses a \vbox, not a \vtop, so "single line" case + % gives different result from "multi-line" without this: + \nointerlineskip + }% + {}% +}% +\def\sphinxthecaptionisatbottom{% (not finalized; for template usage) + \spx@ifcaptionpackage{\caption@setposition{b}}{}% +}% +% The aim of \sphinxcaption is to apply to tabular(y) the maximal width +% of caption as done by longtable +\def\sphinxtablecapwidth{\LTcapwidth}% +\newcommand\sphinxcaption{\@dblarg\spx@caption}% +\long\def\spx@caption[#1]#2{% + \noindent\hb@xt@\linewidth{\hss + \vtop{\@tempdima\dimexpr\sphinxtablecapwidth\relax +% don't exceed linewidth for the caption width + \ifdim\@tempdima>\linewidth\hsize\linewidth\else\hsize\@tempdima\fi +% longtable ignores \abovecaptionskip/\belowcaptionskip, so do the same here + \abovecaptionskip\sphinxabovecaptionskip % \z@skip + \belowcaptionskip\sphinxbelowcaptionskip % \z@skip + \caption[{#1}]% + {\strut\ignorespaces#2\ifhmode\unskip\@finalstrut\strutbox\fi}% + }\hss}% + \par\prevdepth\dp\strutbox +}% +\def\sphinxabovecaptionskip{\z@skip}% Do not use! Flagged for removal +\def\sphinxbelowcaptionskip{\z@skip}% Do not use! Flagged for removal +% This wrapper of \abovecaptionskip is used in sphinxVerbatim for top +% caption, and with another value in sphinxVerbatimintable +% TODO: To unify space above caption of a code-block with the one above +% caption of a table/longtable, \abovecaptionskip must not be used +% This auxiliary will get renamed and receive a different meaning +% in future. +\def\spx@abovecaptionskip{\abovecaptionskip}% +% Achieve \sphinxbelowcaptionspace below a caption located above a tabular +% or a tabulary +\newcommand\sphinxaftertopcaption +{% + \spx@ifcaptionpackage + {\par\prevdepth\dp\strutbox\nobreak\vskip-\abovecaptionskip}{\nobreak}% + \vskip\dimexpr\sphinxbelowcaptionspace\relax + \vskip-\baselineskip\vskip-\parskip +}% +% varwidth is crucial for our handling of general contents in merged cells +\RequirePackage{varwidth} +% but addition of a compatibility patch with hyperref is needed +% (tested with varwidth v 0.92 Mar 2009) +\AtBeginDocument {% + \let\@@vwid@Hy@raisedlink\Hy@raisedlink + \long\def\@vwid@Hy@raisedlink#1{\@vwid@wrap{\@@vwid@Hy@raisedlink{#1}}}% + \edef\@vwid@setup{% + \let\noexpand\Hy@raisedlink\noexpand\@vwid@Hy@raisedlink % HYPERREF ! + \unexpanded\expandafter{\@vwid@setup}}% +}% + +% NOTA BENE: since the multicolumn and multirow code was written Sphinx +% decided to prefix non public internal macros by \spx@ and in fact all +% such macros here should now be prefixed by \spx@table@, but doing the +% update is delayed to later. (written at 5.3.0) + +%%%%%%%%%%%%%%%%%%%%% +% --- MULTICOLUMN --- +% standard LaTeX's \multicolumn +% 1. does not allow verbatim contents, +% 2. interacts very poorly with tabulary. +% +% It is needed to write own macros for Sphinx: to allow code-blocks in merged +% cells rendered by tabular/longtable, and to allow multi-column cells with +% paragraphs to be taken into account sanely by tabulary algorithm for column +% widths. +% +% This requires quite a bit of hacking. First, in Sphinx, the multi-column +% contents will *always* be wrapped in a varwidth environment. The issue +% becomes to pass it the correct target width. We must trick tabulary into +% believing the multicolumn is simply separate columns, else tabulary does not +% incorporate the contents in its algorithm. But then we must clear the +% vertical rules... +% +% configuration of tabulary +\setlength{\tymin}{3\fontcharwd\font`0 }% minimal width of "squeezed" columns +\setlength{\tymax}{10000pt}% allow enough room for paragraphs to "compete" +% we need access to tabulary's final computed width. \@tempdima is too volatile +% to hope it has kept tabulary's value when \sphinxcolwidth needs it. +\newdimen\sphinx@TY@tablewidth +\def\tabulary{% + \def\TY@final{\sphinx@TY@tablewidth\@tempdima\tabular}% + \let\endTY@final\endtabular + \TY@tabular}% +% next hack is needed only if user has set latex_use_latex_multicolumn to True: +% it fixes tabulary's bug with \multicolumn defined "short" in first pass. (if +% upstream tabulary adds a \long, our extra one causes no harm) +\def\sphinx@tempa #1\def\multicolumn#2#3#4#5#6#7#8#9\sphinx@tempa + {\def\TY@tab{#1\long\def\multicolumn####1####2####3{\multispan####1\relax}#9}}% +\expandafter\sphinx@tempa\TY@tab\sphinx@tempa +% +% TN. 1: as \omit is never executed, Sphinx multicolumn does not need to worry +% like standard multicolumn about |l| vs l|. On the other hand it assumes +% columns are separated by a | ... (if not it will add extraneous +% \arrayrulewidth space for each column separation in its estimate of available +% width). +% +% Update at 5.3.0: code uses \spx@arrayrulewidth which is kept in sync with the +% table column specification (aka preamble): +% - no | in preamble: \spx@arrayrulewidth -> \z@ +% - at least a | in the preamble: \spx@arrayrulewidth -> \arrayrulewidth +% This is used for computation of merged cells widths. Mixed preambles using +% at least a | but not using it for all columns (as can be obtained via the +% tabularcolumns directive) may cause some merged cells contents to be slightly +% shifted to the left as they assume merged columns are | separated where in +% fact they perhaps are not. +% +% TN. 1b: as Sphinx multicolumn uses neither \omit nor \span, it can not +% (easily) get rid of extra macros from >{...} or <{...} between columns. At +% least, it has been made compatible with colortbl's \columncolor. +% +% TN. 2: tabulary's second pass is handled like tabular/longtable's single +% pass, with the difference that we hacked \TY@final to set in +% \sphinx@TY@tablewidth the final target width as computed by tabulary. This is +% needed only to handle columns with a "horizontal" specifier: "p" type columns +% (inclusive of tabulary's LJRC) holds the target column width in the +% \linewidth dimension. +% +% TN. 3: use of \begin{sphinxmulticolumn}...\end{sphinxmulticolumn} mark-up +% would need some hacking around the fact that groups can not span across table +% cells (the code does inserts & tokens, see TN1b). It was decided to keep it +% simple with \sphinxstartmulticolumn...\sphinxstopmulticolumn. +% +% MEMO about nesting: if sphinxmulticolumn is encountered in a nested tabular +% inside a tabulary it will think to be at top level in the tabulary. But +% Sphinx generates no nested tables, and if some LaTeX macro uses internally a +% tabular this will not have a \sphinxstartmulticolumn within it! +% +% 5.3.0 adds a check for multirow as single-row multi-column will allow a row +% colour but multi-row multi-column should not. +% Attention that this assumes \sphinxstartmulticolumn is always followed +% in latex mark-up either by \sphinxmultirow or \begin (from \begin{varwidth}). +\def\sphinxstartmulticolumn#1#2{% + \ifx\sphinxmultirow#2% + \gdef\spx@table@hackCT@inmergedcell{\spx@table@hackCT@nocolor}% + \else + \global\let\spx@table@hackCT@inmergedcell\spx@@table@hackCT@inmergedcell + \fi + \sphinx@startmulticolumn{#1}#2% +}% +\def\sphinx@startmulticolumn{% + \ifx\equation$% $ tabulary's first pass + \expandafter\sphinx@TYI@start@multicolumn + \else % either not tabulary or tabulary's second pass + \expandafter\sphinx@start@multicolumn + \fi +}% +\def\sphinxstopmulticolumn{% + \ifx\equation$% $ tabulary's first pass + \expandafter\sphinx@TYI@stop@multicolumn + \else % either not tabulary or tabulary's second pass + \ignorespaces + \fi +}% +\def\sphinx@TYI@start@multicolumn#1{% + % use \gdef always to avoid stack space build up + \gdef\sphinx@tempa{#1}\begingroup\setbox\z@\hbox\bgroup +}% +\def\sphinx@TYI@stop@multicolumn{\egroup % varwidth was used with \tymax + \xdef\sphinx@tempb{\the\dimexpr\wd\z@/\sphinx@tempa}% per column width + \endgroup + \expandafter\sphinx@TYI@multispan\expandafter{\sphinx@tempa}% +}% +\def\sphinx@TYI@multispan #1{% + \kern\sphinx@tempb\ignorespaces % the per column occupied width + \ifnum#1>\@ne % repeat, taking into account subtleties of TeX's & ... + \expandafter\sphinx@TYI@multispan@next\expandafter{\the\numexpr#1-\@ne\expandafter}% + \fi +}% +\def\sphinx@TYI@multispan@next{&\relax\sphinx@TYI@multispan}% +% +% Now the branch handling either the second pass of tabulary or the single pass +% of tabular/longtable. This is the delicate part where we gather the +% dimensions from the p columns either set-up by tabulary or by user p column +% or Sphinx \X, \Y columns. The difficulty is that to get the said width, the +% template must be inserted (other hacks would be horribly complicated except +% if we rewrote crucial parts of LaTeX's \@array !) and we can not do +% \omit\span like standard \multicolumn's easy approach. Thus we must cancel +% the \vrule separators. Also, perhaps the column specifier is of the l, c, r +% type, then we attempt an ad hoc rescue to give varwidth a reasonable target +% width. +\def\sphinx@start@multicolumn#1{% + \gdef\sphinx@multiwidth{0pt}\gdef\sphinx@tempa{#1}\sphinx@multispan{#1}% +}% +\def\sphinx@multispan #1{% + \ifnum#1=\@ne\expandafter\sphinx@multispan@end + \else\expandafter\sphinx@multispan@next + \fi {#1}% +}% +\def\sphinx@multispan@next #1{% + % trick to recognize L, C, R, J or p, m, b type columns + \ifdim\baselineskip>\z@ + \gdef\sphinx@tempb{\linewidth}% + \else + % if in an l, r, c type column, try and hope for the best + \xdef\sphinx@tempb{\the\dimexpr(\ifx\TY@final\@undefined\linewidth\else + \sphinx@TY@tablewidth\fi-\spx@arrayrulewidth)/\sphinx@tempa + -\tw@\tabcolsep-\spx@arrayrulewidth\relax}% + \fi + \noindent\kern\sphinx@tempb\relax + \xdef\sphinx@multiwidth + {\the\dimexpr\sphinx@multiwidth+\sphinx@tempb+\tw@\tabcolsep+\spx@arrayrulewidth}% + \spx@table@hackCT@fixcolorpanel + % silence a | column separator in our merged cell + \spx@table@hackCT@inhibitvline + % prevent column colours to interfere with our multi-column but allow row + % colour (we can't obey a \cellcolor as it has not be seen yet at this stage) + \spx@table@hackCT@inmergedcell&\relax + % repeat + \expandafter\sphinx@multispan\expandafter{\the\numexpr#1-\@ne}% +}% +\def\sphinx@multispan@end#1{% + % first, trace back our steps horizontally + \noindent\kern-\dimexpr\sphinx@multiwidth\relax + % and now we set the final computed width for the varwidth environment + \ifdim\baselineskip>\z@ + \xdef\sphinx@multiwidth{\the\dimexpr\sphinx@multiwidth+\linewidth}% + \else + \xdef\sphinx@multiwidth{\the\dimexpr\sphinx@multiwidth+ + (\ifx\TY@final\@undefined\linewidth\else + \sphinx@TY@tablewidth\fi-\spx@arrayrulewidth)/\sphinx@tempa + -\tw@\tabcolsep-\spx@arrayrulewidth\relax}% + \fi + % last cell of the multi-column + \aftergroup\spx@table@hackCT@fixcolorpanel + \aftergroup\spx@table@hackCT@inmergedcell +}% +\newcommand*\sphinxcolwidth[2]{% + % this dimension will always be used for varwidth, and serves as maximum + % width when cells are merged either via multirow or multicolumn or both, + % as always their contents is wrapped in varwidth environment. + \ifnum#1>\@ne % multi-column (and possibly also multi-row) + % we wrote our own multicolumn code especially to handle that (and allow + % verbatim contents) + \ifx\equation$%$ + \tymax % first pass of tabulary (cf MEMO above regarding nesting) + \else % the \@gobble thing is for compatibility with standard \multicolumn + \sphinx@multiwidth\@gobble{#1/#2}% + \fi + \else % single column multirow + \ifx\TY@final\@undefined % not a tabulary. + \ifdim\baselineskip>\z@ + % in a p{..} type column, \linewidth is the target box width + \linewidth + \else + % l, c, r columns. Do our best. + \dimexpr(\linewidth-\spx@arrayrulewidth)/#2- + \tw@\tabcolsep-\spx@arrayrulewidth\relax + \fi + \else % in tabulary + \ifx\equation$%$% first pass + \tymax % it is set to a big value so that paragraphs can express themselves + \else + % second pass. + \ifdim\baselineskip>\z@ + \linewidth % in a L, R, C, J column or a p, \X, \Y ... + \else + % we have hacked \TY@final to put in \sphinx@TY@tablewidth the table width + \dimexpr(\sphinx@TY@tablewidth-\spx@arrayrulewidth)/#2- + \tw@\tabcolsep-\spx@arrayrulewidth\relax + \fi + \fi + \fi + \fi +}% +% fallback default in case user has set latex_use_latex_multicolumn to True: +% \sphinxcolwidth will use this only inside LaTeX's standard \multicolumn +\def\sphinx@multiwidth #1#2{\dimexpr % #1 to gobble the \@gobble (!) + (\ifx\TY@final\@undefined\linewidth\else\sphinx@TY@tablewidth\fi + -\spx@arrayrulewidth)*#2-\tw@\tabcolsep-\spx@arrayrulewidth\relax}% + +% \spx@table@hackCT@inhibitvline +% packages like colortbl add group levels, we need to "climb back up" to be +% able to hack the \vline and also the colortbl inserted tokens. The hack +% sets the \arrayrulewidth to \z@ to inhibit a | separator at right end +% of the cell, if present (our code does not use \omit so can not avoid the +% \vline insertion, but setting its width to zero makes it do nothing). +% Some subtlety with colour panels must be taken care of. +\def\spx@table@hackCT@inhibitvline{\ifnum\currentgrouptype=6\relax + \kern\spx@arrayrulewidth % will be compensated by extra colour panel left overhang + \arrayrulewidth\z@% trick to inhibit the {\vrule width \arrayrulewidth} + \else\aftergroup\spx@table@hackCT@inhibitvline\fi}% + +% hacking around colour matters +% Sphinx 1.6 comment: +% It turns out \CT@row@color is not expanded contrarily to \CT@column@color +% during LaTeX+colortbl preamble preparation, hence it would be possible for +% \CT@setup to discard only the column color and choose to obey or not +% row color and cell color. It would even be possible to propagate cell color +% to row color for the duration of the Sphinx multicolumn... the (provisional?) +% choice has been made to cancel the colortbl colours for the multicolumn +% duration. +% Sphinx 5.3.0 comment: +% - colortbl has no mechanism to disable colour background in a given cell: +% \cellcolor triggers one more \color, but has no possibility to revert +% a previously emitted \color, only to override it via an additional \color +% - prior to 5.3.0, Sphinx did not officially support colour in tables, +% but it did have a mechanism to protect merged cells from being partly +% covered by colour panels at various places. At 5.3.0 this mechanism +% is relaxed a bit to allow row colour for a single-row merged cell. +% +% fixcolorpanel +\def\spx@table@hackCT@fixcolorpanel{\ifnum\currentgrouptype=6\relax + \edef\spx@table@leftcolorpanelextra + % \edef as \arrayrulewidth will be set to \z@ next, + % hence also \spx@arrayrulewidth... + {\sphinxcolorpanelextraoverhang+\the\spx@arrayrulewidth}% + \else\aftergroup\spx@table@hackCT@fixcolorpanel\fi}% +% +% inmergedcell +% \spx@table@hackCT@inmergedcell will be locally set to either this +% \spx@@table@hackCT@inmergedcell or to \spx@table@hackCT@nocolor +% "\let\spx@original@CT@setup\CT@setup" is done after loading colortbl +\def\spx@@table@hackCT@inmergedcell{\ifnum\currentgrouptype=6\relax + \let\CT@setup\spx@CT@setup@inmergedcell + \else\aftergroup\spx@@table@hackCT@inmergedcell\fi +}% +\newif\ifspx@table@inmergedcell +\def\spx@CT@setup@inmergedcell #1\endgroup{% + % - obey only row color and disable effect of \sphinxcolorblend + % - turn on the inmergedcell boolean to signal to \CT@row@color + \spx@original@CT@setup + \spx@table@inmergedcelltrue % needed by \CT@row@color + % deactivate effect of \sphinxcolorblend if it happened at all + \ifdefined\blendcolors\blendcolors{}\fi + \CT@row@color + \CT@do@color + \global\let\CT@cell@color\relax + \endgroup +}% +% +% nocolor +\def\spx@table@hackCT@nocolor{\ifnum\currentgrouptype=6\relax +% sadly \CT@column@color is possibly already expanded so we can't +% simply do \let\CT@column@color\relax etc... +% admittedly we could perhaps hack \CT@color but well + \let\CT@setup\spx@CT@setup@nocolor + \else\aftergroup\spx@table@hackCT@nocolor\fi +} +\def\spx@CT@setup@nocolor#1\endgroup{% + \global\let\CT@cell@color\relax + % the above fix was added at 5.3.0 + % formerly a \cellcolor added by a raw latex directive in the merged cell + % would have caused colour to apply to the *next* cell after the merged + % one; we don't support \cellcolor from merged cells contents anyhow. + \endgroup} +% +% norowcolor +\def\spx@table@hackCT@norowcolor{% +% a bit easier although merged cells complicate the matter as they do need +% to keep the rowcolor; and we can't know yet if we are in a merged cell + \ifnum\currentgrouptype=6\relax + \ifx\CT@row@color\relax + \else + \let\spx@saved@CT@row@color\CT@row@color + \def\CT@row@color{% + \ifspx@table@inmergedcell\expandafter\spx@saved@CT@row@color\fi + }% + \fi + \else\aftergroup\spx@table@hackCT@norowcolor\fi +} +% +% \sphinxcolorblend +\def\spx@table@hackCT@colorblend{% + \ifnum\currentgrouptype=6\relax + \expandafter\blendcolors\spx@colorblendparam + % merged cells will do a \blendcolors{} to cancel the effet + % we can not know here yet if in merged cell as the boolean + % \ifspx@table@inmergedcell is not yet updated + \else + \aftergroup\spx@table@hackCT@colorblend + \fi +} +\def\sphinxcolorblend#1{\gdef\spx@colorblendparam{{#1}}\spx@table@hackCT@colorblend} + + +%%%%%%%%%%%%%%%%%% +% --- MULTIROW --- +% standard \multirow +% 1. does not allow verbatim contents, +% 2. does not allow blank lines in its argument, +% 3. its * specifier means to typeset "horizontally" which is very +% bad for paragraph content. 2016 version has = specifier but it +% must be used with p type columns only, else results are bad, +% 4. it requires manual intervention if the contents is too long to fit +% in the asked-for number of rows. +% 5. colour panels (either from \rowcolor or \columncolor) will hide +% the bottom part of multirow text, hence manual tuning is needed +% to put the multirow insertion at the _bottom_. +% +% The Sphinx solution consists in always having contents wrapped +% in a varwidth environment so that it makes sense to estimate how many +% lines it will occupy, and then ensure by insertion of suitable struts +% that the table rows have the needed height. The needed mark-up is done +% by LaTeX writer, which has its own id for the merged cells. +% +% The colour issue is "solved" by clearing colour panels in all cells, +% whether or not the multirow is single-column or multi-column. +% +% MEMO at 5.3.0: to allow a multirow cell in a single column to react to +% \columncolor correctly, it seems only way is that the contents +% are inserted by bottom cell (this is mentioned in multirow.sty doc, too). +% Sphinx could at Python level "move" the contents to that cell. But the +% mechanism used here via \sphinxtablestrut to enlarge rows to make room for +% the contents if needed becomes more challenging yet, because \sphinxtablestrut +% mark-up will be parsed by TeX *before* it sees the contents of the merged +% cell.. So it seems the best way would be to actually store the contents into +% some owned-by-Sphinx box storage which needs to be globally allocated to +% that usage ; then we need multiple such boxes, say at least 5 to cover +% 99% or use case. Or perhaps some trick with storing in a \vbox and recovering +% via some \vsplit but this becomes complicated... perhaps in future. +% +% In passing we obtain baseline alignments across rows (only if +% \arraystretch is 1, as LaTeX's does not obey \arraystretch in "p" +% multi-line contents, only first and last line...) +% +% TODO: examine the situation with \arraystretch > 1. The \extrarowheight +% is hopeless for multirow anyhow, it makes baseline alignment strictly +% impossible. +\newcommand\sphinxmultirow[2]{\begingroup + % #1 = nb of spanned rows, #2 = Sphinx id of "cell", #3 = contents + % but let's fetch #3 in a way allowing verbatim contents ! + \def\sphinx@nbofrows{#1}\def\sphinx@cellid{#2}% + \afterassignment\sphinx@multirow\let\next= +}% +\def\sphinx@multirow {% + \setbox\z@\hbox\bgroup\aftergroup\sphinx@@multirow\strut +}% +\def\sphinx@@multirow {% +% MEMO: we could check status of \CT@cell@color here, but unfortunately we +% can't know the exact height which will be covered by the cells in total +% (it may be more than our \box\z@ dimensions). We could use an \fcolorbox +% wrapper on \box\z@ but this will not extend precisely to the bottom rule. +% +% Only solution if we want to obey a raw \cellcolor, or a \columncolor, seems +% to delay unboxing the gathered contents as part of the bottom row with +% a suitable vertical adjustment... +% + % The contents, which is a varwidth environment, has been captured in + % \box0 (a \hbox). + % We have with \sphinx@cellid an assigned unique id. The goal is to give + % about the same height to all the involved rows. + % For this Sphinx will insert a \sphinxtablestrut{cell_id} mark-up + % in LaTeX file and the expansion of the latter will do the suitable thing. + \dimen@\dp\z@ + \dimen\tw@\ht\@arstrutbox + \advance\dimen@\dimen\tw@ + \advance\dimen\tw@\dp\@arstrutbox + \count@=\dimen@ % type conversion dim -> int + \count\tw@=\dimen\tw@ + \divide\count@\count\tw@ % TeX division truncates + \advance\dimen@-\count@\dimen\tw@ + % 1300sp is about 0.02pt. For comparison a rule default width is 0.4pt. + % (note that if \count@ holds 0, surely \dimen@>1300sp) + \ifdim\dimen@>1300sp \advance\count@\@ne \fi + % now \count@ holds the count L of needed "lines" + % and \sphinx@nbofrows holds the number N of rows + % we have L >= 1 and N >= 1 + % if L is a multiple of N, ... clear what to do ! + % else write L = qN + r, 1 <= r < N and we will + % arrange for each row to have enough space for: + % q+1 "lines" in each of the first r rows + % q "lines" in each of the (N-r) bottom rows + % for a total of (q+1) * r + q * (N-r) = q * N + r = L + % It is possible that q == 0. + \count\tw@\count@ + % the TeX division truncates + \divide\count\tw@\sphinx@nbofrows\relax + \count4\count\tw@ % q + \multiply\count\tw@\sphinx@nbofrows\relax + \advance\count@-\count\tw@ % r + \expandafter\xdef\csname sphinx@tablestrut_\sphinx@cellid\endcsname + {\noexpand\sphinx@tablestrut{\the\count4}{\the\count@}{\sphinx@cellid}}% + \dp\z@\z@ + % this will use the real height if it is >\ht\@arstrutbox + \sphinxtablestrut{\sphinx@cellid}\box\z@ + \endgroup % group was opened in \sphinxmultirow +}% +\newcommand*\sphinxtablestrut[1]{% + % #1 is a "cell_id", i.e. the id of a merged group of table cells + \csname sphinx@tablestrut_#1\endcsname +}% +% LaTeX typesets the table row by row, hence each execution can do +% an update for the next row. +\newcommand*\sphinx@tablestrut[3]{\begingroup + % #1 = q, #2 = (initially) r, #3 = cell_id, q+1 lines in first r rows + % if #2 = 0, create space for max(q,1) table lines + % if #2 > 0, create space for q+1 lines and decrement #2 + \leavevmode + \count@#1\relax + \ifnum#2=\z@ + \ifnum\count@=\z@\count@\@ne\fi + \else + % next row will be with a #2 decremented by one + \expandafter\xdef\csname sphinx@tablestrut_#3\endcsname + {\noexpand\sphinx@tablestrut{#1}{\the\numexpr#2-\@ne}{#3}}% + \advance\count@\@ne + \fi + \vrule\@height\ht\@arstrutbox + \@depth\dimexpr\count@\ht\@arstrutbox+\count@\dp\@arstrutbox-\ht\@arstrutbox\relax + \@width\z@ + \endgroup + % we need this to avoid colour panels hiding bottom parts of multirow text + \spx@table@hackCT@nocolor +}% + +%%%%%%%%%%%%%%%%%% +% --- STYLING --- +% + +% +% Support for colour in table +% +% Core LaTeX package (very old, part of texlive-latex-base on Debian distr.) +% providing \columncolor, \rowcolor, \cellcolor and \arrayrulecolor. +\RequirePackage{colortbl} +\let\spx@original@CT@setup\CT@setup + +% LaTeX's \cline has **strong** deficiencies +% ****************************************** +% We work around them via an added \sphinxfixclines{number of columns} in the +% table mark-up, and also extra mark-up \sphinxvlinecrossing{col no} for +% crossings not contiguous to any cline. To fix the gap at left extremity of a +% \cline, we redefine the core LaTeX \c@line because this avoids adjoining a +% small square with potential PDF viewer anti-aliasing issues. We waited +% after loading colortbl because it also redefines \c@line for it to obey the +% colour set by \arrayrulecolor. +% MEMO: booktabs package does *not* redefine \@cline so we are safe here. +\def\@cline#1-#2\@nil{% + \omit + \@multicnt#1% + \advance\@multispan\m@ne + \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi + \@multicnt#2% + \advance\@multicnt-#1% + \advance\@multispan\@ne + {\CT@arc@ +% start of Sphinx modification + \ifnum#1>\@ne\kern-\spx@arrayrulewidth\fi% fix gap at join with vertical lines +% end of Sphinx modification +% Comments: +% +% If we had the information whether the previous column ended with a | or +% not, we could decide what to do here. Alternatively the mark-up could +% use either original \cline or the one modified as here depending on case. +% One wonders why LaTeX does not provide itself the alternative as a +% complement to \cline, to use on case by case basis. +% Here we handle both at same time via using the \spx@arrayrulewidth which +% will be \z@ if no | at all so will induce here nothing. +% +% As a result Sphinx basically supports well only tables having either all +% columns |-separated, or no | at all, as it uses \spx@arrayrrulewidth in +% all columns (here and in multicolumn code). +% +% We also considered a method not modifying \c@line but it requires too +% much extra mark-up from Python LaTeX writer and/or extra LaTeX coding. +% back to LaTeX+colortbl code + \leaders\hrule\@height\arrayrulewidth\hfill}% + \cr +% the last one will need to be compensated, this is job of \sphinxclines + \noalign{\vskip-\arrayrulewidth}% +} +\def\spx@table@fixvlinejoin{% + {\CT@arc@ % this is the color command set up by \arrayrulecolor + \vrule\@height\arrayrulewidth +% side remark: LaTeX has only a single \arrayrulewidth for all kinds +% for cell borders in table, horizontal or vertical... + \@depth\z@ + \@width\spx@arrayrulewidth + }% +} +% Sphinx LaTeX writer issues one such for each vertical line separating two +% contiguous multirow cells; i.e. those crossings which can are not already +% taken care of by our modified at left extremity \cline. +% One could imagine a more \...crossingS (plural) receiving a comma delimited +% list, which would simplify the mark-up but this would complexify both the +% Python and the LaTeX coding. +\def\sphinxtablevlinecrossing#1{% + \sphinxtabledecrementrownum + \omit + \@multispan{#1}% + \hfill + \spx@table@fixvlinejoin + \cr + \noalign{\vskip-\arrayrulewidth}% +} +% This "fixclines" is also needed if no \sphinxcline emitted and is useful +% even in extreme case with no \sphinxvlinecrossing either, to give correct +% height to multirow extending across all table width assuming other rows are +% separated generally by an \hline, so as to keep coherent line spacing. +% +% It is designed to work ok even if no | separators are in the table (because +% \spx@table@fixvlinejoin uses \spx@arrayrulewidth which is \z@ in that case). +\def\sphinxtablefixclines#1{% #1 is the number of columns of the table + \sphinxtabledecrementrownum + \omit + \spx@table@fixvlinejoin% unneeded if first \cline started at column 1 but does + % not hurt; fills small gap at left-bordered table + \@multispan{#1}% + \hfill + \spx@table@fixvlinejoin% fill small gap at right-bordered table + \cr + % this final one does NO \vskip-\arrayrulewidth... that's the whole point +} +%%%% end of \cline workarounds + +% +% - passing option "table" to xcolor also loads colortbl but we needed to +% load color or xcolor prior to the handling of the options +% +% - the \rowcolors command from [table]{xcolor} has various problems: +% +% * it is rigid and does not out-of-the-box allow a more complex scheme +% such as colorA+colorB+colorC+colorB+colorC+colorB+colorC... suitable to +% distinguish a header row. +% +% * its code does not export the used colour, an information which we may +% need for example to colourize the rule via \arrayrulecolor in the +% appropriate manner, for example to colourize the booktabs induced vertical +% whitespace to avoid gaps (if one wants to). +% +% * incompatibility with tabulary: the output depends on parity of total +% number of rows! +% +% * problems with longtable: the caption will receive a background colour +% panel, if we do not deactivate the \rowcolors action during definition of +% the headers and footers; this requires extra mark-up. Besides if we +% deactivate using \hiderowcolors during header and footer formation, the +% parity of the body rows is shifted, \rownum is even, not odd, at first body +% row. And setting \rownum at start of first body row is too late for +% influencing the colour. +% +% * it has a global impact and must be reset at each table. We can not +% issue it only once and it provides no public interface (without @) to +% cancel its effect conveniently (\hiderowcolors can only be used from +% *inside* a table.) +% +% * its core mechanism which increments the row count is triggered +% if a \cline is encountered... so this offsets the alternating colours... +% ... or not if there are two \cline's in the row... +% (as we will use same mechanism we have to correct this increment). +% +% So we need our own code. + +% Provide \rownum and rownum LaTeX counter (code copied from colortbl v1.0f) +\ltx@ifundefined{rownum}{% + \ltx@ifundefined{c@rownum}% + {\newcount\rownum\let\c@rownum\rownum}% + {\let\rownum\c@rownum}% + }% +{\let\c@rownum\rownum} +\providecommand\therownum{\arabic{rownum}} + +% extra overhang for color panels to avoid visual artifacts in pdf viewers +% (particularly if borderless) +\def\sphinxcolorpanelextraoverhang{0.1pt} +\def\spx@table@leftcolorpanelextra {\sphinxcolorpanelextraoverhang} +\def\spx@table@rightcolorpanelextra{\sphinxcolorpanelextraoverhang} +% the macro to which \CT@row@color will be set for coloured rows, serves both +% in header and body, the colours must have been defined at time of use +\def\spx@table@CT@row@color{\ifspx@table@inmergedcell + \CT@color{sphinxTableMergeColor}% + \else + \CT@color{sphinxTableRowColor}% + \fi + \@tempdimb\dimexpr\col@sep+\spx@table@leftcolorpanelextra\relax + \@tempdimc\dimexpr\col@sep+\spx@table@rightcolorpanelextra\relax + }% +% used by itself this will influence a single row if \CT@everycr is the +% colortbl one, to influences all rows the \CT@everycr must be modified (see +% below) +\def\sphinxrowcolorON {\global\let\CT@row@color\spx@table@CT@row@color}% +% this one turns off row colours until the next \sphinxrowcolorON +\def\sphinxrowcolorOFF{\global\let\CT@row@color\relax}% +% this one inhibits the row colour in one cell only (can be used as +% >{\sphinxnorowcolor} for turning off row colours in a given column) +\def\sphinxnorowcolor{\spx@table@hackCT@norowcolor}% + +% \sphinxtoprule (or rather \sphinxtabletoprulehook) will be modified by +% the colorrows class to execute this one: +\def\spx@table@@toprule@rowcolorON{% + \noalign{% + % Because of tabulary 2-pass system, the colour set-up at end of table + % would contaminate the header colours at start of table, so must reset + % them here. We want all header rows to obey same colours, so we don't + % use original \CT@everycr which sets \CT@row@color to \relax. + \global\CT@everycr{\the\everycr}% + \global\sphinxcolorlet{sphinxTableRowColor}{sphinxTableRowColorHeader}% + \global\sphinxcolorlet{sphinxTableMergeColor}{\sphinxTableMergeColorHeader}% + \sphinxrowcolorON + }% +}% + +% \sphinxtableatstartofbodyhook will be modified by colorrows class to +% execute this one; it starts the alternating colours and triggers increment +% or \rownum count at each new row (the xcolor base method for \rowcolors) +\def\spx@table@@startbodycolorrows{% + \noalign{% + \global\CT@everycr{% Nota Bene: in a longtable with \hline the \everycr is + % done two extra times! but 2 is even, so this is ok + \noalign{\global\advance\rownum\@ne % the xcolor \rowcolors base trick +% MEMO: colortbl \CT@row@color is expanded *after* the cell contents have been +% gathered and measured, so it can't be used to expose e.g. the colour to the +% cell contents macro code. Of course if it is known how the colour is chosen +% the procedure could be done from inside the cell. Simpler to expose the colour +% in a public name sphinxTableRowColor at start of the row in this \noalign. + \sphinxSwitchCaseRowColor\rownum + }% + \the\everycr + }% + \global\rownum\@ne % is done from inside table so ok with tabulary two passes + \sphinxSwitchCaseRowColor\rownum % set up color for the first body row + \sphinxrowcolorON % has been done from \sphinxtoprule location but let's do + % it again in case \sphinxtabletoprulehook has been used + % to inhibit colours in the header rows + }% end of noalign contents +} +% set the colours according to row parity; a priori #1 is \rownum, but +% the macro has been designed to be usable in user level added code +\def\sphinxSwitchCaseRowColor#1{% + \ifodd#1\relax + \global\sphinxcolorlet{sphinxTableRowColor}{sphinxTableRowColorOdd}% + \global\sphinxcolorlet{sphinxTableMergeColor}{\sphinxTableMergeColorOdd}% + \else + \global\sphinxcolorlet{sphinxTableRowColor}{sphinxTableRowColorEven}% + \global\sphinxcolorlet{sphinxTableMergeColor}{\sphinxTableMergeColorEven}% + \fi +} + +% each \cline or \cmidrule (booktabs) consumes one \cr, offsetting the \rownum +% parity; so this macro serves to compensate and must be added to each such +% \cline or \cmidrule (see below) +\def\spx@table@@decrementrownum{\noalign{\global\advance\rownum\m@ne}} +\let\sphinxtabledecrementrownum\@empty + +% \sphinxtableafterendhook will be modified by colorrows class to execute +% this after the table +\def\spx@table@resetcolortbl{% + \sphinxrowcolorOFF + \spx@table@reset@CTeverycr +% this last bit is done in order for the \sphinxbottomrule from the "foot" +% longtable template to be able to use same code as the \sphinxbottomrule +% at end of table body; see \sphinxbooktabsspecialbottomrule code + \global\rownum\z@ +} +\def\spx@table@reset@CTeverycr{% +% we should probably be more cautious and not hard-code here the colortbl +% set-up; so the macro is defined without @ to fac + \global\CT@everycr{\noalign{\global\let\CT@row@color\relax}\the\everycr}% +} + +% At last the style macros \sphinxthistablewithstandardstyle etc... + +% They are executed before the table environments in a scope limiting +% wrapper "savenotes" environment. +% +% 0) colour support is enacted via adding code to three hooks: +% - \sphinxtabletoprulehook (implicit from \sphinxtoprule expansion) +% - \sphinxtableatstartofbodyhook (explicit from table templates) +% - \sphinxtableafterendhook (explicit from table templates) +% additionally special adjustment must be made in \sphinxcline +% +\def\sphinxtoprule{\spx@toprule\sphinxtabletoprulehook} +% \spx@toprule is what is defined by the standard, booktabs and borderless +% styles. +% The colorrows class will prepend \spx@table@toprule@rowcolorON into +% \sphinxtabletoprulehook which a priori is \@empty but can contain user added +% extra code, and is executed after \spx@toprule. +\let\sphinxtabletoprulehook \@empty +\let\sphinxtableatstartofbodyhook\@empty +\let\sphinxtableafterendhook \@empty +% +% 1) we manage these three hooks in a way allowing a custom user extra wrapper +% environment from a container class to use them as entry point for some +% custom code. The container code is done first, prior to table templates. +% So, the style macros will *prepend* the needed color-code to the existing +% custom user code, so the custom user code can override them. The custom +% user code should not redefine any of the 3 \sphinxtable...hook macros via a +% \global\def, but their contents can use \gdef. In fact they probably need +% to for the first two hooks which are executed from inside the table and +% a priori need their code to be in a \noalign which limits scope. +% +% 2) the table templates and LaTeX writer code make it so that only +% one of either +% \sphinxthistablewithcolorrowsstyle, +% or \sphinxthistablewithnocolorrowsstyle +% will be inserted explicitly depending on local :class: for table. +% The global 'colorrows' style in latex_table_style translates at bottom +% of this file into code for inserting \sphinxthistablewithcolorrowsstyle +% at end of \sphinxthistablewithglobalstyle. So it is impossible +% to have first \sphinxthistablewithnocolorrowsstyle, then +% \sphinxthistablewithcolorrowsstyle. Nevertheless we have written +% the code so that in this case colorrows would indeed activate (except +% if it was already executed before as it self-annihilates). + +% standard style +\def\sphinxthistablewithstandardstyle{% + % Those two are produced by the latex writer + \def\sphinxhline {\hline}% + % \sphinxtabledecrementrownum is a no-op which is redefined by colorrows + % to correct the \rownum increment induced by \cline in colorrows regime + \def\sphinxcline {\sphinxtabledecrementrownum\cline}% + % LaTeX's \cline needs fixing + \let\sphinxvlinecrossing\sphinxtablevlinecrossing + \let\sphinxfixclines \sphinxtablefixclines + % Those three are inserted by the table templates + \def\spx@toprule {\hline}% + \def\sphinxmidrule {\hline}% + \def\sphinxbottomrule {\hline}% + % Do not tamper with this internal + \def\spx@arrayrulewidth{\arrayrulewidth}% +} + +% booktabs style +% The \@xcmidrule patch below will do beyond its main stuff +% \sphinxadjustcmidrulebelowsep +% Indeed the poor booktabs spacing with \cmidrule (if \sphinxbooktabscmidrule +% defined below is overwritten to use it) is quite awful. Do +% \let\sphinxadjustcmidrulebelowsep\empty +% if you prefer booktabs defaults. +\def\sphinxadjustcmidrulebelowsep{\belowrulesep=\aboverulesep} +\AtBeginDocument{% patch booktabs to avoid extra vertical space from + % consecutive \sphinxcline, if defined to use \cmidrule + \ifdefined\@xcmidrule + \let\spx@original@@xcmidrule\@xcmidrule + \def\@xcmidrule{\sphinxadjustcmidrulebelowsep + % if we don't do that, two \sphinxcline in the same row + % will cause the second short rule to be shifted down + \ifx\@tempa\sphinxcline\let\@tempa\cmidrule\fi + \spx@original@@xcmidrule}% + \fi +} +% wrappers to allow customization, e.g. via a container class +% the top, mid, bottom definitions are in fact overwritten (later, below) +% byt more complex ones needed to handle booktabs+colorrows context +\def\sphinxbooktabstoprule {\toprule} +\def\sphinxbooktabsmidrule {\midrule} +\def\sphinxbooktabsbottomrule{\bottomrule} +% +\let\sphinxbooktabscmidrule \@gobble % i.e. draw no short rules at all! +% You can redefine this to use \cmidrule with various options, such +% as \cmidrule(lr), but: +% Attention, if you want this to use \cmidrule (or \cline) you must, +% if the table uses row colours, +% also include the \sphinxtabledecrementrownum token like e.g. this +% \def\sphinxbooktabscmidrule{\sphinxtabledecrementrownum\cmidrule(lr)} +% and it must be first due to internals of the \cmidrule usage of \futurelet. + +\def\sphinxthistablewithbooktabsstyle{% + \let\sphinxhline\@empty % there is no wrapper macro here so if you want to change that + % you will have to redefine \sphinxthistablewithbooktabsstyle + \def\sphinxcline {\sphinxbooktabscmidrule}% defaults to give \@gobble + \let\sphinxvlinecrossing\@gobble % no | in a booktabs-style table ! + \let\sphinxfixclines \@gobble % should not be used with booktabs + \cmidrule + \def\spx@toprule {\sphinxbooktabstoprule}% + \def\sphinxmidrule {\sphinxbooktabsmidrule}% + \def\sphinxbottomrule{\sphinxbooktabsbottomrule}% + \def\spx@arrayrulewidth{\z@}% +} +\AtBeginDocument{\@ifpackageloaded{booktabs}% + {}% + {\def\sphinxthistablewithbooktabsstyle{% + \PackageWarning{sphinx}{% +Add \string\usepackage{booktabs} to the preamble to allow\MessageBreak +local use of booktabs table style}% + \sphinxbuildwarning{booktabs}% + \sphinxthistablewithstandardstyle + }}% +}% + +% borderless style +\def\sphinxthistablewithborderlessstyle{% + \let\sphinxhline \@empty + \let\sphinxcline \@gobble + \let\sphinxvlinecrossing\@gobble + \let\sphinxfixclines \@gobble + \let\spx@toprule \@empty + \let\sphinxmidrule \@empty + \let\sphinxbottomrule \@empty + \def\spx@arrayrulewidth{\z@}% +}% + +% colorrows style +% +\let\sphinxifthistablewithcolorrowsTF\@secondoftwo +\def\sphinxthistablewithcolorrowsstyle{% + \let\sphinxifthistablewithcolorrowsTF\@firstoftwo +% this is defined to auto-silence itself (in the surrounding scope-limiting +% environment) after one execution ("colorrows" can never follow "nocolorrows") + \let\sphinxthistablewithcolorrowsstyle\@empty +% + \let\spx@table@toprule@rowcolorON \spx@table@@toprule@rowcolorON + \let\spx@table@startbodycolorrows \spx@table@@startbodycolorrows + \let\sphinxtabledecrementrownum \spx@table@@decrementrownum +% Is it the best choice to "prepend" to existing code there? + \spx@prepend\spx@table@toprule@rowcolorON\to\sphinxtabletoprulehook + \spx@prepend\spx@table@startbodycolorrows\to\sphinxtableatstartofbodyhook +% +% this one is not set to \@empty by nocolorrows, because it looks harmless +% to execute it always, as it simply resets to standard colortbl state after +% the table; so we don't need an @@ version for this one + \spx@prepend\spx@table@resetcolortbl\to\sphinxtableafterendhook +} +\def\spx@prepend#1\to#2{% attention about using this only with #2 "storage macro" + \toks@{#1}% + \toks@\expandafter\expandafter\expandafter{\expandafter\the\expandafter\toks@#2}% + \edef#2{\the\toks@}% +}% + +\def\sphinxthistablewithnocolorrowsstyle{% + \let\sphinxifthistablewithcolorrowsTF\@secondoftwo +% rather than trying to remove the code added by 'colorrows' style, we +% simply make it no-op, without even checking if really it was activated. + \let\spx@table@toprule@rowcolorON\@empty + \let\spx@table@startbodycolorrows\@empty + \let\sphinxtabledecrementrownum \@empty +% we don't worry about \sphinxtableafterendhook as the \spx@table@resetcolortbl +% done at end can not do harm; and we could also have not bothered with the +% \sphinxtabledecrementrownum as its \rownum decrement, if active, is harmless +% in non-colorrows context +} + +% (not so easy) implementation of the booktabscolorgaps option. This option +% defaults to true and is not officially documented, as already colorrows is +% only opt-in, so it is there only as a "turn-off" switch, but if nobody +% complains in next few months, it will probably be removed altogether at +% 6.0.0. The reason it exists is because of longtable aspeces described +% below. +% +% As it is used via \sphinxsetup booktabscolorgaps status is not known here +% and may change locally. So it must be implemented via delayed or +% conditional code. +% +% We do not know the order of execution of \sphinxthistablewithbooktabsstyle +% versus \sphinxthistablewithcolorrows: if booktabs is global option it +% will be executed first; but if colorrows is global option and not booktabs +% then colorrows will be executed first via \sphinxthistablewithglobalstyle +% +% Modifying things from locations such as \sphinxtabletoprulehook which are +% executed within the table is not convenient as it must use \global +% but then we would have to undo this after the table. +% +% So what we do is to prepare booktabs specific macros to incorporate +% a conditional to check the colorrows status. We must each time check +% both if colorrows is activated and if colorgaps is. We do this via +% macros without @ so they can be used easily in customization code. +% When and if booktabscolorgaps option is removed, we can then replace +% \sphinxifbooktabswithcolorgapsTF by \sphinxifthistablewithcolorrowsTF +\def\sphinxifbooktabswithcolorgapsTF{% + \if1\ifspx@opt@booktabscolorgaps + \sphinxifthistablewithcolorrowsTF{1}{0}% + \else0\fi + \expandafter\@firstoftwo + \else\expandafter\@secondoftwo + \fi +} +% as this is done without "@" it can be relatively easily be overwritten +% by user in customization code +\def\sphinxbooktabstoprule{% + \sphinxifbooktabswithcolorgapsTF + {\sphinxbooktabsspecialtoprule}% + {\toprule}% +}% +\def\sphinxbooktabscolorgapsoverhang{0.1pt}% avoid pixel/rounding effects +% auxiliary fork +\long\def\spx@table@crazyfork + #1\endfirsthead\endhead\sphinxtableatstartofbodyhook#2#3\@nil{#2} +% we fetch the next token to check if there is a header or not +% this is a bit fragile as it relies on the table templates +% and it assumes this token #1 is never braced... +% let's make this \long in case #1 is \par (should not be) +\long\def\sphinxbooktabsspecialtoprule\sphinxtabletoprulehook#1{% + \specialrule{\heavyrulewidth}{\abovetopsep}{\z@}% + % this macro contains colour init code (and defines sphinxTableRowColor) + \sphinxtabletoprulehook + % unfortunately colortbl provides no way to save/restore the + % \arrayrulecolor status, we have to code it ourselves + \noalign{\global\let\spx@@saved@CT@arc@\CT@arc@ +% \@declaredcolor is not \long. Although #1 can probably never be \par with +% our templates, let's be cautious and not use the creazyfork inside the \color + \spx@table@crazyfork +% this crazy code checks if #1 is one of \endfirsthead, \endhead or +% \sphinxtableatstartofbodyhook, as criterion for table with no header + #1\endhead\sphinxtableatstartofbodyhook\@secondoftwo + \endfirsthead#1\sphinxtableatstartofbodyhook\@secondoftwo + \endfirsthead\endhead#1\@secondoftwo + \endfirsthead\endhead\sphinxtableatstartofbodyhook\@firstoftwo + \@nil + {\gdef\CT@arc@{\color{sphinxTableRowColor}}}% + {\gdef\CT@arc@{\color{sphinxTableRowColorOdd}}}% + }% end of \noalign + % \specialrule uses \noalign itself + \specialrule{\dimexpr\belowrulesep+\sphinxbooktabscolorgapsoverhang\relax}% + {\z@}{-\sphinxbooktabscolorgapsoverhang}% + \noalign{\global\let\CT@arc@\spx@@saved@CT@arc@}% + #1% let's not forget to re-insert this #1 in token stream + % fortunately longtable's \endfirsthead/\endhead are not delimiters but + % are really tokens awaiting expansion... +}% +\def\sphinxbooktabsmidrule{% + \sphinxifbooktabswithcolorgapsTF + {\sphinxbooktabsspecialmidrule}% + {\midrule}% +}% +\def\sphinxbooktabsspecialmidrule{% + \noalign{\global\let\spx@@saved@CT@arc@\CT@arc@ + \gdef\CT@arc@{\color{sphinxTableRowColor}}% this is RowColorHeader + }% + \specialrule{\dimexpr\aboverulesep+\sphinxbooktabscolorgapsoverhang\relax\relax}% + {-\sphinxbooktabscolorgapsoverhang}{\z@}% + \noalign{\global\let\CT@arc@\spx@@saved@CT@arc@}% + \specialrule{\lightrulewidth}{\z@}{\z@}% + \noalign{\gdef\CT@arc@{\color{sphinxTableRowColorOdd}}}% + \specialrule{\dimexpr\belowrulesep+\sphinxbooktabscolorgapsoverhang\relax\relax}% + {\z@}{-\sphinxbooktabscolorgapsoverhang}% + \noalign{\global\let\CT@arc@\spx@@saved@CT@arc@}% +}% +\def\sphinxbooktabsbottomrule{% + \sphinxifbooktabswithcolorgapsTF + {\sphinxbooktabsspecialbottomrule}% + {\bottomrule}% +}% +% The colour here is already updated because of the \\ before so we must +% execute again the colour selection code, but this is not too complicated. +% What is annoying though is that \sphinxbottomrule in the longtable context +% appears both in the "foot" part and after the last body row. For the first +% occurrence the \rownum could be arbitrary if it had not been reset by each +% table using it via the \sphinxtableafterendhook (see above). This avoids +% having to modify the longtable template. But as \rownum is thus 0 in the +% "foot", the \sphinxSwitchCaseRowColor has to know how to handle negative +% inputs (in fact the -1 value), the Sphinx definition has no issue with that +% but any redefinition must be aware of this constraint. +\def\sphinxbooktabsspecialbottomrule{% + \noalign{\global\let\spx@@saved@CT@arc@\CT@arc@ + \sphinxSwitchCaseRowColor{\numexpr\rownum-\@ne\relax}% + \gdef\CT@arc@{\color{sphinxTableRowColor}}% + }% + \specialrule{\dimexpr\aboverulesep+\sphinxbooktabscolorgapsoverhang\relax}% + {-\sphinxbooktabscolorgapsoverhang}{\z@}% + \noalign{\global\let\CT@arc@\spx@@saved@CT@arc@}% + \specialrule{\heavyrulewidth}{\z@}{\belowbottomsep}% +}% +% +% MEMO: with longtable \sphinxtoprule, \sphinxmidrule and \sphinxbottomrule +% are evaluated at time of constructing the headers and footers as boxes +% (already typeset material and expanded macros; \sphinxbottomrule is also +% evaluated at very end of table body, i.e. "normally"). So the used colour +% to fill the booktabs gaps is decided during the headers and footers +% construction by longtable. Actually they are expanded twice: in firsthead +% then in head, respectively in foot and lastfoot. But in current design the +% header row colours are fixed, not alternating, so there is at least no +% coherence issue there. + +% The \spx@arrayrulewidth is used for some complex matters of merged +% cells size computations. +% tabularcolumns argument will override any global or local style and +% trigger the appropriate adjustment of \spx@arrayrulewidth. +% Notice that this will be bad if the table uses booktabs style +% but anyhow table with booktabs should not use any | separator. +\def\sphinxthistablewithvlinesstyle{% + \def\spx@arrayrulewidth{\arrayrulewidth}% + \let\sphinxvlinecrossing\sphinxtablevlinecrossing + \let\sphinxfixclines \sphinxtablefixclines +}% +\def\sphinxthistablewithnovlinesstyle{% + \def\spx@arrayrulewidth{\z@}% + \let\sphinxvlinecrossing\@gobble + % let's not bother to modify \sphinxfixclines, it works fine and is + % useful in standard style + no vline (only hlines and clines); + % besides, only one of vline or novline style macro is executed +}% + +% default is the standard style +\def\sphinxthistablewithglobalstyle{\sphinxthistablewithstandardstyle} + +\ifspx@opt@booktabs + \RequirePackage{booktabs} + \def\sphinxthistablewithglobalstyle{\sphinxthistablewithbooktabsstyle} +\fi +\ifspx@opt@borderless + \def\sphinxthistablewithglobalstyle{\sphinxthistablewithborderlessstyle} +\fi +% colorrows appends to the current globalstyle (standard, booktabs, or borderless) +\ifspx@opt@colorrows % let the globalstyle trigger the colorrows style on top of it + \expandafter\def\expandafter\sphinxthistablewithglobalstyle\expandafter + {\sphinxthistablewithglobalstyle + \sphinxthistablewithcolorrowsstyle + } +\fi + + +\endinput diff --git a/docs/build/latex/sphinxmanual.cls b/docs/build/latex/sphinxmanual.cls new file mode 100644 index 0000000..2e4b30d --- /dev/null +++ b/docs/build/latex/sphinxmanual.cls @@ -0,0 +1,128 @@ +% +% sphinxmanual.cls for Sphinx (https://www.sphinx-doc.org/) +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{sphinxmanual}[2019/12/01 v2.3.0 Document class (Sphinx manual)] + +% chapters starting at odd pages (overridden by 'openany' document option) +\PassOptionsToClass{openright}{\sphinxdocclass} + +% 'oneside' option overriding the 'twoside' default +\newif\if@oneside +\DeclareOption{oneside}{\@onesidetrue} +% Pass remaining document options to the parent class. +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}} +\ProcessOptions\relax + +% Defaults two-side document +\if@oneside +% nothing to do (oneside is the default) +\else +\PassOptionsToClass{twoside}{\sphinxdocclass} +\fi + +\LoadClass{\sphinxdocclass} + +% Set some sane defaults for section numbering depth and TOC depth. You can +% reset these counters in your preamble. +% +\setcounter{secnumdepth}{2} +\setcounter{tocdepth}{1} + +% Adapt \and command to the flushright context of \sphinxmaketitle, to +% avoid ragged line endings if author names do not fit all on one single line +\DeclareRobustCommand{\and}{% + \end{tabular}\kern-\tabcolsep + \allowbreak + \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}% +}% +% If it is desired that each author name be on its own line, use in preamble: +%\DeclareRobustCommand{\and}{% +% \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}% +%}% +% Change the title page to look a bit better, and fit in with the fncychap +% ``Bjarne'' style a bit better. +% +\newcommand{\sphinxmaketitle}{% + \let\sphinxrestorepageanchorsetting\relax + \ifHy@pageanchor\def\sphinxrestorepageanchorsetting{\Hy@pageanchortrue}\fi + \hypersetup{pageanchor=false}% avoid duplicate destination warnings + \begin{titlepage}% + \let\footnotesize\small + \let\footnoterule\relax + \noindent\rule{\textwidth}{1pt}\par + \begingroup % for PDF information dictionary + \def\endgraf{ }\def\and{\& }% + \pdfstringdefDisableCommands{\def\\{, }}% overwrite hyperref setup + \hypersetup{pdfauthor={\@author}, pdftitle={\@title}}% + \endgroup + \begin{flushright}% + \sphinxlogo + \py@HeaderFamily + {\Huge \@title \par} + {\itshape\LARGE \py@release\releaseinfo \par} + \vfill + {\LARGE + \begin{tabular}[t]{c} + \@author + \end{tabular}\kern-\tabcolsep + \par} + \vfill\vfill + {\large + \@date \par + \vfill + \py@authoraddress \par + }% + \end{flushright}%\par + \@thanks + \end{titlepage}% + \setcounter{footnote}{0}% + \let\thanks\relax\let\maketitle\relax + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} + \clearpage + \ifdefined\sphinxbackoftitlepage\sphinxbackoftitlepage\fi + \if@openright\cleardoublepage\else\clearpage\fi + \sphinxrestorepageanchorsetting +} + +\newcommand{\sphinxtableofcontents}{% + \pagenumbering{roman}% + \begingroup + \parskip \z@skip + \sphinxtableofcontentshook + \tableofcontents + \endgroup + % before resetting page counter, let's do the right thing. + \if@openright\cleardoublepage\else\clearpage\fi + \pagenumbering{arabic}% +} + +% This is needed to get the width of the section # area wide enough in the +% library reference. Doing it here keeps it the same for all the manuals. +% +\newcommand{\sphinxtableofcontentshook}{% + \renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.6em}}% + \renewcommand*\l@subsection{\@dottedtocline{2}{4.1em}{3.5em}}% +} + +% Fix the bibliography environment to add an entry to the Table of +% Contents. +% For a report document class this environment is a chapter. +% +\newenvironment{sphinxthebibliography}[1]{% + \if@openright\cleardoublepage\else\clearpage\fi + % \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}% + \addcontentsline{toc}{chapter}{\bibname}}{\end{thebibliography}} + +% Same for the indices. +% The memoir class already does this, so we don't duplicate it in that case. +% +\@ifclassloaded{memoir} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}} + {\newenvironment{sphinxtheindex}{% + \if@openright\cleardoublepage\else\clearpage\fi + \phantomsection % needed as no chapter, section, ... created + \begin{theindex}% + \addcontentsline{toc}{chapter}{\indexname}}{\end{theindex}}} diff --git a/docs/build/latex/sphinxmessages.sty b/docs/build/latex/sphinxmessages.sty new file mode 100644 index 0000000..68ebffa --- /dev/null +++ b/docs/build/latex/sphinxmessages.sty @@ -0,0 +1,21 @@ +% +% sphinxmessages.sty +% +% message resources for Sphinx +% +\ProvidesPackage{sphinxmessages}[2019/01/04 v2.0 Localized LaTeX macros (Sphinx team)] + +\renewcommand{\literalblockcontinuedname}{continued from previous page} +\renewcommand{\literalblockcontinuesname}{continues on next page} +\renewcommand{\sphinxnonalphabeticalgroupname}{Non\sphinxhyphen{}alphabetical} +\renewcommand{\sphinxsymbolsname}{Symbols} +\renewcommand{\sphinxnumbersname}{Numbers} +\def\pageautorefname{page} + +\addto\captionsenglish{\renewcommand{\figurename}{Fig.\@{} }} +\def\fnum@figure{\figurename\thefigure{}} + +\addto\captionsenglish{\renewcommand{\tablename}{Table }} +\def\fnum@table{\tablename\thetable{}} + +\addto\captionsenglish{\renewcommand{\literalblockname}{Listing}} \ No newline at end of file diff --git a/docs/build/latex/sphinxoptionsgeometry.sty b/docs/build/latex/sphinxoptionsgeometry.sty new file mode 100644 index 0000000..d0c59f0 --- /dev/null +++ b/docs/build/latex/sphinxoptionsgeometry.sty @@ -0,0 +1,54 @@ +%% OPTIONS FOR GEOMETRY +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxoptionsgeometry}[2021/01/27 geometry] + +% geometry +\ifx\kanjiskip\@undefined + \PassOptionsToPackage{% + hmargin={\unexpanded{\spx@opt@hmargin}},% + vmargin={\unexpanded{\spx@opt@vmargin}},% + marginpar=\unexpanded{\spx@opt@marginpar}} + {geometry} +\else + % set text width for Japanese documents to be integer multiple of 1zw + % and text height to be integer multiple of \baselineskip + % the execution is delayed to \sphinxsetup then geometry.sty + \normalsize\normalfont + \newcommand*\sphinxtextwidthja[1]{% + \if@twocolumn\tw@\fi + \dimexpr + \numexpr\dimexpr\paperwidth-\tw@\dimexpr#1\relax\relax/ + \dimexpr\if@twocolumn\tw@\else\@ne\fi zw\relax + zw\relax}% + \newcommand*\sphinxmarginparwidthja[1]{% + \dimexpr\numexpr\dimexpr#1\relax/\dimexpr1zw\relax zw\relax}% + \newcommand*\sphinxtextlinesja[1]{% + \numexpr\@ne+\dimexpr\paperheight-\topskip-\tw@\dimexpr#1\relax\relax/ + \baselineskip\relax}% + \ifx\@jsc@uplatextrue\@undefined\else + % the way we found in order for the papersize special written by + % geometry in the dvi file to be correct in case of jsbook class + \ifnum\mag=\@m\else % do nothing special if nomag class option or 10pt + \PassOptionsToPackage{truedimen}{geometry}% + \fi + \fi + \PassOptionsToPackage{% + hmarginratio={1:1},% + textwidth=\unexpanded{\sphinxtextwidthja{\spx@opt@hmargin}},% + vmarginratio={1:1},% + lines=\unexpanded{\sphinxtextlinesja{\spx@opt@vmargin}},% + marginpar=\unexpanded{\sphinxmarginparwidthja{\spx@opt@marginpar}},% + footskip=2\baselineskip,% + }{geometry}% + \AtBeginDocument + {% update a dimension used by the jsclasses + \ifx\@jsc@uplatextrue\@undefined\else\fullwidth\textwidth\fi + % for some reason, jreport normalizes all dimensions with \@settopoint + \@ifclassloaded{jreport} + {\@settopoint\textwidth\@settopoint\textheight\@settopoint\marginparwidth} + {}% <-- "false" clause of \@ifclassloaded + }% +\fi + +\endinput diff --git a/docs/build/latex/sphinxoptionshyperref.sty b/docs/build/latex/sphinxoptionshyperref.sty new file mode 100644 index 0000000..caf28e8 --- /dev/null +++ b/docs/build/latex/sphinxoptionshyperref.sty @@ -0,0 +1,35 @@ +%% Bookmarks and hyperlinks +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxoptionshyperref}[2021/01/27 hyperref] + +% to make pdf with correct encoded bookmarks in Japanese +% this should precede the hyperref package +\ifx\kanjiskip\@undefined +% for non-Japanese: make sure bookmarks are ok also with lualatex + \PassOptionsToPackage{pdfencoding=unicode}{hyperref} +\else + \RequirePackage{atbegshi} + \ifx\ucs\@undefined + \ifnum 42146=\euc"A4A2 + \AtBeginShipoutFirst{\special{pdf:tounicode EUC-UCS2}} + \else + \AtBeginShipoutFirst{\special{pdf:tounicode 90ms-RKSJ-UCS2}} + \fi + \else + \AtBeginShipoutFirst{\special{pdf:tounicode UTF8-UCS2}} + \fi +\fi + +\ifx\@jsc@uplatextrue\@undefined\else + \PassOptionsToPackage{setpagesize=false}{hyperref} +\fi + +% These options can be overridden inside 'hyperref' key +% or by later use of \hypersetup. +\PassOptionsToPackage{colorlinks,breaklinks,% + linkcolor=InnerLinkColor,filecolor=OuterLinkColor,% + menucolor=OuterLinkColor,urlcolor=OuterLinkColor,% + citecolor=InnerLinkColor}{hyperref} + +\endinput diff --git a/docs/build/latex/sphinxpackageboxes.sty b/docs/build/latex/sphinxpackageboxes.sty new file mode 100644 index 0000000..2345051 --- /dev/null +++ b/docs/build/latex/sphinxpackageboxes.sty @@ -0,0 +1,827 @@ +%% COLOURED BOXES +% +% change this info string if making any custom modification +\ProvidesPackage{sphinxpackageboxes}[2024/07/01 v7.4.0 advanced colored boxes] +% 7.4.0 removes usage of some booleans "...withbackgroundcolor" and +% "...withbordercolor" as well as \spx@boxes@border dimen which was +% actually really needed nowhere. This was done in sync with changes in +% sphinx.sty, sphinxlatexadmonitions.sty and sphinxlatexliterals.sty. +% +% Optionally executes \RequirePackage for: +% +% - pict2e. Ideally we would like to use the v0.4a 2020/08/16 release of this +% package as it allows dimensional arguments to its \moveto, \lineto, etc... +% Or we could use extra package "picture". We opt for custom wrappers +% \spx@moveto, \spx@lineto, ..., working with old versions. +% +% - ellipse. This package extends pict2e with elliptical arcs. Its author +% Daan Leijen also has contributed package longfbox which is part of +% TeXLive. Had I known about it, I would perhaps have based Sphinx CSS on +% top of longfbox at least partly. But this would not have spared me all +% the work in sphinx.sty, which was a long walk until 6.2.0 version. +% Besides I don't need the breakable boxes from longfbox, as Sphinx has +% its own rather advanced layer on top of framed. I would need to check if +% some thorny color issues solved by Sphinx (and not by tcolorbox) at page +% breaks are solved by longfbox as well. (I have not tested) + +% At 6.2.0 refactoring, we do not wait for at begin document to try to load +% pict2e. Actually since 6.0.0 the default is for code-blocks to use +% rounded boxes, and the only reason since then to wait "at begin document" +% was to check if user had reverted that default and in fact pict2e was not +% needed. But with \sphinxbox, we can not know for sure even in that case +% that pict2e is not needed. And even back then it would have been possible +% to user to try to employ \sphinxsetup via raw directive in document body +% and require some rounded corners (which was thus impossible to satisfy). +% Time to be much simpler and attempt unconditionally to load pict2e +% immediately. This will also have advantage that we can use +% \@ifpackageloaded{pict2e} and not have to query and save its setting later +% at begin document. +\IfFileExists{pict2e.sty} + {\RequirePackage{pict2e}} + {\PackageWarningNoLine{sphinx}{% + The package pict2e is required for rounded boxes.\MessageBreak + It does not seem to be available on your system.\MessageBreak + Options for setting radii will be ignored% + }% + % Formerly a \sphinxbuildwarning was issued but if we did that now it + % would mean that the produced PDF will always have a red banner near its + % end about pict2e not being available if indeed it is not available, even + % if user has reverted the default and dropped rounded corners. Formerly + % the serious warning was done after having checked at begin document that + % indeed a rounded corner option had been used. As we drop the check now, + % let's be more discrete and simply duplicate the earlier warning to make + % it visible near end of compilation log and console output. + \AtEndDocument{\PackageWarningNoLine{sphinx}{% + The package pict2e is required for rounded boxes.\MessageBreak + As it does not seem to be available on your system,\MessageBreak + options setting radii have all been ignored}}% + }% + +\IfFileExists{ellipse.sty} + {\RequirePackage{ellipse}} + {\PackageWarningNoLine{sphinx}{% + The package ellipse is required for elliptical corners.\MessageBreak + It does not seem to be available on your system.\MessageBreak + All non-straight corners will use circle arcs.% + }% + \AtEndDocument{\PackageWarningNoLine{sphinx}{% + The package ellipse is required for elliptical corners.\MessageBreak + As it does not seem to be available on your system,\MessageBreak + all non-straight corners have used circle arcs.}}% + }% + +% The pict2e release v0.4b of 2020/09/30 does not allocate scratch dimen +% register \@tempdimd which ellipse package uses. Thus ellipse package is +% broken since (written on March 20, 2023). Simply allocate the register +% ourself to fix that, pending some upstream fix. +\@ifpackageloaded{ellipse}{\ifdefined\@tempdimd\else\newdimen\@tempdimd\fi}{} + +% Provides box registers \spx@tempboxa, \spx@tempboxb usable in other places +\newbox\spx@tempboxa +\newbox\spx@tempboxb + +%%%%%%%%%%%%%%%% +% Internal registers, conditionals, colors to be configured by each caller +% via a preliminary "setup" call +\newif\ifspx@boxes@withshadow +\newif\ifspx@boxes@insetshadow +%%% \newif\ifspx@boxes@withbackgroundcolor % removed at 7.4.0 +\newif\ifspx@boxes@withshadowcolor +%%% \newif\ifspx@boxes@withbordercolor % removed at 7.4.0 +\newif\ifspx@boxes@shadowinbbox +% +\newdimen\spx@boxes@border@top +\newdimen\spx@boxes@border@right +\newdimen\spx@boxes@border@bottom +\newdimen\spx@boxes@border@left +% +\newdimen\spx@boxes@padding@top +\newdimen\spx@boxes@padding@right +\newdimen\spx@boxes@padding@bottom +\newdimen\spx@boxes@padding@left +% +\newdimen\spx@boxes@shadow@xoffset +\newdimen\spx@boxes@shadow@yoffset +% +\newdimen\spx@boxes@radius@topleft@x +\newdimen\spx@boxes@radius@topright@x +\newdimen\spx@boxes@radius@bottomright@x +\newdimen\spx@boxes@radius@bottomleft@x +\newdimen\spx@boxes@radius@topleft@y +\newdimen\spx@boxes@radius@topright@y +\newdimen\spx@boxes@radius@bottomright@y +\newdimen\spx@boxes@radius@bottomleft@y +% +% These colors will be set to colors defined appropriately by caller of +% \spx@boxes@fcolorbox@setup macro +% spx@boxes@bordercolor +% spx@boxes@backgroundcolor +% spx@boxes@shadowcolor +% spx@boxes@textcolor + +%%%%%%%%%%%%%%%% +% "setup" macro +% +% It must be called prior to \spx@boxes@fcolorbox for parameters of the latter +% to be initialized. +% +% It also prepares \spx@boxes@fcolorbox to expand to one of +% \spx@boxes@fcolorbox@rectangle or \spx@boxes@fcolorbox@rounded depending on +% the configuration and availability of the pict2e package. +% +% The #1 is one of: pre, topic, warning, danger, etc.... +% +% We delay until here the parsing of radii options to extract x and y +% components. +\def\spx@boxes@setradii#1 #2 #3\@nnil#4#5{% + #4\dimexpr#1\relax + #5\dimexpr#2\relax + \ifdim#5=-\maxdimen#5#4\fi + % if one of them is zero or negative set both to zero + \ifdim#4>\z@\else#4\z@#5\z@\fi + \ifdim#5>\z@\else#4\z@#5\z@\fi +}% +% if ellipse.sty is not available ignore the second component of all radii +% specifications, use circle arcs with radius the x component +\@ifpackageloaded{ellipse} + {} + {\def\spx@boxes@setradii#1 #2 #3\@nnil#4#5{#4\dimexpr#1\relax #5#4}} + +% Using \dimexpr for maximal user input flexibility. +\def\spx@boxes@fcolorbox@setup#1{% + \spx@boxes@border@top \dimexpr\@nameuse{spx@#1@border@top}\relax + \spx@boxes@border@right \dimexpr\@nameuse{spx@#1@border@right}\relax + \spx@boxes@border@bottom\dimexpr\@nameuse{spx@#1@border@bottom}\relax + \spx@boxes@border@left \dimexpr\@nameuse{spx@#1@border@left}\relax + % + \spx@boxes@padding@top \dimexpr\@nameuse{spx@#1@padding@top}\relax + \spx@boxes@padding@right \dimexpr\@nameuse{spx@#1@padding@right}\relax + \spx@boxes@padding@bottom\dimexpr\@nameuse{spx@#1@padding@bottom}\relax + \spx@boxes@padding@left \dimexpr\@nameuse{spx@#1@padding@left}\relax + % + \edef\spx@temp{\csname spx@#1@radius@topleft\endcsname\space}% + \expandafter + \spx@boxes@setradii + \spx@temp + {-\maxdimen} + \@nnil + \spx@boxes@radius@topleft@x\spx@boxes@radius@topleft@y + \edef\spx@temp{\csname spx@#1@radius@topright\endcsname\space}% + \expandafter + \spx@boxes@setradii + \spx@temp + {-\maxdimen} + \@nnil + \spx@boxes@radius@topright@x\spx@boxes@radius@topright@y + \edef\spx@temp{\csname spx@#1@radius@bottomright\endcsname\space}% + \expandafter + \spx@boxes@setradii + \spx@temp + {-\maxdimen} + \@nnil + \spx@boxes@radius@bottomright@x\spx@boxes@radius@bottomright@y + \edef\spx@temp{\csname spx@#1@radius@bottomleft\endcsname\space}% + \expandafter + \spx@boxes@setradii + \spx@temp + {-\maxdimen} + \@nnil + \spx@boxes@radius@bottomleft@x\spx@boxes@radius@bottomleft@y + % + \@nameuse{ifspx@#1@withshadow}% + \spx@boxes@withshadowtrue + \spx@boxes@shadow@xoffset \dimexpr\@nameuse{spx@#1@shadow@xoffset}\relax + \spx@boxes@shadow@yoffset \dimexpr\@nameuse{spx@#1@shadow@yoffset}\relax + \else + \spx@boxes@withshadowfalse + \fi + % not nesting in previous to avoid TeX conditional subtleties + \@nameuse{ifspx@#1@insetshadow}% + \spx@boxes@insetshadowtrue + \else + \spx@boxes@insetshadowfalse + \fi + % + \sphinxcolorlet{spx@boxes@bordercolor}{sphinx#1BorderColor}% + % + \sphinxcolorlet{spx@boxes@backgroundcolor}{sphinx#1BgColor}% + % + \@nameuse{ifspx@#1@withshadowcolor}% + \spx@boxes@withshadowcolortrue + \sphinxcolorlet{spx@boxes@shadowcolor}{sphinx#1ShadowColor}% + \else + \spx@boxes@withshadowcolorfalse + \fi + % Display elements pre, topic, warning et al. by default do not include + % shadow in box (legacy; and only topic actually uses a shadow per default) + % This may be refactored still more in future, but this 6.2.0 extra helped + % reduce workload from code-blocks (pre), contents (topic) and admonitions. + % As this conditional is a priori false and should only be changed locally + % (by \sphinxbox), this line is actually superfluous. + \spx@boxes@shadowinbboxfalse + \spx@boxes@fcolorbox@setup@fcolorbox +} +\@ifpackageloaded{pict2e} +{% pict2e is available and loaded + \def\spx@boxes@fcolorbox@setup@fcolorbox{% + \if1% use rounded boxes only if needed (rx>0 iff ry>0) + \ifdim\spx@boxes@radius@topleft@x >\z@0\fi + \ifdim\spx@boxes@radius@topright@x >\z@0\fi + \ifdim\spx@boxes@radius@bottomright@x>\z@0\fi + \ifdim\spx@boxes@radius@bottomleft@x >\z@0\fi + 1\def\spx@boxes@fcolorbox{\spx@boxes@fcolorbox@rectangle}% + \else + \def\spx@boxes@fcolorbox{\spx@boxes@fcolorbox@rounded}% + \fi + }% end of definition of setup@fcolorbox in case of presence of pict2e +}% +{% pict2e could not be loaded, we must always use fcolorbox@rectangle + \def\spx@boxes@fcolorbox@setup@fcolorbox{% + \def\spx@boxes@fcolorbox{\spx@boxes@fcolorbox@rectangle}% + }% end of definition of setup@fcolorbox in case of absence of pict2e +}% end of "no pict2e" branch + +%%%%%%%%%%%%%%%% +% Support of box-decoration-break=slice +% +% 6.2.0 has renamed and moved this here from sphinxlatexliterals.sty, +% to facilitate supporting box-decoration-break=slice for all directives, +% not only code-block. +% +% It also modified when these post actions are executed, in order +% for openboth to be able to trigger usage of fcolorbox@rectangle. +% So now openbottom and opentop also take advantage of this possible +% optimization. +\def\spx@boxes@fcolorbox@setup@openbottom{% + \spx@boxes@border@bottom \z@ + \spx@boxes@radius@bottomright@x\z@ \spx@boxes@radius@bottomright@y\z@ + \spx@boxes@radius@bottomleft@x \z@ \spx@boxes@radius@bottomleft@y \z@ + \spx@boxes@fcolorbox@setup@fcolorbox +}% +\def\spx@boxes@fcolorbox@setup@opentop{% + \spx@boxes@border@top \z@ + \spx@boxes@radius@topright@x\z@ \spx@boxes@radius@topright@y\z@ + \spx@boxes@radius@topleft@x \z@ \spx@boxes@radius@topleft@y \z@ + \spx@boxes@fcolorbox@setup@fcolorbox +}% +\def\spx@boxes@fcolorbox@setup@openboth{% + \spx@boxes@border@top \z@ + \spx@boxes@border@bottom \z@ + \spx@boxes@radius@bottomright@x\z@ \spx@boxes@radius@bottomright@y\z@ + \spx@boxes@radius@bottomleft@x \z@ \spx@boxes@radius@bottomleft@y \z@ + \spx@boxes@radius@topright@x\z@ \spx@boxes@radius@topright@y\z@ + \spx@boxes@radius@topleft@x \z@ \spx@boxes@radius@topleft@y \z@ + \def\spx@boxes@fcolorbox{\spx@boxes@fcolorbox@rectangle}% +}% + +%%%%%%%%%%%%%%%% +% \sphinxbox (added at 6.2.0) +% +% For an inline box, possibly rounded. +\newcommand\sphinxbox[1][]{% #1 stands for the options, they are... optional! + % \leavevmode makes sure TeX switches to paragraph mode, which is necessary + % if this is first in a paragraph or a list element. The \sphinxAtStartPar + % mechanism also ensures this automatically, if not redefined, but not with + % lualatex as then it is by default doing nothing. + \leavevmode + \begingroup + \ifcsname spx@boxes@sphinxbox@isnested\endcsname + % nested boxes reset all box options to be as the \sphinxboxsetup + % defaults, before applying their specific options + \spx@boxes@sphinxbox@reset + \else + % top layer box, toggle the nested flag + \csname spx@boxes@sphinxbox@isnested\endcsname + \fi + % we do not use \sphinxboxsetup as it is a user command extending the + % "reset" storage + \setkeys{sphinxbox}{#1}% + \spx@boxes@fcolorbox@setup{box}% + \spx@boxes@shadowinbboxtrue% inline sphinx boxes include shadow in bbox + \ifspx@box@withtextcolor\color{sphinxboxTextColor}\fi + % + % MEMO: the fcolorbox@{rectangle,rounded} draw the contents (which here + % will be encapsulated as \box\z@) last, i.e. after shadow, background, + % and border and their color commands. The \reset@color from naked + % top-level \color commands in argument (which can not arise from Sphinx + % mark-up anyhow) would end up being placed via color.sty \aftergroup core + % mechanism in token stream after \spx@boxes@sphinxbox@a (which is the + % first \aftergroup) hence after the box contents with its unbalanced + % color pushes is shipped to PDF. So the missing color pop specials are + % inserted then in correct order at correct place (after the \endgroup at + % end of \spx@boxes@sphinxbox@a but this is not relevant) and do not end + % up causing havoc in push/pop pairs (and all this happens on same page). + % + % There is thus no reason here to go to the trouble to add an extra + % \color@begingroup/\color@endgroup or like pair to encapsulate the caught + % contents in order for the \box\z@ to contain as many color pop's as it + % has color pushes. But as this is subtle, this comment was added for + % future maintenance. Actually even if the contents were not drawn last, + % their (purely theoretical, as Sphinx mark-up can not create it) missing + % color pop's would not have caused trouble I guess as long as the color + % insertions for shadow, background, border are correctly balanced. + \setbox0\hbox\bgroup\aftergroup\spx@boxes@sphinxbox@a + \afterassignment\spx@box@TeXextras + \let\next=% +} +\def\spx@boxes@sphinxbox@a{\spx@boxes@fcolorbox{% + \ifspx@opt@box@addstrut\strut\fi\box\z@}\endgroup} + +\newcommand\newsphinxbox[2][]{% + \newcommand#2[1][]{\sphinxbox[#1,##1]}% +} +% Let's catch \renewsphinxbox[...]{\sphinxbox} which would cause \sphinxbox +% to fall into infinite looping on use. +\newcommand\renewsphinxbox[2][]{% + \in@{#2}{\sphinxbox}% + \ifin@ + \PackageWarning{sphinx}{Attempt to \string\renewsphinxbox\space + the \string\sphinxbox\space command\MessageBreak + itself. This is not allowed and will be ignored.\MessageBreak + Reported}% + \else + \renewcommand#2[1][]{\sphinxbox[#1,##1]}% + \fi +} + +%%%%%%%%%%%%%%%% +% MACROS +% +% \spx@boxes@fcolorbox expands either to \spx@boxes@fcolorbox@rectangle +% or \spx@boxes@fcolorbox@rounded depending on preliminary set-up. +% +% This is decided by the "setup" which must have been executed by the caller. +% Let's give it some (thus unneeded) default fall-back for clarity. +\def\spx@boxes@fcolorbox{\spx@boxes@fcolorbox@rectangle} +% +% A macro \spx@boxes@fcolorbox@setuphook used to be executed at start of the +% \hbox constructs (rectangle or rounded). This was used until 6.2.0 for the +% support of pre_box-decoration-break option, hence was really an internal +% non-public macro. As it is not needed anymore, with some hesitation it got +% entirely removed at 6.2.0 on the occasion of a refactoring of interactions of +% this file with sphinxlatexliterals.sty. Besides its name should have been +% rather something such as \spx@boxes@fcolorbox@atstartofhbox. +% +% After "setup", \spx@boxes@fcolorbox expands to one of: +% +% - \spx@boxes@fcolorbox@rectangle (4 padding parameters, 4 border widths, 2 shadow widths, +% and three colours: background, border and shadow; same as in CSS styling) +% +% It branches to one of: +% - \spx@boxes@fcolorbox@externalshadow +% - \spx@boxes@fcolorbox@insetshadow (same concept of "inset" as in CSS styling) +% +% - \spx@boxes@fcolorbox@rounded: rounded corners using the picture environment +% and pict2e package for its low-weight interface to PDF graphics operations + +% MEMO: we have also successfully tested usage of tcolorbox.sty (its \tcbox) but +% decided to use pict2e.sty for the following reasons: +% 1- PDF build was observed to be an order of magnitude faster, +% 2- the boxes we can do with pict2e appear to be fancy enough, +% almost matching what one can see in HTML renderings, +% 2- orders of magnitude smaller dependency (tcolorbox uses the pgf TeX +% framework), although on Ubuntu it seems texlive-pictures is +% needed which also contains the whole of pgf/TikZ... so this point +% is a bit moot... + +% For code-blocks, attachments of caption and continuation hints are done +% exactly as prior to extension of Sphinx via this package, whether the box +% has straight or rounded corners. The vertical space occupied is the same, +% if nothing else is changed (perhaps in future the title itself could be also +% rendered in a rounded box?) + +%%%%%%%% +%//// \spx@boxes@fcolorbox@rectangle +% +% This box will have the same baseline as its argument (which is typeset in +% horizontal mode). It takes into account four border widths parameters, four +% padding parameters, two shadow widths (each possibly negative), and three +% colors: background, border and shadow. Its boundary box takes into account +% border and padding. Width of shadow is taken into account if the boolean +% \ifspx@boxes@shadowinbbox is \iftrue. The "setup" sets it to \iffalse. +% Prior to 6.2.0, shadow size was included in bbox but the callers manually +% removed it by extra steps. The \sphinxbox command sets it to \iftrue after +% the "setup". +% +% It is up to the caller to take extra steps if the border and padding must go +% into margin as well (see sphinxlatexliterals.sty for how this is done in +% \spx@verb@FrameCommand). +% +% In usage as a "FrameCommand" with framed.sty, the argument will already be a +% collection of TeX boxes (and interline glues). +% +% This was designed so that the parameters configured by "setup" are +% interpreted as they would be as CSS properties in an HTML context. +\long\def\spx@boxes@fcolorbox@rectangle#1{% + \hbox\bgroup + \setbox\spx@tempboxa + \hbox{\kern\dimexpr\spx@boxes@border@left+\spx@boxes@padding@left\relax + {#1}% + \kern\dimexpr\spx@boxes@padding@right+\spx@boxes@border@right\relax}% + \ht\spx@tempboxa + \dimexpr\ht\spx@tempboxa+\spx@boxes@border@top+\spx@boxes@padding@top\relax + \dp\spx@tempboxa + \dimexpr\dp\spx@tempboxa+\spx@boxes@padding@bottom+\spx@boxes@border@bottom\relax + \ifspx@boxes@insetshadow + \expandafter\spx@boxes@fcolorbox@insetshadow + \else + \expandafter\spx@boxes@fcolorbox@externalshadow + \fi +} + +% external shadow +\def\spx@boxes@fcolorbox@externalshadow{% + % reserve space to external shadow if on left + \ifspx@boxes@withshadow + \ifspx@boxes@shadowinbbox + \ifdim\spx@boxes@shadow@xoffset<\z@\kern-\spx@boxes@shadow@xoffset\fi + \fi + \fi + % BACKGROUND + % draw background and move back to reference point + {\color{spx@boxes@backgroundcolor}% + \vrule\@height\ht\spx@tempboxa + \@depth\dp\spx@tempboxa + \@width\wd\spx@tempboxa + \kern-\wd\spx@tempboxa + }% + % BOX SHADOW + % draw shadow and move back to reference point + \ifspx@boxes@withshadow + \vbox{% + \moveright\spx@boxes@shadow@xoffset + \hbox{\lower\spx@boxes@shadow@yoffset + \vbox{\ifspx@boxes@withshadowcolor + \color{spx@boxes@shadowcolor}% + \else + % 6.2.0: guard against a manually inserted \color command in + % contents which could leak at a page break to the shadow + \normalcolor + \fi + \ifdim\spx@boxes@shadow@yoffset<\z@ + \hrule\@height-\spx@boxes@shadow@yoffset + \kern\spx@boxes@shadow@yoffset + \fi + \setbox\spx@tempboxb\hb@xt@\wd\spx@tempboxa{% + \ifdim\spx@boxes@shadow@xoffset<\z@\vrule\@width-\spx@boxes@shadow@xoffset\fi + \hss + \ifdim\spx@boxes@shadow@xoffset>\z@\vrule\@width\spx@boxes@shadow@xoffset\fi + }% + \ht\spx@tempboxb\ht\spx@tempboxa + \dp\spx@tempboxb\dp\spx@tempboxa + \box\spx@tempboxb + \ifdim\spx@boxes@shadow@yoffset>\z@ + \kern-\spx@boxes@shadow@yoffset + \hrule\@height\spx@boxes@shadow@yoffset + \fi + \kern-\dp\spx@tempboxa + }% end of \vbox, attention it will have zero depth if yoffset>0 + \kern-\wd\spx@tempboxa + \ifdim\spx@boxes@shadow@xoffset>\z@ + \kern-\spx@boxes@shadow@xoffset + \fi + }% end of \hbox, attention its depth is only yoffset if yoffset>0 + }% end of \vbox + \fi % end of shadow drawing, and we are back to horizontal reference point + % BOX BORDER + % 7.4.0 requires a set border color + \vbox{\color{spx@boxes@bordercolor}% + \hrule\@height\spx@boxes@border@top + \kern-\spx@boxes@border@top + \setbox\spx@tempboxb\hb@xt@\wd\spx@tempboxa + {\vrule\@width\spx@boxes@border@left + \hss\vrule\@width\spx@boxes@border@right + }% + \ht\spx@tempboxb\ht\spx@tempboxa + \dp\spx@tempboxb\dp\spx@tempboxa + \box\spx@tempboxb + \kern-\spx@boxes@border@bottom + \hrule\@height\spx@boxes@border@bottom + \kern-\dp\spx@tempboxa + }% attention this box has zero depth due to \hrule at bottom + % step back to horizontal reference point + \kern-\wd\spx@tempboxa + % end of border drawing + % CONTENTS + % adjust the total depth to include the bottom shadow + \ifspx@boxes@withshadow + \ifdim\spx@boxes@shadow@yoffset>\z@ + \dp\spx@tempboxa\dimexpr\dp\spx@tempboxa+\spx@boxes@shadow@yoffset\relax + \fi + \fi + \box\spx@tempboxa + % include lateral shadow in total width + \ifspx@boxes@withshadow + \ifspx@boxes@shadowinbbox + \ifdim\spx@boxes@shadow@xoffset>\z@\kern\spx@boxes@shadow@xoffset\fi + \fi + \fi + \egroup +} + +% inset shadow +% +% The parameters signs are interpreted as in CSS styling. +\def\spx@boxes@fcolorbox@insetshadow{% + % BACKGROUND + % draw background and move back to reference point + % 7.4.0 always assumes a background color + {\color{spx@boxes@backgroundcolor}% + \vrule\@height\ht\spx@tempboxa + \@depth\dp\spx@tempboxa + \@width\wd\spx@tempboxa + \kern-\wd\spx@tempboxa + }% + % BOX SHADOW + % draw shadow and move back to reference point + \ifspx@boxes@withshadow + \hbox{\vbox{\ifspx@boxes@withshadowcolor + \color{spx@boxes@shadowcolor}% + \else + % 6.2.0: guard against a manually inserted \color command in + % contents which could leak at a page break to the shadow + \normalcolor + \fi +% NOTA BENE +% We deliberately draw shadow partially under an area later covered by frame +% with the idea to avoid anti-aliasing problems but in fact this may be a bad +% idea with border is thin. +% This may need some extra testing with PDF viewers... reports welcome! + \ifdim\spx@boxes@shadow@yoffset>\z@ + \hrule\@height\dimexpr\spx@boxes@border@top+\spx@boxes@shadow@yoffset\relax + \kern-\spx@boxes@shadow@yoffset + \kern-\spx@boxes@border@top + \fi + \setbox\spx@tempboxb\hb@xt@\wd\spx@tempboxa{% + \ifdim\spx@boxes@shadow@xoffset>\z@ + \vrule\@width\dimexpr\spx@boxes@border@left+\spx@boxes@shadow@xoffset\relax\fi + \hss + \ifdim\spx@boxes@shadow@xoffset<\z@ + \vrule\@width\dimexpr-\spx@boxes@shadow@xoffset+\spx@boxes@border@right\relax\fi + }% + \ht\spx@tempboxb\ht\spx@tempboxa + \dp\spx@tempboxb\dp\spx@tempboxa + \box\spx@tempboxb + \ifdim\spx@boxes@shadow@yoffset<\z@ + \kern\spx@boxes@shadow@yoffset + \kern-\spx@boxes@border@bottom + \hrule\@height\dimexpr-\spx@boxes@shadow@yoffset+\spx@boxes@border@bottom\relax + \fi + \kern-\dp\spx@tempboxa + }% end of \vbox, attention it will have zero depth if yoffset<0 + \kern-\wd\spx@tempboxa + }% end of \hbox, attention its depth is only |yoffset| if yoffset<0 + \fi % end of inset shadow drawing, and we are back to horizontal reference point + % BOX BORDER + % 7.4.0 requires a set border color + \vbox{\color{spx@boxes@bordercolor}% + \hrule\@height\spx@boxes@border@top + \kern-\spx@boxes@border@top + \setbox\spx@tempboxb\hb@xt@\wd\spx@tempboxa + {\vrule\@width\spx@boxes@border@left + \hss\vrule\@width\spx@boxes@border@right + }% + \ht\spx@tempboxb\ht\spx@tempboxa + \dp\spx@tempboxb\dp\spx@tempboxa + \box\spx@tempboxb + \kern-\spx@boxes@border@bottom + \hrule\@height\spx@boxes@border@bottom + \kern-\dp\spx@tempboxa + }% attention this box has zero depth due to \hrule at bottom + % step back to horizontal reference point + \kern-\wd\spx@tempboxa + % end of border drawing + % CONTENTS + \box\spx@tempboxa + \egroup +} + +% let's abort input if pict2e package could not be loaded. +% To be extra safe we also alias @rounded to @rectangle but +% a priori the architecture is done so that @rounded will never +% be called in that case by other Sphinx LaTeX components. +\@ifpackageloaded{pict2e} + {} + {\def\spx@boxes@fcolorbox@rounded{\spx@boxes@fcolorbox@rectangle}% + \endinput + } + +% we proceed now in the context of pict2e being available and loaded +% (TeX being a macro-expansion based language it would have +% swallowed all the coming definitions even if pict2e +% had in fact not been loaded... but we aborted the input above) +%%%%%%%% +%//// \spx@boxes@fcolorbox@rounded +% +% Prior to 6.2.0, a constant border-width was applied as the border was +% obtained as a \strokepath. This allowed 4 distinct radii but not to vary the +% border widths. Now the border is drawn by two \fillpath operation, the first +% one filling up to external border, the second one actually filling for the +% background paradoxically on top of it, up to internal border path. +% +% This 6.2.0 abandonment of \strokepath allowed great simplification in +% supporting opentop, openbottom and openboth situations, and it can +% allow automatic support of openleft and openright analogs. +% +% And 6.2.0 also implements elliptical arcs thanks to ellipse package, +% which extends pict2e. + +% Currently, inset shadow is not supported. +% +% Prior to 6.2.0 an inset shadow triggered the rectangle variant, so we never +% ended here, but now it is simply ignored. This change does not appear to me +% to be breaking, as it changes output only for conf.py's specifying both +% rounded corners and an inset shadow and the documentation said it was +% incompatible. + +% wrappers for pict2e usage if old +% Better not to copy over 2020 pict2e definitions in case +% something internal changes +% However our wrappers will work ONLY with dimensional inputs +% No need to pre-expand the arguments +% Braces in case the expression uses parentheses +\def\spx@moveto(#1,#2){\moveto({\strip@pt\dimexpr#1\relax},{\strip@pt\dimexpr#2\relax})} +\def\spx@lineto(#1,#2){\lineto({\strip@pt\dimexpr#1\relax},{\strip@pt\dimexpr#2\relax})} +% attention here the [N] becomes mandatory +% \circlearc[]{}{}{}{}{} +\def\spx@circlearc[#1]#2#3#4%#5#6 + {\circlearc[#1]{\strip@pt\dimexpr#2\relax}% + {\strip@pt\dimexpr#3\relax}% + {\strip@pt\dimexpr#4\relax}% + } +% attention here too the [N] becomes mandatory +% the core path macro of ellipse.sty. Thanks to Daan Leijen, author of this +% package. +% \elliparc []{}{}{}{}{}{} +% maybe this wrapper is unneeded but I don't have real time to check +\def\spx@elliparc[#1]#2#3#4#5%#6#7 + {\elliparc[#1]{\strip@pt\dimexpr#2\relax}% + {\strip@pt\dimexpr#3\relax}% + {\strip@pt\dimexpr#4\relax}% + {\strip@pt\dimexpr#5\relax}% + } + +% Macro whose execution prepares a path to be either stroked or filled +% Only fill operation is used at 6.2.0. The radii are given by the set box +% parameters, but the width and height are in \spx@width and \spx@height. A +% \put command will be used for appropriate shifts. +% 6.2.0 adds elliptical corners! +% But I feel perhaps I need to think about how x-radius and y-radius should +% interact with border-width. So consider output WIP for time being. +\def\spx@boxes@border@defpath{% + \spx@moveto(\spx@boxes@radius@bottomleft@x,\z@)% our \spx@moveto is a bit rigid + % and we must use \z@ not 0 here + \spx@lineto(\spx@width-\spx@boxes@radius@bottomright@x,\z@)% + % x and y radii are either both positive or both zero + % probably not needed to actually guard against the latter case, + % let's do it nevertheless + \ifdim\spx@boxes@radius@bottomright@x>\z@ + \ifdim\spx@boxes@radius@bottomright@x=\spx@boxes@radius@bottomright@y + \spx@circlearc[2]{\spx@width-\spx@boxes@radius@bottomright@x}% + {\spx@boxes@radius@bottomright@y}% + {\spx@boxes@radius@bottomright@x}{-90}{0}% + \else + \spx@elliparc[2]{\spx@width-\spx@boxes@radius@bottomright@x}% + {\spx@boxes@radius@bottomright@y}% + {\spx@boxes@radius@bottomright@x} + {\spx@boxes@radius@bottomright@y}{-90}{0}% + \fi + \fi + \spx@lineto(\spx@width,% + \spx@height-\spx@boxes@radius@topright@y)% + \ifdim\spx@boxes@radius@topright@x>\z@ + \ifdim\spx@boxes@radius@topright@x=\spx@boxes@radius@topright@y + \spx@circlearc[2]{\spx@width-\spx@boxes@radius@topright@x} + {\spx@height-\spx@boxes@radius@topright@y}% + {\spx@boxes@radius@topright@x}{0}{90}% + \else + \spx@elliparc[2]{\spx@width-\spx@boxes@radius@topright@x} + {\spx@height-\spx@boxes@radius@topright@y}% + {\spx@boxes@radius@topright@x}% + {\spx@boxes@radius@topright@y}{0}{90}% + \fi + \fi + \spx@lineto(\spx@boxes@radius@topleft@x,\spx@height)% + \ifdim\spx@boxes@radius@topleft@x>\z@ + \ifdim\spx@boxes@radius@topleft@x=\spx@boxes@radius@topleft@y + \spx@circlearc[2]{\spx@boxes@radius@topleft@x}% + {\spx@height-\spx@boxes@radius@topleft@y}% + {\spx@boxes@radius@topleft@x}{90}{180}% + \else + \spx@elliparc[2]{\spx@boxes@radius@topleft@x}% + {\spx@height-\spx@boxes@radius@topleft@y}% + {\spx@boxes@radius@topleft@x}% + {\spx@boxes@radius@topleft@y}{90}{180}% + \fi + \fi + \spx@lineto(\z@,\spx@boxes@radius@bottomleft@y)% + \ifdim\spx@boxes@radius@bottomleft@x>\z@ + \ifdim\spx@boxes@radius@bottomleft@x=\spx@boxes@radius@bottomleft@y + \spx@circlearc[2]{\spx@boxes@radius@bottomleft@x}% + {\spx@boxes@radius@bottomleft@y}% + {\spx@boxes@radius@bottomleft@x}{180}{270}% + \else + \spx@elliparc[2]{\spx@boxes@radius@bottomleft@x}% + {\spx@boxes@radius@bottomleft@y}% + {\spx@boxes@radius@bottomleft@x}% + {\spx@boxes@radius@bottomleft@y}{180}{270}% + \fi + \fi +}% end of definition of \spx@boxes@border@defpath + +% The customization of the various parameters must have been done via an +% appropriate call to \spx@boxes@fcolorbox@setup, which will have set up +% \spx@boxes@fcolorbox to expand to \spx@boxes@fcolorbox@rounded, and will +% have set its various parameters. +% +\long\def\spx@boxes@fcolorbox@rounded #1{% + \hbox{% + \ifspx@boxes@withshadow + \ifspx@boxes@insetshadow + \spx@boxes@withshadowfalse % ignore inset shadow + \fi + \fi + % reserve space to external shadow if on left + \ifspx@boxes@withshadow + \ifspx@boxes@shadowinbbox + \ifdim\spx@boxes@shadow@xoffset<\z@\kern-\spx@boxes@shadow@xoffset\fi + \fi + \fi + \vbox{% + % adjust vertical bbox + \ifspx@boxes@withshadow + \ifdim\spx@boxes@shadow@yoffset<\z@ + \kern-\spx@boxes@shadow@yoffset + \fi + \fi + \setlength{\unitlength}{1pt}% + \setbox\spx@tempboxa + \hbox{\kern\dimexpr\spx@boxes@border@left+\spx@boxes@padding@left\relax + {#1}% + \kern\dimexpr\spx@boxes@padding@right+\spx@boxes@border@right\relax}% + \ht\spx@tempboxa + \dimexpr\ht\spx@tempboxa+\spx@boxes@border@top+\spx@boxes@padding@top\relax + \dp\spx@tempboxa + \dimexpr\dp\spx@tempboxa+\spx@boxes@padding@bottom+\spx@boxes@border@bottom\relax + \edef\spx@width{\number\wd\spx@tempboxa sp}% + \edef\spx@height{\number\dimexpr\ht\spx@tempboxa+\dp\spx@tempboxa sp}% + \hbox{% + \begin{picture}% + % \strip@pt\dimexpr to work around "old" LaTeX picture limitation + % (we could use the "picture" package, this would add another dependency) + (\strip@pt\dimexpr\spx@width\relax,\strip@pt\dimexpr\spx@height\relax)% + \spx@boxes@border@defpath + \ifspx@boxes@withshadow + \ifspx@boxes@withshadowcolor + \color{spx@boxes@shadowcolor}% + \else + % 6.2.0: here and elsewhere guard against a manually inserted + % \color command in contents which could leak to the shadow + % to the shadow + \normalcolor + \fi + \put(\strip@pt\spx@boxes@shadow@xoffset,% + \strip@pt\dimexpr-\spx@boxes@shadow@yoffset\relax) + {\fillpath}% + \fi + \spx@boxes@border@defpath% must be redone after each \fillpath! (even if + % was in a \put) + % 7.4.0 requires a set border color + \color{spx@boxes@bordercolor}% + \fillpath + % and backgroundcolor command + \color{spx@boxes@backgroundcolor}% + \edef\spx@width{\number\dimexpr\spx@width-\spx@boxes@border@left + -\spx@boxes@border@right sp}% + \edef\spx@height{\number\dimexpr\spx@height-\spx@boxes@border@top + -\spx@boxes@border@bottom sp}% + % redefine a path (in relative coordinates) matching the area delimited + % by the internal borders + \spx@boxes@border@defpath + % use \put to shift, and fill it with background color + \put(\strip@pt\spx@boxes@border@left,\strip@pt\spx@boxes@border@bottom) + {\fillpath}% + \end{picture}}% end of picture \hbox in \vbox + % back-up vertically for outputting the contents + \kern-\dimexpr\ht\spx@tempboxa+\dp\spx@tempboxa\relax + % adjust vertical bbox + \ifspx@boxes@withshadow + \ifdim\spx@boxes@shadow@yoffset>\z@ + \dp\spx@tempboxa\dimexpr\dp\spx@tempboxa+\spx@boxes@shadow@yoffset\relax + \fi + \fi + % inhibit TeX's "line skip" adjustment when piling up hboxes in a vbox + \nointerlineskip + \box\spx@tempboxa + }% end of \vbox + % include lateral shadow in total width + \ifspx@boxes@withshadow + \ifspx@boxes@shadowinbbox + \ifdim\spx@boxes@shadow@xoffset>\z@\kern\spx@boxes@shadow@xoffset\fi + \fi + \fi + }% end of \hbox +}% + + +\endinput diff --git a/docs/build/latex/sphinxpackagecyrillic.sty b/docs/build/latex/sphinxpackagecyrillic.sty new file mode 100644 index 0000000..9aa62fc --- /dev/null +++ b/docs/build/latex/sphinxpackagecyrillic.sty @@ -0,0 +1,55 @@ +%% CYRILLIC IN NON-CYRILLIC DOCUMENTS (pdflatex only) +% +% refs: https://tex.stackexchange.com/q/460271/ +\ProvidesPackage{sphinxpackagecyrillic}% + [2018/11/21 v2.0 support for Cyrillic in non-Cyrillic documents] +\RequirePackage{kvoptions} +\SetupKeyvalOptions{prefix=spx@cyropt@} % use \spx@cyropt@ prefix +\DeclareBoolOption[false]{Xtwo} +\DeclareBoolOption[false]{TtwoA} +\DeclareDefaultOption{\@unknownoptionerror} +\ProcessLocalKeyvalOptions* % ignore class options + +\ifspx@cyropt@Xtwo +% original code by tex.sx user egreg (updated 2019/10/28): +% https://tex.stackexchange.com/a/460325/ +% 159 Cyrillic glyphs as available in X2 TeX 8bit font encoding +% This assumes inputenc loaded with utf8 option, or LaTeX release +% as recent as 2018/04/01 which does it automatically. + \@tfor\next:=% + {Ё}{Ђ}{Є}{Ѕ}{І}{Ј}{Љ}{Њ}{Ћ}{Ў}{Џ}{А}{Б}{В}{Г}{Д}{Е}{Ж}{З}{И}{Й}% + {К}{Л}{М}{Н}{О}{П}{Р}{С}{Т}{У}{Ф}{Х}{Ц}{Ч}{Ш}{Щ}{Ъ}{Ы}{Ь}{Э}{Ю}% + {Я}{а}{б}{в}{г}{д}{е}{ж}{з}{и}{й}{к}{л}{м}{н}{о}{п}{р}{с}{т}{у}% + {ф}{х}{ц}{ч}{ш}{щ}{ъ}{ы}{ь}{э}{ю}{я}{ё}{ђ}{є}{ѕ}{і}{ј}{љ}{њ}{ћ}% + {ў}{џ}{Ѣ}{ѣ}{Ѫ}{ѫ}{Ѵ}{ѵ}{Ґ}{ґ}{Ғ}{ғ}{Ҕ}{ҕ}{Җ}{җ}{Ҙ}{ҙ}{Қ}{қ}{Ҝ}{ҝ}% + {Ҟ}{ҟ}{Ҡ}{ҡ}{Ң}{ң}{Ҥ}{ҥ}{Ҧ}{ҧ}{Ҩ}{ҩ}{Ҫ}{ҫ}{Ҭ}{ҭ}{Ү}{ү}{Ұ}{ұ}{Ҳ}{ҳ}% + {Ҵ}{ҵ}{Ҷ}{ҷ}{Ҹ}{ҹ}{Һ}{һ}{Ҽ}{ҽ}{Ҿ}{ҿ}{Ӏ}{Ӄ}{ӄ}{Ӆ}{ӆ}{Ӈ}{ӈ}{Ӌ}{ӌ}% + {Ӎ}{ӎ}{Ӕ}{ӕ}{Ә}{ә}{Ӡ}{ӡ}{Ө}{ө}\do + {% + \begingroup\def\IeC{\protect\DeclareTextSymbolDefault}% + \protected@edef\@temp{\endgroup + \@ifl@t@r{\fmtversion}{2019/10/01}{\csname u8:\next\endcsname}{\next}}% + \@temp{X2}% + }% +\else +\ifspx@cyropt@TtwoA +% original code by tex.sx user jfbu: +% https://tex.stackexchange.com/a/460305/ +% 63*2+1=127 Cyrillic glyphs as found in T2A 8bit TeX font-encoding + \@tfor\@tempa:=% + {ae}{a}{b}{chrdsc}{chvcrs}{ch}{c}{dje}{dze}{dzhe}{d}{erev}{ery}{e}% + {f}{ghcrs}{gup}{g}{hdsc}{hrdsn}{h}{ie}{ii}{ishrt}{i}{je}% + {kbeak}{kdsc}{kvcrs}{k}{lje}{l}{m}{ndsc}{ng}{nje}{n}{otld}{o}{p}{r}% + {schwa}{sdsc}{sftsn}{shch}{shha}{sh}{s}{tshe}{t}{ushrt}{u}{v}% + {ya}{yhcrs}{yi}{yo}{yu}{y}{zdsc}{zhdsc}{zh}{z}\do + {% + \expandafter\DeclareTextSymbolDefault\expandafter + {\csname cyr\@tempa\endcsname}{T2A}% + \expandafter\uppercase\expandafter{\expandafter + \def\expandafter\@tempa\expandafter{\@tempa}}% + \expandafter\DeclareTextSymbolDefault\expandafter + {\csname CYR\@tempa\endcsname}{T2A}% + }% + \DeclareTextSymbolDefault{\CYRpalochka}{T2A}% +\fi\fi +\endinput diff --git a/docs/build/latex/sphinxpackagefootnote.sty b/docs/build/latex/sphinxpackagefootnote.sty new file mode 100644 index 0000000..7f2e291 --- /dev/null +++ b/docs/build/latex/sphinxpackagefootnote.sty @@ -0,0 +1,434 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{sphinxpackagefootnote}% + [2024/05/17 v7.3.x Sphinx custom footnotehyper package (Sphinx team)] +%% +%% Package: sphinxpackagefootnote +%% Version: based on footnotehyper.sty 2021/02/04 v1.1d +%% https://www.ctan.org/pkg/footnotehyper +%% License: the one applying to Sphinx +%% +% Provides support for footnote mark-up from Sphinx latex writer: +% - "footnote" and "footnotetext" environments allowing verbatim material +% - "savenotes" environment for wrapping environments, such as for tables +% which have problems with LaTeX footnotes +% - hyperlinks +% +% Sphinx uses exclusively this mark-up for footnotes: +% - \begin{footnote}[N] +% - \begin{footnotetext}[N] +% - \sphinxfootnotemark[N] +% where N is a number. +% +%% Some small differences from upstream footnotehyper.sty: +%% - a tabulary compatibility layer (partial but enough for Sphinx), +%% - usage of \spx@opt@BeforeFootnote +%% - usage of \sphinxunactivateextrasandspace from sphinx.sty, +%% - \sphinxlongtablepatch +%% +%% Starting with Sphinx v4.5.0, inherited footnotehyper macros for +%% footnote/footnotetext receive some Sphinx specific extras to +%% implement "intelligent" footnote marks checking page numbers. +%% +%% All footnotes output from Sphinx are hyperlinked. With "savenotes" +%% footnotes may appear on page distinct from footnote mark, the latter +%% will indicate page number of the footnote. +\newif\iffootnotehyperparse\footnotehyperparsetrue +\DeclareOption*{\PackageWarning{sphinxpackagefootnote}{Option `\CurrentOption' is unknown}}% +\ProcessOptions\relax +\newbox\FNH@notes +\newtoks\FNH@toks % 1.1c +\newdimen\FNH@width +\let\FNH@colwidth\columnwidth +\newif\ifFNH@savingnotes +\AtBeginDocument {% + \let\FNH@latex@footnote \footnote + \let\FNH@latex@footnotetext\footnotetext + \let\FNH@H@@footnotetext \@footnotetext + \let\FNH@H@@mpfootnotetext \@mpfootnotetext + \newenvironment{savenotes} + {\FNH@savenotes\ignorespaces}{\FNH@spewnotes\ignorespacesafterend}% + \let\spewnotes \FNH@spewnotes + \let\footnote \FNH@footnote + \let\footnotetext \FNH@footnotetext + \let\endfootnote \FNH@endfntext + \let\endfootnotetext\FNH@endfntext + % always True branch taken with Sphinx + \@ifpackageloaded{hyperref} + {\ifHy@hyperfootnotes + \let\FNH@H@@footnotetext\H@@footnotetext + \let\FNH@H@@mpfootnotetext\H@@mpfootnotetext + \else + \let\FNH@hyper@fntext\FNH@nohyp@fntext + \fi}% + {\let\FNH@hyper@fntext\FNH@nohyp@fntext}% +}% +\def\FNH@hyper@fntext{\FNH@fntext\FNH@hyper@fntext@i}% +\def\FNH@nohyp@fntext{\FNH@fntext\FNH@nohyp@fntext@i}% +\def\FNH@fntext #1{% + \ifx\ifmeasuring@\@undefined + \expandafter\@secondoftwo\else\expandafter\@firstofone\fi +% these two lines modified for Sphinx (tabulary compatibility): + {\ifmeasuring@\expandafter\@gobbletwo\else\expandafter\@firstofone\fi}% + {\ifx\equation$\expandafter\@gobbletwo\fi #1}%$ +}% +\long\def\FNH@hyper@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext + {\rule\z@\footnotesep\ignorespaces + \ifHy@nesting\expandafter\ltx@firstoftwo + \else\expandafter\ltx@secondoftwo + \fi + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}{#1}}% + {\Hy@raisedlink + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}% + {\relax}}% + \let\@currentHref\Hy@footnote@currentHref + \let\@currentlabelname\@empty + #1}% + \@finalstrut\strutbox + }% + \FNH@endnote + }% +}% +\long\def\FNH@nohyp@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext{\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \FNH@endnote + }% +}% +\def\FNH@startnote{% + \hsize\FNH@colwidth + \interlinepenalty\interfootnotelinepenalty + \reset@font\footnotesize + \floatingpenalty\@MM + \@parboxrestore + \protected@edef\@currentlabel{\csname p@\@mpfn\endcsname\@thefnmark}% + \color@begingroup +}% +\def\FNH@endnote{\color@endgroup}% +\def\FNH@savenotes{% + \begingroup + \ifFNH@savingnotes\else + \FNH@savingnotestrue + \let\@footnotetext \FNH@hyper@fntext + \let\@mpfootnotetext \FNH@hyper@fntext + \let\H@@mpfootnotetext\FNH@nohyp@fntext + \FNH@width\columnwidth + \let\FNH@colwidth\FNH@width + \global\setbox\FNH@notes\box\voidb@x + \let\FNH@thempfn\thempfn + \let\FNH@mpfn\@mpfn + \ifx\@minipagerestore\relax\let\@minipagerestore\@empty\fi + \expandafter\def\expandafter\@minipagerestore\expandafter{% + \@minipagerestore + \let\thempfn\FNH@thempfn + \let\@mpfn\FNH@mpfn + }% + \fi +}% +\def\FNH@spewnotes {% + \if@endpe\ifx\par\@@par\FNH@toks{}\else + \FNH@toks\expandafter{\expandafter + \def\expandafter\par\expandafter{\par}\@endpetrue}% + \expandafter\expandafter\expandafter + \FNH@toks + \expandafter\expandafter\expandafter + {\expandafter\the\expandafter\FNH@toks + \expandafter\def\expandafter\@par\expandafter{\@par}}% + \expandafter\expandafter\expandafter + \FNH@toks + \expandafter\expandafter\expandafter + {\expandafter\the\expandafter\FNH@toks + \expandafter\everypar\expandafter{\the\everypar}}\fi + \else\FNH@toks{}\fi + \expandafter + \endgroup\the\FNH@toks + \ifFNH@savingnotes\else + \ifvoid\FNH@notes\else + \begingroup + \let\@makefntext\@empty + \let\@finalstrut\@gobble + \let\rule\@gobbletwo + \ifx\@footnotetext\@mpfootnotetext + \expandafter\FNH@H@@mpfootnotetext + \else + \expandafter\FNH@H@@footnotetext + \fi{\unvbox\FNH@notes}% + \endgroup + \fi + \fi +}% +\def\FNH@footnote@envname {footnote}% +\def\FNH@footnotetext@envname{footnotetext}% +\def\FNH@footnote{% +% this line added for Sphinx: + \spx@opt@BeforeFootnote + \ifx\@currenvir\FNH@footnote@envname + \expandafter\FNH@footnoteenv + \else + \expandafter\FNH@latex@footnote + \fi +}% +\def\FNH@footnoteenv{% +% this line added for Sphinx (footnotes in parsed literal blocks): + \catcode13=5 \sphinxunactivateextrasandspace + \@ifnextchar[% + \FNH@footnoteenv@i %] + {\stepcounter\@mpfn + \protected@xdef\@thefnmark{\thempfn}% + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnoteenv@i[#1]{% + \begingroup + % This legacy code from LaTeX core restricts #1 to be digits only + % This limitation could be lifted but legacy Sphinx anyhow obeys it + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup +% -- Sphinx specific: +% currently commented out due to +% https://github.com/sphinx-doc/sphinx/pull/10191#issuecomment-1038807448 +% Memo: memoir class detection of successive footnote marks (to separate them +% by commas) is broken by \refstepcounter and also by \label, and some +% mitigation such as in \sphinxfootref would be needed + % \global\let\spx@saved@thefnmark\@thefnmark + % % this is done to access robustly the page number where footnote mark is + % \refstepcounter{sphinxfootnotemark}\label{footnotemark.\thesphinxfootnotemark}% + % % if possible, compare page numbers of mark and footnote to define \@thefnmark + % \ltx@ifundefined{r@\thesphinxscope.footnote.#1}% + % {}% one more latex run is needed + % {\sphinx@xdef@thefnmark{#1}}% check of page numbers possible +% -- + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% +% -- Sphinx specific: + % we need to reset \@thefnmark as it is used by \FNH@startfntext via + % \FNH@startnote to set \@currentlabel which will be used by \label +% currently commented out (see above) + % \global\let\@thefnmark\spx@saved@thefnmark +% -- + \FNH@startfntext +% -- again Sphinx specific + % \@currentlabel as needed by \label got set by \FNH@startnote + % insert this at start of footnote text then the label will allow + % to robustly know on which page the footnote text ends up +% currently only of use for extra footnote marks so in case footnote multiply referred + \phantomsection\label{\thesphinxscope.footnote.#1}% +}% +\def\FNH@footnotetext{% + \ifx\@currenvir\FNH@footnotetext@envname + \expandafter\FNH@footnotetextenv + \else + \expandafter\FNH@latex@footnotetext + \fi +}% +\def\FNH@footnotetextenv{% + \@ifnextchar[% + \FNH@footnotetextenv@i %] + {\protected@xdef\@thefnmark{\thempfn}% + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnotetextenv@i[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \ifFNH@savingnotes + \def\FNH@endfntext@fntext{\FNH@nohyp@fntext}% + \else + \def\FNH@endfntext@fntext{\FNH@H@@footnotetext}% + \fi + \FNH@startfntext +% -- Sphinx specific addition + \phantomsection\label{\thesphinxscope.footnote.#1}% +}% +\def\FNH@startfntext{% + \setbox\z@\vbox\bgroup + \FNH@startnote + \FNH@prefntext + \rule\z@\footnotesep\ignorespaces +}% +\def\FNH@endfntext {% + \@finalstrut\strutbox + \FNH@postfntext + \FNH@endnote + \egroup + \begingroup + \let\@makefntext\@empty\let\@finalstrut\@gobble\let\rule\@gobbletwo + \FNH@endfntext@fntext {\unvbox\z@}% + \endgroup +}% +\let\FNH@prefntext\@empty +\let\FNH@postfntext\@empty +\AtBeginDocument{\iffootnotehyperparse\expandafter\FNH@check\fi}% +\def\FNH@safeif#1{% + \iftrue\csname if#1\endcsname\csname fi\endcsname\expandafter\@firstoftwo + \else\csname fi\endcsname\expandafter\@secondoftwo + \fi +}% +\def\FNH@check{% + \ifx\@makefntextFB\@undefined\expandafter\FNH@check@ + \else\expandafter\FNH@frenchb@ + \fi +}% +\def\FNH@frenchb@{% + \def\FNH@prefntext{% + \localleftbox{}% + \let\FBeverypar@save\FBeverypar@quote + \let\FBeverypar@quote\relax + \FNH@safeif{FB@koma}% + {\FNH@safeif{FBFrenchFootnotes}% + {\ifx\footnote\thanks + \let\@@makefnmark\@@makefnmarkTH + \@makefntextTH{} % space as in french.ldf + \else + \let\@@makefnmark\@@makefnmarkFB + \@makefntextFB{} % space as in french.ldf + \fi + }{\let\@@makefnmark\@@makefnmarkORI + \@makefntextORI{}% no space as in french.ldf + }% + }% + {\FNH@safeif{FBFrenchFootnotes}% + {\@makefntextFB{}}% + {\@makefntextORI{}}% + }% + }% + \def\FNH@postfntext{% + \let\FBeverypar@quote\FBeverypar@save + \localleftbox{\FBeveryline@quote}% + }% +}% +\def\FNH@check@{% + \expandafter\FNH@check@a\@makefntext{1.2!3?4,}% + \FNH@@@1.2!3?4,\FNH@@@\relax +}% +\long\def\FNH@check@a #11.2!3?4,#2\FNH@@@#3{% + \ifx\relax#3\expandafter\FNH@checkagain@ + \else + \def\FNH@prefntext{#1}\def\FNH@postfntext{#2}% + \expandafter\FNH@check@b + \fi +}% +\def\FNH@checkagain@{% + \expandafter\FNH@checkagain@a + \detokenize\expandafter{\@makefntext{1.2!3?4,}}\relax\FNH@@@ +}% +\edef\FNH@temp{\noexpand\FNH@checkagain@a ##1\string{1.2!3?4,\string}}% +\expandafter\def\FNH@temp#2#3\FNH@@@{% + \ifx\relax#2% + \def\FNH@prefntext{\@makefntext{}}% + \else\FNH@bad@makefntext@alert + \fi +}% +\def\FNH@check@b #1\relax{% + \expandafter\expandafter\expandafter\FNH@check@c + \expandafter\meaning\expandafter\FNH@prefntext + \meaning\FNH@postfntext1.2!3?4,\FNH@check@c\relax +}% +\def\FNH@check@c #11.2!3?4,#2#3\relax{% + \ifx\FNH@check@c#2\else\FNH@bad@makefntext@alert\fi +}% +% slight reformulation for Sphinx +\def\FNH@bad@makefntext@alert{% + \sphinxbuildwarning{badfootnotes}% + \PackageWarningNoLine{sphinxpackagefootnote}% + {Footnotes will be sub-optimal, sorry. This is due to the document class or^^J + some package modifying macro \string\@makefntext.^^J + You can try to report this incompatibility at^^J + https://github.com/sphinx-doc/sphinx with this info:}% + \typeout{\meaning\@makefntext}% + \let\FNH@prefntext\@empty\let\FNH@postfntext\@empty +}% +% this macro from original footnote.sty is not used anymore by Sphinx +% but for simplicity sake let's just keep it as is +\def\makesavenoteenv{\@ifnextchar[\FNH@msne@ii\FNH@msne@i}%] +\def\FNH@msne@i #1{% + \expandafter\let\csname FNH$#1\expandafter\endcsname %$ + \csname #1\endcsname + \expandafter\let\csname endFNH$#1\expandafter\endcsname %$ + \csname end#1\endcsname + \FNH@msne@ii[#1]{FNH$#1}%$ +}% +\def\FNH@msne@ii[#1]#2{% + \expandafter\edef\csname#1\endcsname{% + \noexpand\savenotes + \expandafter\noexpand\csname#2\endcsname + }% + \expandafter\edef\csname end#1\endcsname{% + \expandafter\noexpand\csname end#2\endcsname + \noexpand\expandafter + \noexpand\spewnotes + \noexpand\if@endpe\noexpand\@endpetrue\noexpand\fi + }% +}% +% +% some extras for Sphinx : +% \sphinxfootnotemark: +% - if in section titles will auto-remove itself from TOC +\def\sphinxfootnotemark [#1]% + {\ifx\thepage\relax\else\sphinxfootref{#1}\fi}% +\newcounter{sphinxfootnotemark} +\renewcommand\thesphinxfootnotemark{\number\value{sphinxfootnotemark}} +% - compares page number of footnote mark versus the one of footnote text +\def\sphinx@xdef@thefnmark#1{% + \expandafter\expandafter\expandafter\sphinx@footref@get + \csname r@\thesphinxscope.footnote.#1\endcsname\relax + \expandafter\expandafter\expandafter\sphinx@footmark@getpage + \csname r@footnotemark.\thesphinxfootnotemark\endcsname\thepage\relax + \protected@xdef\@thefnmark{% + \ifx\spx@footmarkpage\spx@footrefpage + \spx@footreflabel + \else + % the macro \sphinxthefootnotemark is in sphinx.sty + \sphinxthefootnotemark{\spx@footreflabel}{\spx@footrefpage}% + \fi + }% +}% +\def\sphinx@footref@get #1#2#3#4#5\relax{% + \def\spx@footreflabel{#1}% + \def\spx@footrefpage {#2}% + \def\spx@footrefHref {#4}% +}% +\def\sphinx@footmark@getpage #1#2#3\relax{% + \edef\spx@footmarkpage{#2}% +}% +\protected\def\sphinxfootref#1{% #1 always is explicit number in Sphinx + \spx@opt@BeforeFootnote + % each of \refstepcounter and \label interferes with memoir class detection + % of successive footnote marks, so we move them to inside \@makefnmark + \let\spx@saved@makefnmark\@makefnmark + \ltx@ifundefined{r@\thesphinxscope.footnote.#1}% + {\gdef\@thefnmark{?}% on first LaTeX run + \refstepcounter{sphinxfootnotemark}\label{footnotemark.\thesphinxfootnotemark}% + }% + {\def\@makefnmark{% will be used by \H@@footnotemark + \refstepcounter{sphinxfootnotemark}\label{footnotemark.\thesphinxfootnotemark}% + \sphinx@xdef@thefnmark{#1}% also defines \spx@footrefHref + % must be executed after \refstepcounter + \hyper@linkstart{link}{\spx@footrefHref}% + \spx@saved@makefnmark + \hyper@linkend + }% + }% + \H@@footnotemark + \let\@makefnmark\spx@saved@makefnmark +}% +\AtBeginDocument{% + % let hyperref less complain + \pdfstringdefDisableCommands{\def\sphinxfootnotemark [#1]{}}% + % to obtain hyperlinked footnotes in longtable environment we must replace + % hyperref's patch of longtable's patch of \@footnotetext by our own + \let\LT@p@ftntext\FNH@hyper@fntext + % this *requires* longtable to be used always wrapped in savenotes environment +}% +\endinput +%% +%% End of file `sphinxpackagefootnote.sty'. diff --git a/docs/build/latex/sphinxpackagesubstitutefont.sty b/docs/build/latex/sphinxpackagesubstitutefont.sty new file mode 100644 index 0000000..536bf20 --- /dev/null +++ b/docs/build/latex/sphinxpackagesubstitutefont.sty @@ -0,0 +1,21 @@ +%% a stub for obsoleted LaTeX package substitutefont +% The package substitutefont stopped being distributed with TeXLive +% around August 2023 and was moved to "obsolete" section. +% cf https://ctan.org/pkg/substitutefont +% Trying to load it raises a LaTeX build error since. + +% The \substitutefont has a LaTeX kernel replacement +% \DeclareFontFamilySubstitution +% which was added to LaTeX 2020-02-02 +% The aim of this stub is to do that replacement silently. + +% change this info string if making any custom modification +\ProvidesPackage{sphinxpackagesubstitutefont}[2023/15/11 v7.3.0 substitutefont stub] + +\ifdefined\DeclareFontFamilySubstitution + \def\substitutefont{\DeclareFontFamilySubstitution} +\else + \usepackage{substitutefont} +\fi + +\endinput diff --git a/docs/build/simplepdf/.buildinfo b/docs/build/simplepdf/.buildinfo index 01c8d5e..b403540 100644 --- a/docs/build/simplepdf/.buildinfo +++ b/docs/build/simplepdf/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 8ce4d6c0fb1d538c7d5da7d6ee750f9e +config: b14ac012b3118343ac283155ad9f32db tags: 62a1e7829a13fc7881b6498c52484ec0 diff --git a/docs/build/simplepdf/Payroll Administration.pdf b/docs/build/simplepdf/Payroll Administration.pdf new file mode 100644 index 0000000..c906ebd Binary files /dev/null and b/docs/build/simplepdf/Payroll Administration.pdf differ diff --git a/docs/build/simplepdf/_static/documentation_options.js b/docs/build/simplepdf/_static/documentation_options.js index 328e39c..69fbd59 100644 --- a/docs/build/simplepdf/_static/documentation_options.js +++ b/docs/build/simplepdf/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: 'HR', + VERSION: 'Fall 2025', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'simplepdf', diff --git a/docs/build/simplepdf/index.html b/docs/build/simplepdf/index.html index c04e29a..9c60f7c 100644 --- a/docs/build/simplepdf/index.html +++ b/docs/build/simplepdf/index.html @@ -5,11 +5,11 @@ - Canadian Payroll Administration HR documentation + Payroll Administration Fall 2025 documentation - @@ -30,10 +30,10 @@

    - Canadian Payroll Administration + Payroll Administration

    - Version Fall 2025 + Version v2.0

    @@ -71,8 +71,8 @@ @@ -178,10 +178,10 @@
    -
    +

    - Canadian Payroll Administration documentation - + Canadian Payroll Administration +

    @@ -208,19 +208,32 @@

    - In this course you’ll learn about the various government agencies and legislation that impact payroll -from both the employer’s and the employee’s perspective. Moreover, you’ll learn the information -and processes necessary to produce payroll at the employee level. + Through this material, students will gain a comprehensive understanding of core payroll principles and practices. They will explore legislative compliance requirements and the role of key regulatory bodies that govern payroll operations in Canada.

    - The objective of the payroll function is to pay employees - - accurately and on time - - while remaining -compliant with legislation across a full annual payroll cycle. In this course, you’ll cover: + Students will learn how to:

      +
    • +

      + Accurately calculate net pay for salaried, hourly, commissioned, and contract employees. +

      +
    • +
    • +

      + Identify and meet payroll-related obligations for businesses. +

      +
    • +
    • +

      + Navigate the administrative aspects of human resource management that intersect with payroll responsibilities. +

      +
    • +
    • +

      + Apply payroll procedures using computerized payroll software through practical, hands-on exercises. +

      +
    • Payroll’s responsibilities from hiring through to termination. @@ -237,17 +250,64 @@ compliant with legislation across a full annual payroll cycle. In this course, y

    - @@ -1281,25 +1341,25 @@ c. Choice C
    - -
    -

    - Glossary - - ¶ - -

    - +
    +

    + Glossary + + ¶ + +

    + +
    diff --git a/docs/build/simplepdf/objects.inv b/docs/build/simplepdf/objects.inv index d841285..56d7d16 100644 Binary files a/docs/build/simplepdf/objects.inv and b/docs/build/simplepdf/objects.inv differ diff --git a/docs/source/conf.py b/docs/source/conf.py index f1181c5..3f52193 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -6,10 +6,10 @@ # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information -project = 'Canadian Payroll Administration' +project = 'Payroll Administration' copyright = '2025' author = 'Alexandre Bobkov' -release = 'HR' +release = 'Fall 2025' # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration @@ -45,7 +45,7 @@ source_encoding = 'utf-8-sig' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. -version = 'Fall 2025' +version = 'v2.0' # -- Options for HTML output ------------------------------------------------- diff --git a/docs/source/index.rst b/docs/source/index.rst index fdd056a..ce4e516 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -2,9 +2,9 @@ sphinx-quickstart on Fri Jun 20 18:50:25 2025. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. - -Canadian Payroll Administration documentation -============================================= +############################################## +Canadian Payroll Administration +############################################## .. program-output:: python --version diff --git a/docs/source/introduction.rst b/docs/source/introduction.rst index 6c26480..e959809 100644 --- a/docs/source/introduction.rst +++ b/docs/source/introduction.rst @@ -2,17 +2,37 @@ INTRODUCTION ############ -In this course you'll learn about the various government agencies and legislation that impact payroll -from both the employer's and the employee's perspective. Moreover, you'll learn the information -and processes necessary to produce payroll at the employee level. +Through this material, students will gain a comprehensive understanding of core payroll principles and practices. They will explore legislative compliance requirements and the role of key regulatory bodies that govern payroll operations in Canada. -The objective of the payroll function is to pay employees **accurately and on time** while remaining -compliant with legislation across a full annual payroll cycle. In this course, you'll cover: +Students will learn how to: +- Accurately calculate net pay for salaried, hourly, commissioned, and contract employees. +- Identify and meet payroll-related obligations for businesses. +- Navigate the administrative aspects of human resource management that intersect with payroll responsibilities. +- Apply payroll procedures using computerized payroll software through practical, hands-on exercises. - Payroll's responsibilities from hiring through to termination. - Payroll compliance legislation in practical scenarios. - Individual pay calculation process. +Learning Outcomes +------------------ + +The material of this study guide aim to make students to be be able to: + +- Calculate regular individual pay +- Calculate non-regular individual pay +- Calculate termination payments +- Complete a Record of Employment (ROE) +- Apply federal and provincial legislation to payroll, including: + - The Canada Pension Plan Act + - The Employment Insurance Act + - The Income Tax Act + - Employment Standards legislation + - Workers' Compensation Acts + - Québec-specific legislation + + +In other words, the material covers the foundational knowledge and technical skills needed to confidently perform payroll tasks in a variety of employment settings. *********************** Payroll Legal Framework