Benötigte CSS-/LESS-Einstellungen

Für die Umsetzung der PIs ist die LESS-Datei modul_pi.less mit folgenden Einstellungen notwendig:

/* -----------------------------------------------------------------------
 *
 * @project    parsX - PrintCSS - CSS/LESS-Modul
 *
 * - PI-Modul -
 *
 * Dies ist ein CSS/LESS-Modul. In dieser CSS/LESS-Datei dürfen ausschließlich
 * Einstellungen zur Umbruchsteuerung (parsX-PI's) deklariert sein.
 * Zentrale CSS/LESS-Settings sind in der CSS/LESS-Datei stylesheet.css/less
 * zu definieren.
 *
 * @date       2020-01-14
 * @author     Christin Sandmann-Götz, pagina GmbH
 * @last-edit  cg
 * @copyright  pagina GmbH, Tübingen
 *
 * ----------------------------------------------------------------------- */

/* -----------------------------------------------------------------------
 * Hinweis: Diese Datei enthält die LESS-Variable und LESS-Mixin:
 * - @leerzeile
 *
 * Die CSS-Anweisungen für diese Variabeln und Mixins müssen
 * in der zentralen LESS-Datei stylesheet.less definiert sein!
 * ----------------------------------------------------------------------- */

pa {
	/* -------------------------------------------------- */
	/* Element-Typ-Deklaration                            */
	/* -------------------------------------------------- */
	&|* {
		display: block;
	}

	&|pi-nz-,
	&|pi-tv {
		display: inline;
	}

	/* -------------------------------------------------- */
	/* globale Einstellungen                              */
	/* -------------------------------------------------- */
	/* Vererbung von Auszeichnungen */
	&|* {
		color: inherit;
		font: inherit;
	}

	/* -------------------------------------------------- */
	/* Umbruchsteuerung                                   */
	/* -------------------------------------------------- */
	/* neue Seite - Allgemein */
	&|pi-ns,
	&|pi-nsr,
	&|pi-nsl {
		leerzeile + & + abs,
		u-zwischen + & + abs {
			text-indent: 0;
		}
	}

	/* neue Seite */
	&|pi-ns {
		page-break-after: always;
	}

	/* neue rechte Seite */
	&|pi-nsr {
		page-break-after: right;
	}

	/* neue linke Seite */
	&|pi-nsl {
		page-break-after: left;
	}

	/* neue Spalte */
	&|pi-nsp {
		column-break-after: always;
	}

	/* Zeilenwechsel */
	/* pi <?parsx nz?> wird zum Element <br> transformiert */

	/* Zeilenwechsel mit Trennstrich */
	&|pi-nz- {
		&::before {
			content: '-';
		}
		&::after {
			content: '\A';
			display: block;
		}
	}

	/* Zeilenwechsel, der austreibt */
	&|pi-nza {
		text-align-last: justify !important;
		text-indent: inherit !important;

		/* Vermeidung des Zeilenaustriebes auf die Anmerkungselemente <fussnote />, <endnote />, <marginalie /> */
		& fussnote,
		& endnote,
		& marginalie {
			&, & * {
				text-align-last: left;
			}
		}
	}

	/* Zeilenwechsel, der austreibt mit Trennstrich */
	&|pi-nza- {
		display: inline;
		content: '-';
		text-indent: inherit !important;
	}

	/* Trennfuge */
	/* pi <?parsx tf?> wird zum Entity &#x00AD; (&shy;) transformiert */

	/* Trennverbot */
	&|pi-tv {
		hyphens: none;
	}

	/* Leerzeile */
	/* pi <?parsx lz?> wird zum Element <leerzeile> transformiert */

	/* halbe Leerzeile */
	&|pi-lzh {
		margin-bottom: (@leerzeile / 2);
	}

}


/* [#12025] Customer Hurenkinder-Einstellungen dürfen für <?printcss nza-?>, <?printcss nza?>, <?printcss nz?> NICHT greifen */
pa {
	&|pi-nza-,
	&|pi-nza,
	&|pi-nz {
		/* Hurenkinder */
		widows: 1 !important;
	}
}
/* [#12025] Customer Schusterjungen-Einstellungen dürfen für generierten Absatz nach <?printcss nza-?>, <?printcss nza?>, <?printcss nz?> NICHT greifen */
abs[abs-after-pi-nza='ja']{
	/* Schusterjungen */
	orphans: 1 !important;
}





/* -------------------------------------------------- */
/* Schriftlaufweite [#8730] [#4947]                   */
/* Wortabstand [#9491]                                */
/* -------------------------------------------------- */

// Berechnung von Schriftlaufweite (quelle: http://www.web-publisher.info/20100917_letter-spacing-kerning-laufweite-spationierung/)
// 1 Geviert = 1em
@paPi-geviert: 1em;

