diff --git a/first-line-indent/Makefile b/first-line-indent/Makefile index 62bfcbae..1b178b1f 100644 --- a/first-line-indent/Makefile +++ b/first-line-indent/Makefile @@ -2,18 +2,49 @@ DIFF ?= diff --strip-trailing-cr -u .PHONY: test -test: test_latex test_html - -test_html: sample.md expected.html first-line-indent.lua - @pandoc -s --lua-filter first-line-indent.lua --to=html $< \ +test: sample.md expected.html \ + sample_head-inc_1.md expected_hi_1.html expected_hi_1.tex \ + sample_head-inc_2.md expected_hi_2.html expected_hi_2.tex \ + sample_head-inc_3.md expected_hi_3.html expected_hi_3.tex \ + first-line-indent.lua + @pandoc -s --lua-filter first-line-indent.lua --to=html sample.md \ | $(DIFF) expected.html - - -test_latex: sample.md expected.tex first-line-indent.lua - @pandoc -s --lua-filter first-line-indent.lua --to=latex $< \ + @pandoc -s --lua-filter first-line-indent.lua --to=latex sample.md \ | $(DIFF) expected.tex - + @pandoc -s --lua-filter first-line-indent.lua --to=html sample_head-inc_1.md \ + | $(DIFF) expected_hi_1.html - + @pandoc -s --lua-filter first-line-indent.lua --to=latex sample_head-inc_1.md \ + | $(DIFF) expected_hi_1.tex - + @pandoc -s --lua-filter first-line-indent.lua --to=html sample_head-inc_2.md \ + | $(DIFF) expected_hi_2.html - + @pandoc -s --lua-filter first-line-indent.lua --to=latex sample_head-inc_2.md \ + | $(DIFF) expected_hi_2.tex - + @pandoc -s --lua-filter first-line-indent.lua --to=html sample_head-inc_3.md \ + | $(DIFF) expected_hi_3.html - + @pandoc -s --lua-filter first-line-indent.lua --to=latex sample_head-inc_3.md \ + | $(DIFF) expected_hi_3.tex - expected.html: sample.md first-line-indent.lua pandoc -s --lua-filter first-line-indent.lua --output $@ $< expected.tex: sample.md first-line-indent.lua pandoc -s --lua-filter first-line-indent.lua --output $@ $< + +expected_hi_1.html: sample_head-inc_1.md first-line-indent.lua + pandoc -s --lua-filter first-line-indent.lua --output $@ $< + +expected_hi_1.tex: sample_head-inc_1.md first-line-indent.lua + pandoc -s --lua-filter first-line-indent.lua --output $@ $< + +expected_hi_2.html: sample_head-inc_2.md first-line-indent.lua + pandoc -s --lua-filter first-line-indent.lua --output $@ $< + +expected_hi_2.tex: sample_head-inc_2.md first-line-indent.lua + pandoc -s --lua-filter first-line-indent.lua --output $@ $< + +expected_hi_3.html: sample_head-inc_3.md first-line-indent.lua + pandoc -s --lua-filter first-line-indent.lua --output $@ $< + +expected_hi_3.tex: sample_head-inc_3.md first-line-indent.lua + pandoc -s --lua-filter first-line-indent.lua --output $@ $< + diff --git a/first-line-indent/expected_hi_1.html b/first-line-indent/expected_hi_1.html new file mode 100644 index 00000000..91f6517b --- /dev/null +++ b/first-line-indent/expected_hi_1.html @@ -0,0 +1,319 @@ + + +
+ + + +This sample tests the filter on a document with a metadata header-includes of the MetaInlines type.
+First paragraph. In English-style typography, the first paragraph shouldn’t have a first-line indent, nor the paragraphs below headers.
+This paragraph should start with a first-line indent. But after this quote:
+++ +Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
the paragraph continues, so there should not be a first-line indent.
+The quote below ends a paragraph:
+++ +Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
This paragraph, then, is genuinely a new paragraph and starts with a first-line indent.
+After a heading (in English typographic style) the paragraph does not have a first-line indent.
+In the couple couple of paragraphs that follow the quotes below, we have manually specified \noindent
and \indent
respectively. This is to check that the filter doesn’t add its own commands to those.
++ +Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
Manually specified no first line indent.
+ +Manually specified first line ident.
+We can also check that indent is removed after lists:
+And after code blocks:
+local variable = "value"
Or horizontal rules.
+In this document we added a few custom filter options. The size of first-line indents is 2em instead of the standard 1em. We also added an option to remove indent after tables:
+Right | +Left | +Center | +Default | +
---|---|---|---|
12 | +12 | +12 | +12 | +
123 | +123 | +123 | +123 | +
1 | +1 | +1 | +1 | +
So this paragraph’s first line is not indented. And we included custom options not to remove ident after ordered lists and definition lists:
+This paragraph is indented.
+This paragraph is indented.
+ + diff --git a/first-line-indent/expected_hi_1.tex b/first-line-indent/expected_hi_1.tex new file mode 100644 index 00000000..51da89fe --- /dev/null +++ b/first-line-indent/expected_hi_1.tex @@ -0,0 +1,207 @@ +% Options for packages loaded elsewhere +\PassOptionsToPackage{unicode}{hyperref} +\PassOptionsToPackage{hyphens}{url} +% +\documentclass[ +]{article} +\title{Sample first line indent} +\author{} +\date{} + +\usepackage{amsmath,amssymb} +\usepackage{lmodern} +\usepackage{iftex} +\ifPDFTeX + \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provide euro and other symbols +\else % if luatex or xetex + \usepackage{unicode-math} + \defaultfontfeatures{Scale=MatchLowercase} + \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} +\fi +% Use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +\IfFileExists{microtype.sty}{% use microtype if available + \usepackage[]{microtype} + \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +\usepackage{xcolor} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} +\hypersetup{ + pdftitle={Sample first line indent}, + hidelinks, + pdfcreator={LaTeX via pandoc}} +\urlstyle{same} % disable monospaced font for URLs +\usepackage{color} +\usepackage{fancyvrb} +\newcommand{\VerbBar}{|} +\newcommand{\VERB}{\Verb[commandchars=\\\{\}]} +\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} +% Add ',fontsize=\small' for more characters per line +\newenvironment{Shaded}{}{} +\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}} +\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}} +\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} +\newcommand{\BuiltInTok}[1]{#1} +\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}} +\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}} +\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}} +\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}} +\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} +\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}} +\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}} +\newcommand{\ExtensionTok}[1]{#1} +\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} +\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}} +\newcommand{\ImportTok}[1]{#1} +\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}} +\newcommand{\NormalTok}[1]{#1} +\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} +\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}} +\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}} +\newcommand{\RegionMarkerTok}[1]{#1} +\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}} +\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}} +\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\usepackage{longtable,booktabs,array} +\usepackage{calc} % for calculating minipage widths +% Correct order of tables after \paragraph or \subparagraph +\usepackage{etoolbox} +\makeatletter +\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} +\makeatother +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +\setcounter{secnumdepth}{-\maxdimen} % remove section numbering +\setlength{\parindent}{2em} +Raw header text +\ifLuaTeX + \usepackage{selnolig} % disable illegal ligatures +\fi + +\begin{document} +\maketitle + +This sample tests the filter on a document with a metadata +header-includes of the MetaInlines type. + +First paragraph. In English-style typography, the first paragraph +shouldn't have a first-line indent, nor the paragraphs below headers. + +This paragraph should start with a first-line indent. But after this +quote: + +\begin{quote} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +\end{quote} + +\noindent the paragraph continues, so there should not be a first-line +indent. + +The quote below ends a paragraph: + +\begin{quote} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +\end{quote} + +\indent This paragraph, then, is genuinely a new paragraph and starts +with a first-line indent. + +\hypertarget{further-tests}{% +\section{Further tests}\label{further-tests}} + +After a heading (in English typographic style) the paragraph does not +have a first-line indent. + +In the couple couple of paragraphs that follow the quotes below, we have +manually specified \texttt{\textbackslash{}noindent} and +\texttt{\textbackslash{}indent} respectively. This is to check that the +filter doesn't add its own commands to those. + +\begin{quote} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +\end{quote} + +\noindent Manually specified no first line indent. + +\indent Manually specified first line ident. + +We can also check that indent is removed after lists: + +\begin{itemize} +\tightlist +\item + A bullet +\item + list +\end{itemize} + +\noindent And after code blocks: + +\begin{Shaded} +\begin{Highlighting}[] +\KeywordTok{local}\NormalTok{ variable }\OperatorTok{=} \StringTok{"value"} +\end{Highlighting} +\end{Shaded} + +\noindent Or horizontal rules. + +\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} + +\noindent In this document we added a few custom filter options. The +size of first-line indents is 2em instead of the standard 1em. We also +added an option to remove indent after tables: + +\begin{longtable}[]{@{}rlcl@{}} +\caption{Demonstration of simple table syntax.}\tabularnewline +\toprule +Right & Left & Center & Default \\ +\midrule +\endfirsthead +\toprule +Right & Left & Center & Default \\ +\midrule +\endhead +12 & 12 & 12 & 12 \\ +123 & 123 & 123 & 123 \\ +1 & 1 & 1 & 1 \\ +\bottomrule +\end{longtable} + +\noindent So this paragraph's first line is not indented. And we +included custom options \emph{not} to remove ident after ordered lists +and definition lists: + +\begin{description} +\tightlist +\item[Definition] +This is a definition block. +\end{description} + +This paragraph is indented. + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\tightlist +\item + An ordered +\item + list +\end{enumerate} + +This paragraph is indented. + +\end{document} diff --git a/first-line-indent/expected_hi_2.html b/first-line-indent/expected_hi_2.html new file mode 100644 index 00000000..4ce7ef69 --- /dev/null +++ b/first-line-indent/expected_hi_2.html @@ -0,0 +1,319 @@ + + + + + + +This sample tests the filter on a document with a metadata header-includes of the MetaBlocks type.
+First paragraph. In English-style typography, the first paragraph shouldn’t have a first-line indent, nor the paragraphs below headers.
+This paragraph should start with a first-line indent. But after this quote:
+++ +Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
the paragraph continues, so there should not be a first-line indent.
+The quote below ends a paragraph:
+++ +Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
This paragraph, then, is genuinely a new paragraph and starts with a first-line indent.
+After a heading (in English typographic style) the paragraph does not have a first-line indent.
+In the couple couple of paragraphs that follow the quotes below, we have manually specified \noindent
and \indent
respectively. This is to check that the filter doesn’t add its own commands to those.
++ +Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
Manually specified no first line indent.
+ +Manually specified first line ident.
+We can also check that indent is removed after lists:
+And after code blocks:
+local variable = "value"
Or horizontal rules.
+In this document we added a few custom filter options. The size of first-line indents is 2em instead of the standard 1em. We also added an option to remove indent after tables:
+Right | +Left | +Center | +Default | +
---|---|---|---|
12 | +12 | +12 | +12 | +
123 | +123 | +123 | +123 | +
1 | +1 | +1 | +1 | +
So this paragraph’s first line is not indented. And we included custom options not to remove ident after ordered lists and definition lists:
+This paragraph is indented.
+This paragraph is indented.
+ + diff --git a/first-line-indent/expected_hi_2.tex b/first-line-indent/expected_hi_2.tex new file mode 100644 index 00000000..7d934375 --- /dev/null +++ b/first-line-indent/expected_hi_2.tex @@ -0,0 +1,207 @@ +% Options for packages loaded elsewhere +\PassOptionsToPackage{unicode}{hyperref} +\PassOptionsToPackage{hyphens}{url} +% +\documentclass[ +]{article} +\title{Sample first line indent} +\author{} +\date{} + +\usepackage{amsmath,amssymb} +\usepackage{lmodern} +\usepackage{iftex} +\ifPDFTeX + \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provide euro and other symbols +\else % if luatex or xetex + \usepackage{unicode-math} + \defaultfontfeatures{Scale=MatchLowercase} + \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} +\fi +% Use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +\IfFileExists{microtype.sty}{% use microtype if available + \usepackage[]{microtype} + \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +\usepackage{xcolor} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} +\hypersetup{ + pdftitle={Sample first line indent}, + hidelinks, + pdfcreator={LaTeX via pandoc}} +\urlstyle{same} % disable monospaced font for URLs +\usepackage{color} +\usepackage{fancyvrb} +\newcommand{\VerbBar}{|} +\newcommand{\VERB}{\Verb[commandchars=\\\{\}]} +\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} +% Add ',fontsize=\small' for more characters per line +\newenvironment{Shaded}{}{} +\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}} +\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}} +\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} +\newcommand{\BuiltInTok}[1]{#1} +\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}} +\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}} +\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}} +\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}} +\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} +\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}} +\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}} +\newcommand{\ExtensionTok}[1]{#1} +\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} +\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}} +\newcommand{\ImportTok}[1]{#1} +\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}} +\newcommand{\NormalTok}[1]{#1} +\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} +\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}} +\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}} +\newcommand{\RegionMarkerTok}[1]{#1} +\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}} +\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}} +\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\usepackage{longtable,booktabs,array} +\usepackage{calc} % for calculating minipage widths +% Correct order of tables after \paragraph or \subparagraph +\usepackage{etoolbox} +\makeatletter +\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} +\makeatother +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +\setcounter{secnumdepth}{-\maxdimen} % remove section numbering +\setlength{\parindent}{2em} +\usepackage{lipsum} +\ifLuaTeX + \usepackage{selnolig} % disable illegal ligatures +\fi + +\begin{document} +\maketitle + +This sample tests the filter on a document with a metadata +header-includes of the MetaBlocks type. + +First paragraph. In English-style typography, the first paragraph +shouldn't have a first-line indent, nor the paragraphs below headers. + +This paragraph should start with a first-line indent. But after this +quote: + +\begin{quote} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +\end{quote} + +\noindent the paragraph continues, so there should not be a first-line +indent. + +The quote below ends a paragraph: + +\begin{quote} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +\end{quote} + +\indent This paragraph, then, is genuinely a new paragraph and starts +with a first-line indent. + +\hypertarget{further-tests}{% +\section{Further tests}\label{further-tests}} + +After a heading (in English typographic style) the paragraph does not +have a first-line indent. + +In the couple couple of paragraphs that follow the quotes below, we have +manually specified \texttt{\textbackslash{}noindent} and +\texttt{\textbackslash{}indent} respectively. This is to check that the +filter doesn't add its own commands to those. + +\begin{quote} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +\end{quote} + +\noindent Manually specified no first line indent. + +\indent Manually specified first line ident. + +We can also check that indent is removed after lists: + +\begin{itemize} +\tightlist +\item + A bullet +\item + list +\end{itemize} + +\noindent And after code blocks: + +\begin{Shaded} +\begin{Highlighting}[] +\KeywordTok{local}\NormalTok{ variable }\OperatorTok{=} \StringTok{"value"} +\end{Highlighting} +\end{Shaded} + +\noindent Or horizontal rules. + +\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} + +\noindent In this document we added a few custom filter options. The +size of first-line indents is 2em instead of the standard 1em. We also +added an option to remove indent after tables: + +\begin{longtable}[]{@{}rlcl@{}} +\caption{Demonstration of simple table syntax.}\tabularnewline +\toprule +Right & Left & Center & Default \\ +\midrule +\endfirsthead +\toprule +Right & Left & Center & Default \\ +\midrule +\endhead +12 & 12 & 12 & 12 \\ +123 & 123 & 123 & 123 \\ +1 & 1 & 1 & 1 \\ +\bottomrule +\end{longtable} + +\noindent So this paragraph's first line is not indented. And we +included custom options \emph{not} to remove ident after ordered lists +and definition lists: + +\begin{description} +\tightlist +\item[Definition] +This is a definition block. +\end{description} + +This paragraph is indented. + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\tightlist +\item + An ordered +\item + list +\end{enumerate} + +This paragraph is indented. + +\end{document} diff --git a/first-line-indent/expected_hi_3.html b/first-line-indent/expected_hi_3.html new file mode 100644 index 00000000..4aaefce2 --- /dev/null +++ b/first-line-indent/expected_hi_3.html @@ -0,0 +1,320 @@ + + + + + + +This sample tests the filter on a document with a metadata header-includes of the MetaList type.
+First paragraph. In English-style typography, the first paragraph shouldn’t have a first-line indent, nor the paragraphs below headers.
+This paragraph should start with a first-line indent. But after this quote:
+++ +Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
the paragraph continues, so there should not be a first-line indent.
+The quote below ends a paragraph:
+++ +Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
This paragraph, then, is genuinely a new paragraph and starts with a first-line indent.
+After a heading (in English typographic style) the paragraph does not have a first-line indent.
+In the couple couple of paragraphs that follow the quotes below, we have manually specified \noindent
and \indent
respectively. This is to check that the filter doesn’t add its own commands to those.
++ +Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
Manually specified no first line indent.
+ +Manually specified first line ident.
+We can also check that indent is removed after lists:
+And after code blocks:
+local variable = "value"
Or horizontal rules.
+In this document we added a few custom filter options. The size of first-line indents is 2em instead of the standard 1em. We also added an option to remove indent after tables:
+Right | +Left | +Center | +Default | +
---|---|---|---|
12 | +12 | +12 | +12 | +
123 | +123 | +123 | +123 | +
1 | +1 | +1 | +1 | +
So this paragraph’s first line is not indented. And we included custom options not to remove ident after ordered lists and definition lists:
+This paragraph is indented.
+This paragraph is indented.
+ + diff --git a/first-line-indent/expected_hi_3.tex b/first-line-indent/expected_hi_3.tex new file mode 100644 index 00000000..eaa0c7ed --- /dev/null +++ b/first-line-indent/expected_hi_3.tex @@ -0,0 +1,208 @@ +% Options for packages loaded elsewhere +\PassOptionsToPackage{unicode}{hyperref} +\PassOptionsToPackage{hyphens}{url} +% +\documentclass[ +]{article} +\title{Sample first line indent} +\author{} +\date{} + +\usepackage{amsmath,amssymb} +\usepackage{lmodern} +\usepackage{iftex} +\ifPDFTeX + \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provide euro and other symbols +\else % if luatex or xetex + \usepackage{unicode-math} + \defaultfontfeatures{Scale=MatchLowercase} + \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} +\fi +% Use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +\IfFileExists{microtype.sty}{% use microtype if available + \usepackage[]{microtype} + \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +\usepackage{xcolor} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} +\hypersetup{ + pdftitle={Sample first line indent}, + hidelinks, + pdfcreator={LaTeX via pandoc}} +\urlstyle{same} % disable monospaced font for URLs +\usepackage{color} +\usepackage{fancyvrb} +\newcommand{\VerbBar}{|} +\newcommand{\VERB}{\Verb[commandchars=\\\{\}]} +\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} +% Add ',fontsize=\small' for more characters per line +\newenvironment{Shaded}{}{} +\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}} +\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}} +\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} +\newcommand{\BuiltInTok}[1]{#1} +\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}} +\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}} +\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}} +\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}} +\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} +\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}} +\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}} +\newcommand{\ExtensionTok}[1]{#1} +\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} +\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}} +\newcommand{\ImportTok}[1]{#1} +\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}} +\newcommand{\NormalTok}[1]{#1} +\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} +\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}} +\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}} +\newcommand{\RegionMarkerTok}[1]{#1} +\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}} +\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}} +\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} +\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} +\usepackage{longtable,booktabs,array} +\usepackage{calc} % for calculating minipage widths +% Correct order of tables after \paragraph or \subparagraph +\usepackage{etoolbox} +\makeatletter +\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} +\makeatother +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +\setcounter{secnumdepth}{-\maxdimen} % remove section numbering +\setlength{\parindent}{2em} +\usepackage{lipsum} + +\ifLuaTeX + \usepackage{selnolig} % disable illegal ligatures +\fi + +\begin{document} +\maketitle + +This sample tests the filter on a document with a metadata +header-includes of the MetaList type. + +First paragraph. In English-style typography, the first paragraph +shouldn't have a first-line indent, nor the paragraphs below headers. + +This paragraph should start with a first-line indent. But after this +quote: + +\begin{quote} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +\end{quote} + +\noindent the paragraph continues, so there should not be a first-line +indent. + +The quote below ends a paragraph: + +\begin{quote} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +\end{quote} + +\indent This paragraph, then, is genuinely a new paragraph and starts +with a first-line indent. + +\hypertarget{further-tests}{% +\section{Further tests}\label{further-tests}} + +After a heading (in English typographic style) the paragraph does not +have a first-line indent. + +In the couple couple of paragraphs that follow the quotes below, we have +manually specified \texttt{\textbackslash{}noindent} and +\texttt{\textbackslash{}indent} respectively. This is to check that the +filter doesn't add its own commands to those. + +\begin{quote} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +\end{quote} + +\noindent Manually specified no first line indent. + +\indent Manually specified first line ident. + +We can also check that indent is removed after lists: + +\begin{itemize} +\tightlist +\item + A bullet +\item + list +\end{itemize} + +\noindent And after code blocks: + +\begin{Shaded} +\begin{Highlighting}[] +\KeywordTok{local}\NormalTok{ variable }\OperatorTok{=} \StringTok{"value"} +\end{Highlighting} +\end{Shaded} + +\noindent Or horizontal rules. + +\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} + +\noindent In this document we added a few custom filter options. The +size of first-line indents is 2em instead of the standard 1em. We also +added an option to remove indent after tables: + +\begin{longtable}[]{@{}rlcl@{}} +\caption{Demonstration of simple table syntax.}\tabularnewline +\toprule +Right & Left & Center & Default \\ +\midrule +\endfirsthead +\toprule +Right & Left & Center & Default \\ +\midrule +\endhead +12 & 12 & 12 & 12 \\ +123 & 123 & 123 & 123 \\ +1 & 1 & 1 & 1 \\ +\bottomrule +\end{longtable} + +\noindent So this paragraph's first line is not indented. And we +included custom options \emph{not} to remove ident after ordered lists +and definition lists: + +\begin{description} +\tightlist +\item[Definition] +This is a definition block. +\end{description} + +This paragraph is indented. + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\tightlist +\item + An ordered +\item + list +\end{enumerate} + +This paragraph is indented. + +\end{document} diff --git a/first-line-indent/first-line-indent.lua b/first-line-indent/first-line-indent.lua index 98899a77..15835a71 100644 --- a/first-line-indent/first-line-indent.lua +++ b/first-line-indent/first-line-indent.lua @@ -82,10 +82,10 @@ local header_code = { -- @return meta the modified metadata block local function add_header_includes(meta, blocks) - local header_includes = pandoc.List(blocks) + local header_includes = pandoc.MetaList( { pandoc.MetaBlocks(blocks) }) -- add any exisiting meta['header-includes'] - -- it could be a MetaList or a single String + -- it can be MetaInlines, MetaBlocks or MetaList if meta['header-includes'] then if meta['header-includes'].t == 'MetaList' then header_includes:extend(meta['header-includes']) @@ -94,7 +94,7 @@ local function add_header_includes(meta, blocks) end end - meta['header-includes'] = pandoc.MetaBlocks(header_includes) + meta['header-includes'] = header_includes return meta diff --git a/first-line-indent/sample_head-inc_1.md b/first-line-indent/sample_head-inc_1.md new file mode 100644 index 00000000..6681779b --- /dev/null +++ b/first-line-indent/sample_head-inc_1.md @@ -0,0 +1,84 @@ +--- +title: "Sample first line indent" +# Filter options. These are defaults, you will get the same +# if you don't specify anything. See the README.md for details. +first-line-indent: + set-metadata-variable: true + set-header-includes: true + auto-remove: true + remove-after: Table + dont-remove-after: + - DefinitionList + - OrderedList + size: "2em" +# header-includes +header-includes: Raw header text +--- + +This sample tests the filter on a document with a metadata header-includes of the MetaInlines type. + +First paragraph. In English-style typography, the first paragraph shouldn't have a first-line indent, nor the paragraphs below headers. + +This paragraph should start with a first-line indent. But after this quote: + +> Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +the paragraph continues, so there should not be a first-line indent. + +The quote below ends a paragraph: + +> Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +\indent This paragraph, then, is genuinely a new paragraph and starts with +a first-line indent. + +# Further tests + +After a heading (in English typographic style) the paragraph does not have a first-line indent. + +In the couple couple of paragraphs that follow the quotes below, we have manually specified `\noindent` and `\indent` respectively. This is to check that the filter doesn't add its own commands to those. + +> Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +\noindent Manually specified no first line indent. + +\indent Manually specified first line ident. + +We can also check that indent is removed after lists: + +* A bullet +* list + +And after code blocks: + +```lua +local variable = "value" +``` + +Or horizontal rules. + +--- + +In this document we added a few custom filter options. The size of first-line +indents is 2em instead of the standard 1em. We also added an option to remove indent after tables: + + Right Left Center Default +------- ------ ---------- ------- + 12 12 12 12 + 123 123 123 123 + 1 1 1 1 + +Table: Demonstration of simple table syntax. + +So this paragraph's first line is not indented. And we included custom options +*not* to remove ident after ordered lists and definition lists: + +Definition +: This is a definition block. + +This paragraph is indented. + +1. An ordered +2. list + +This paragraph is indented. diff --git a/first-line-indent/sample_head-inc_2.md b/first-line-indent/sample_head-inc_2.md new file mode 100644 index 00000000..774028a3 --- /dev/null +++ b/first-line-indent/sample_head-inc_2.md @@ -0,0 +1,90 @@ +--- +title: "Sample first line indent" +# Filter options. These are defaults, you will get the same +# if you don't specify anything. See the README.md for details. +first-line-indent: + set-metadata-variable: true + set-header-includes: true + auto-remove: true + remove-after: Table + dont-remove-after: + - DefinitionList + - OrderedList + size: "2em" +# header-includes +header-includes: | + ```{=latex} + \usepackage{lipsum} + ``` + ```{=html} + + ``` +--- + +This sample tests the filter on a document with a metadata header-includes of the MetaBlocks type. + +First paragraph. In English-style typography, the first paragraph shouldn't have a first-line indent, nor the paragraphs below headers. + +This paragraph should start with a first-line indent. But after this quote: + +> Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +the paragraph continues, so there should not be a first-line indent. + +The quote below ends a paragraph: + +> Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +\indent This paragraph, then, is genuinely a new paragraph and starts with +a first-line indent. + +# Further tests + +After a heading (in English typographic style) the paragraph does not have a first-line indent. + +In the couple couple of paragraphs that follow the quotes below, we have manually specified `\noindent` and `\indent` respectively. This is to check that the filter doesn't add its own commands to those. + +> Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +\noindent Manually specified no first line indent. + +\indent Manually specified first line ident. + +We can also check that indent is removed after lists: + +* A bullet +* list + +And after code blocks: + +```lua +local variable = "value" +``` + +Or horizontal rules. + +--- + +In this document we added a few custom filter options. The size of first-line +indents is 2em instead of the standard 1em. We also added an option to remove indent after tables: + + Right Left Center Default +------- ------ ---------- ------- + 12 12 12 12 + 123 123 123 123 + 1 1 1 1 + +Table: Demonstration of simple table syntax. + +So this paragraph's first line is not indented. And we included custom options +*not* to remove ident after ordered lists and definition lists: + +Definition +: This is a definition block. + +This paragraph is indented. + +1. An ordered +2. list + +This paragraph is indented. diff --git a/first-line-indent/sample_head-inc_3.md b/first-line-indent/sample_head-inc_3.md new file mode 100644 index 00000000..6fa4ca4b --- /dev/null +++ b/first-line-indent/sample_head-inc_3.md @@ -0,0 +1,92 @@ +--- +title: "Sample first line indent" +# Filter options. These are defaults, you will get the same +# if you don't specify anything. See the README.md for details. +first-line-indent: + set-metadata-variable: true + set-header-includes: true + auto-remove: true + remove-after: Table + dont-remove-after: + - DefinitionList + - OrderedList + size: "2em" +# header-includes +header-includes: +- | + ```{=latex} + \usepackage{lipsum} + ``` +- | + ```{=html} + + ``` +--- + +This sample tests the filter on a document with a metadata header-includes of the MetaList type. + +First paragraph. In English-style typography, the first paragraph shouldn't have a first-line indent, nor the paragraphs below headers. + +This paragraph should start with a first-line indent. But after this quote: + +> Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +the paragraph continues, so there should not be a first-line indent. + +The quote below ends a paragraph: + +> Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +\indent This paragraph, then, is genuinely a new paragraph and starts with +a first-line indent. + +# Further tests + +After a heading (in English typographic style) the paragraph does not have a first-line indent. + +In the couple couple of paragraphs that follow the quotes below, we have manually specified `\noindent` and `\indent` respectively. This is to check that the filter doesn't add its own commands to those. + +> Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +\noindent Manually specified no first line indent. + +\indent Manually specified first line ident. + +We can also check that indent is removed after lists: + +* A bullet +* list + +And after code blocks: + +```lua +local variable = "value" +``` + +Or horizontal rules. + +--- + +In this document we added a few custom filter options. The size of first-line +indents is 2em instead of the standard 1em. We also added an option to remove indent after tables: + + Right Left Center Default +------- ------ ---------- ------- + 12 12 12 12 + 123 123 123 123 + 1 1 1 1 + +Table: Demonstration of simple table syntax. + +So this paragraph's first line is not indented. And we included custom options +*not* to remove ident after ordered lists and definition lists: + +Definition +: This is a definition block. + +This paragraph is indented. + +1. An ordered +2. list + +This paragraph is indented.