我为我的文档创建了三个环境:一本寻宝小册子scrreprt
。
我创建了 3 个环境(文档是法语的):
谜:
\newenvironment{enigme}{\refstepcounter{enigme}\vspace{0.5cm}{\bfseries Énigme \theenigme\ : \\}}{\par\vspace{0.5cm}}
路线指示:
\newenvironment{path}{\vspace{0.5cm}{\bfseries \textcolor{DarkBlue}{Parcours :} \\}}{\par\vspace{0.5cm}}
文化指征:
\newcommand{\culture}[1]{\emph{#1.}}
它运行完美,但问题是,有时候,“Énigme”或“Parcours”这些词,或者我的文化标志的标题在页面末尾是孤立的。
\newcommand
我该怎么做才能避免这种情况? 我可以在and中添加测试吗\newenvironment
? 类似\if@lastlineofpage
或类似的东西...
当然,我尝试了著名的
\widowpenalty10000
\clubpenalty10000
什么都没改变。我认为解决我的问题的说明应该写在\newcommand...
感谢您的帮助。
这是该文件的标题:
\documentclass[12pt,a5paper,twoside=yes]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{lmodern}
\renewcommand*\familydefault{\sfdefault} %% Only if the base font of the document is to be sans serif
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[pdftex]{graphicx}
\usepackage{lmodern}
\usepackage{subfig}
\usepackage[svgnames]{xcolor}
\usepackage{wrapfig}
\usepackage{fancybox}
答案1
可以使用类似盒子的环境来防止孤立标题,这还允许更多的设计和自动计数(类似于 Sigur 提出的定理)
我使用了我最喜欢的一个软件包—— tcolorbox
(不幸的是,我不是这个软件包的作者:-()
颜色、框架可以随意改变,作为环境的可选参数。不breakable
在环境的选项列表中 使用说明符,因为这可能会再次留下孤立的标题等。
\documentclass[12pt,a5paper,twoside=yes]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{lmodern}
\renewcommand*\familydefault{\sfdefault} %% Only if the base font of the document is to be sans serif
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[pdftex]{graphicx}
\usepackage{lmodern}
\usepackage{subfig}
\usepackage[svgnames]{xcolor}
\usepackage{wrapfig}
\usepackage{fancybox}
\usepackage[most]{tcolorbox}
\newtcolorbox[auto counter]{enigme}[1][]{title={\bfseries Énigme~\thetcbcounter:},colbacktitle=red,coltitle=black,#1}
\newtcolorbox{path}[1][]{title={\bfseries Parcours:},coltitle=DarkBlue,colbacktitle=yellow,#1}
\newcommand{\culture}[1]{\emph{#1.}}
\begin{document}
\begin{enigme}
Aujourd'hui nous cherchons les chiens ;-)
\end{enigme}
\begin{path}
Nous allons
\end{path}
\culture{Mais oui}
\end{document}
编辑
现在,在框的上方和下方都有间距,并且没有框架,以显示可选参数的用法。
\documentclass[12pt,a5paper,twoside=yes]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{lmodern}
\renewcommand*\familydefault{\sfdefault} %% Only if the base font of the document is to be sans serif
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[pdftex]{graphicx}
\usepackage{lmodern}
\usepackage{subfig}
\usepackage[svgnames]{xcolor}
\usepackage{wrapfig}
\usepackage{fancybox}
\usepackage[most]{tcolorbox}
\newtcolorbox[auto counter]{enigme}[1][]{enhanced,title={\bfseries Énigme~\thetcbcounter:},before skip=0.5cm,after skip=0.5cm,colbacktitle=red,coltitle=black,#1}
\newtcolorbox{path}[1][]{enhanced,title={\bfseries Parcours:},coltitle=DarkBlue,colbacktitle=yellow,before skip=1.5cm, after skip=2cm,#1}
\newcommand{\culture}[1]{\emph{#1.}}
\begin{document}
\begin{enigme}
Aujourd'hui nous cherchons les chiens ;-)
\end{enigme}
\begin{path}
Nous allons
\end{path}
\culture{Mais oui}
\begin{enigme}[colback=green,breakable]
Aujourd'hui nous cherchons les chats ;-)
\end{enigme}
\begin{path}[colback=white,colbacktitle=white,coltitle=black,frame hidden]
Avant la maison
\end{path}
\end{document}
下次编辑
根据 OP 的要求,拥有一个自己的计数器并让它从零开始,使用
\newcounter{enigme}
\setcounter{enigme}{-1}
\newtcolorbox[use counter=enigme]{enigme}[1][]{enhanced,title={\bfseries Énigme~\thetcbcounter:},before skip=0.5cm,after skip=0.5cm,colbacktitle=red,coltitle=black,#1}
代替
\newtcolorbox[auto counter]{enigme}[1][]{enhanced,title={\bfseries Énigme~\thetcbcounter:},before skip=0.5cm,after skip=0.5cm,colbacktitle=red,coltitle=black,#1}