// In InDesign® wird die Schriftlaufweite sowie das manuelle Kerning in 1/1000 Geviert gemessen, einer Maßeinheit relativ zum aktuellen Schriftgrad. (quelle: https://www.typolexikon.de/schriftlaufweite/)
// Übersicht Geviertwerte bei Schriftlaufweiten (DTP, basis InDesign®)
// Extrem eng		-100/1000 Geviert
//							-075/1000 Geviert
// Sehr eng			-050/1000 Geviert
//							-020/1000 Geviert
// Eng					-010/1000 Geviert
//							-005/1000 Geviert
// Normalsschriftweite (NSW)	Laufweite 0 (LW 0)
//							+005/1000 Geviert
// Weit					+010/1000 Geviert
//							+025/1000 Geviert
// Sehr weit		+050/1000 Geviert
//							+075/1000 Geviert
// Extrem weit	+100/1000 Geviert
// Ultra weit		+200/1000 Geviert

/* Schriftlaufweite normal (Normalsschriftweite)*/
[pa|pi-lw="lw0"],
[pa|pi-lw="nsw"] {
	letter-spacing: normal;
}

/* Schriftlaufweite vergrößern (Spationieren) */
// Zahlwerte
.generateSchriftlaufweiteVergroessern(200);
.generateSchriftlaufweiteVergroessern(@n, @i: 5) when (@i =< @n) {
	[pa|pi-lw="lw+@{i}"] {
		letter-spacing: (@i / (1000 * @paPi-geviert));
	}
	.generateSchriftlaufweiteVergroessern(@n, (@i + 5));
}
// Wortwerte
.SchriftlaufweiteVergroessern(@i) {
	letter-spacing: (@i / (1000 * @paPi-geviert));
}
[pa|pi-lw="weit"] {
	.SchriftlaufweiteVergroessern(10);
}
[pa|pi-lw="sehr-weit"] {
	.SchriftlaufweiteVergroessern(50);
}
[pa|pi-lw="extrem-weit"] {
	.SchriftlaufweiteVergroessern(100);
}
[pa|pi-lw="ultra-weit"] {
	.SchriftlaufweiteVergroessern(200);
}


/* Schriftlaufweite verkleinern (Unterschneiden) */
// Zahlwerte
.generateSchriftlaufweiteVerkleinern(200);
.generateSchriftlaufweiteVerkleinern(@n, @i: 5) when (@i =< @n) {
	[pa|pi-lw="lw-@{i}"] {
		letter-spacing: -(@i / (1000 * @paPi-geviert));
	}
	.generateSchriftlaufweiteVerkleinern(@n, (@i + 5));
}
// Wortwerte
.SchriftlaufweiteVerkleinern(@i) {
	letter-spacing: -(@i / (1000 * @paPi-geviert));
}
[pa|pi-lw="eng"] {
	.SchriftlaufweiteVerkleinern(10);
}
[pa|pi-lw="sehr-eng"] {
	.SchriftlaufweiteVerkleinern(50);
}
[pa|pi-lw="extrem-eng"] {
	.SchriftlaufweiteVerkleinern(100);
}



/* Wortabstand normal */
[pa|pi-wa="wa0"] {
	word-spacing: normal;
}


/* Wortabstand vergrößern */
.generateWortabstandVergroessern(500);
.generateWortabstandVergroessern(@n, @i: 10) when (@i =< @n) {
	[pa|pi-wa="wa+@{i}"] {
		word-spacing: (@i / (1000 * @paPi-geviert));
	}
	.generateWortabstandVergroessern(@n, (@i + 10));
}
.WortabstandVergroessern(@i) {
	word-spacing: (@i / (1000 * @paPi-geviert));
}


/* Wortabstand verkleinern */
.generateWortabstandVerkleinern(500);
.generateWortabstandVerkleinern(@n, @i: 10) when (@i =< @n) {
	[pa|pi-wa="wa-@{i}"] {
		word-spacing: -(@i / (1000 * @paPi-geviert));
	}
	.generateWortabstandVerkleinern(@n, (@i + 10));
}
.WortabstandVerkleinern(@i) {
	word-spacing: -(@i / (1000 * @paPi-geviert));
}




/* -------------------------------------------------- */
/* Uebersatz     [#8729] [#4947]                      */
/* -------------------------------------------------- */

[pa|pi-ue="true"] {
	position: absolute;
}


/* -----------------------------------------------------------------------
 * ENDE PI-Modul
 * ----------------------------------------------------------------------- */

Die LESS-Datei modul_pi.less muss aus der Basis-LESS-Datei stylesheet.less am Ende des Dokumentes referenziert werden.

@charset "utf-8";
@namespace pa "http://www.pagina-online.de";

...

/* -------------------------------------------------- */
/* PIs												  */
/* -------------------------------------------------- */
@import "basis-module/modul_pi.less";