scrjura.sty 是 KOMA 脚本包的一部分。我用它来起草合同。
我经常需要交付一个 word 文件。因此,我使用 tex4ht 从我的 *.tex 文件中生成它。假设 tex 文件的名称为 contract.tex,此 MWE:
\documentclass[pagesize, ngerman, fontsize=12pt, parskip=half]{scrartcl}
\usepackage[T1]{fontenc}\usepackage[utf8]{inputenc}
\usepackage{babel, scrjura}
\usepackage{lmodern}
\usepackage{microtype}
\title{Sicherheitsbestellung}
\subtitle{gag}
\begin{document}
\maketitle
\begin{contract}
\Clause{title=Eine Paragraphenüberschrift}
\label{CLA:erster-Par}
Dieser Paragraph hat nur einen Absatz und der Text ist kurz.
\Clause{title=Zweite Überschrift}
\label{CLA:titl-uberschr}
Dieser Paragraph hat zwei Absätze, dieser Satz hier ist der erste.
Und hier haben wir den zweiten Absatz.
\end{contract}
\end{document}
然后我调用 tex4ht:
htlatex contract.tex "scrjura" " -cunihtf"
一位友善的灵魂scrjura.cfg
几年前写道,这是一个小文件:
\catcode`\:=11
\makeatletter
\Preamble{html,charset=utf-8}
\begin{document}
\def\qtchr{\expandafter\@gobble\string\"}
\
\ConfigureList{contract}
{\HCode{<div class=\qtchr contract\qtchr>}}
{\HCode{</div>}}
{}{}
\append:def\contract@paragraph@font{\a:contract@paragraph@font}
\append:def\contract@paragraph@font{\b:contract@paragraph@font}
\NewConfigure{contract@paragraph@font}{2}
\Configure{contract@paragraph@font}
{\HCode{<div class=\qtchr paragraph\qtchr>}}
{\Tg</div>}
\pend:def\parformat{\a:parformat}
\append:def\parformat{\b:parformat}
\NewConfigure{parformat}{2}
\Configure{parformat}
{\EndP\HCode{<p class=\qtchr para\qtchr>
<span class=\qtchr sentence\qtchr>}}
{\Tg</span>}
\Css{.sentence{margin-left:2em; padding-top: .5em;}}
\Css{.paragraph{margin: 1em;}}
\Css{.para{margin: .5em;}}
\EndPreamble
\catcode`\:=12
\makeatother
\endinput
问题是:如果条款仅由标题和一个段落组成,则标题和正文之间没有衔接\par
。此屏幕截图取自 contract.html:
德文文本中“段落”一词的用法令人困惑,请忽略它。
问题:如何更改 scrjura.cfg 以\par
在标题和段落之间获得一个,即使该条款仅由一个标题和一个段落组成。
您需要知道一件事:如果条款只有一个段落,scrjura.sty
则不会对其进行枚举。如果条款有多个段落,则会对其进行编号。
我真的希望我已经清楚地描述了我的愿望。如果有疑问,请询问!
答案1
MWE 中的配置文件与在 html 页面上创建段落的parformat
插入<p>
和标签挂钩。 (打印句子编号)不用于单句段落,因此在这种情况下不会插入 html 标签。<span>
parformat
一个可能的解决方案是连接到\Clause
或到,\par
但这只作为练习(即我不知道如何做到这一点)。
一种解决方法是在所有情况下稍微修改一下scrjura.sty
call parformat
。为了保持当前输出(单个句子没有数字),parformat
还应修改其自身的定义以显示参数,允许使用空参数调用单个句子,使用句子编号调用多个句子。
修改时parformat
,必须在 中指示参数的使用scrjura.cfg
,通过使用defI
而不是def
。
梅威瑟:
scrjura.sty
\newcommand*{\parformat}[1]{#1} % was: \newcommand*{\parformat}{(\thepar)}
[...]
\ifnum \@tempcnta>\@ne %at the end of \newcommand*{\contract@everypar}
{\usekomafont{parnumber}{\parformat{(\thepar)}\nobreakspace}}% % modified %
\else
\def\reserved@a{\relax}%
\ifx\@tempa\reserved@a
\parformat{}% % modified/added (originally empty clause) %
\else
{\usekomafont{parnumber}{\parformat{(\thepar)}\nobreakspace}}% % modified %
\fi
\fi
scrjura.cfg
[...]
\pend:defI\parformat{\a:parformat}
\append:defI\parformat{\b:parformat}
[...]
结果: