Hoe Troff te gebruiken om PDF-documenten in Linux te formatteren
Troff is een eenvoudige maar krachtige document-tekstverwerker voor Linux-systemen. Hiermee kunt u eenvoudig drukklare documenten maken door bronbestanden vanaf de opdrachtregel te compileren. in tegenstelling tot Latex Troff is ongelooflijk licht van gewicht en wordt vooraf geïnstalleerd op de meeste Linux-systemen. Deze zelfstudie laat zien hoe u Troff gebruikt om PDF-documenten in Ubuntu op te maken.
Wat is Troff en waarom gebruik je het?
in de meest elementaire zin, trofee Het is een tekstverwerkingsprogramma dat scripts die op code lijken, omzet in afdrukbare documenten. In tegenstelling tot tekstverwerkers vertrouwt Troff niet op het "WYSIWYG"-model. In plaats daarvan moet u bepaalde soorten code gebruiken om uw opmaak te verwerken.
Eenvoud is een van de grootste voordelen van deze stijl. De basisinstallatie van Troff bevat alles wat u nodig hebt om een document te maken. Bovendien betekent het ontbreken van een grafische gebruikersinterface dat u zelfs via SSH een document kunt maken.
Tip: leer hoe u kunt doorsturen GUI-applicaties via SSH onder Linux.
Troff installeren
Troff wordt vaak standaard gebundeld in de meeste Linux-distributies. U kunt controleren of u het in uw systeem hebt door de vlag -h uit te voeren. Dit toont een korte lijst van alle tags die de installatie van Troff accepteert.
trof -h
Er zijn gevallen waarin distributies Troff niet standaard compileren. In dit geval kunt u het installeren door naar het pakket te zoeken "grof".
Dit is een herimplementatie van de Troff- en Nroff-programma's door het GNU-project, dat een aantal nieuwe en bijgewerkte functies bevat.
U kunt groff in Ubuntu installeren met het volgende commando:
sudo apt install groff
Maak het eerste Troff-document
Net als de broncode is elk Troff-document een tekstbestand met instructies voor het maken van een document. Dit omvat zowel paginabreedte en marge als karakter- en pagina-afstand.
Met dit controleniveau kunt u het programma manipuleren om elk type document te maken. Om het eenvoudig te maken, hebben de ontwikkelaars van Troff "macro's" gemaakt die deze commando's samenvatten in een eenvoudigere syntaxis.
Een van de meest voorkomende macro's die u in Troff zult gebruiken, is Milliseconds. Er wordt een document in essaystijl gemaakt. U kunt een ms-document maken met de aanraakopdracht:
raak mijn-eerste-document.ms aan
Aangezien alle Troff-documenten tekst zijn, kunt u het document openen met een teksteditor. In mijn geval gebruik ik vim. Als alternatief kunt u een van deze teksteditors voor Linux gebruiken.
vim mijn-eerste-document.ms
Het Troff-formaat begrijpen
Alle documenten van Troff volgen een vergelijkbare structuur. Elk opmaakcommando dat u uitvoert, moet op een aparte regel staan in de inhoud die het probeert op te maken. Als zodanig zou een typisch Troff-document er als volgt uitzien:
.COMMAND1 Dit is een stuk inhoud in een Troff-document. .COMMAND2 Dit is een ander stuk inhoud in een Troff-document.
Twee van de meest elementaire opdrachten die u in milliseconden zult gebruiken, zijn TL en .PP. De eerste converteert uw tekst naar een kop en centreert deze in uw document, terwijl de laatste uw tekst opmaakt om een alinea-achtige stijl te volgen.
Het volgende fragment gebruikt bijvoorbeeld zowel de TL- als de .PP-opdracht:
.TL Mijn eerste Troff-document .PP Dit is inhoud waarvan ik wil dat het eruitziet als een alinea in mijn uiteindelijke document. Het is geen erg lange inhoud, maar het is mijn eerste Troff-document en het is iets waar ik trots op ben. Het is ongeveer drie zinnen lang en het zou goed om het document heen moeten wikkelen.
Maak vanaf hier uw document door uw bestand door te geven aan de software van Troff.
groff -ms -Tpdf ./mijn-eerste-document.ms > uitvoer.pdf
Tip: als je liever iets eenvoudigers doet, leer dan hoe Schrijven in MLA-formaat in Google Docs.
Maak vetgedrukte, cursieve en onderstreepte tekst
Net als een gewone tekstverwerker bieden de meeste Troff-macro's een aantal stijlopdrachten voor het aanpassen van documenten. Voor ms zijn dit .B en . Ik en. UL en .BX.
- De opdracht B verandert de tekst in vet.
- De opdracht .I verandert de tekst in cursief.
- UL en. BX zijn twee commando's die respectievelijk een onderstreping en een kader rond tekst tekenen.
Net als bij de bovenstaande opdrachten, vereist het gebruik van deze opdrachten in uw document dat elke stijl op een eigen regel wordt gescheiden:
.TL Mijn eerste Troff-document .PP Dit is .B-inhoud .R die ik eruit wil laten zien als een alinea in mijn uiteindelijke document. [...]
In dit voorbeeld heb ik een nieuwe regel voor een woord gemaakt "inhoud" En ik heb de opdracht .B toegevoegd om deze vetgedrukt te maken, daarna heb ik een nieuwe regel gemaakt en de opdracht .R toegevoegd. Hierdoor kan Troff terugkeren naar zijn vorige techniek.
Het is belangrijk op te merken dat u altijd de opdracht .R moet toevoegen wanneer u de stijl wijzigt. Het volgende fragment beëindigt bijvoorbeeld het .I-commando niet omdat Troff het .R-bestand erna niet heeft gezien:
.TL Mijn eerste Troff-document .PP Dit is de inhoud die ik wil weergeven als een alinea in mijn laatste document. [...]
Maak nieuwe documentsecties
Net als LaTeX ondersteunt Troff ook partitiedetectie en hiërarchie, dus u hoeft het niveau van elke header niet te ordenen en overeen te laten komen bij het bewerken.
Gebruik de opdracht .NH gevolgd door uw kopnaam om een nieuwe sectie in uw document te maken.
.TL Mijn eerste Troff-document .NH Mijn eerste kop .PP Dit is inhoud waarvan ik wil dat het eruitziet als een alinea in mijn uiteindelijke document.
Elke Troff-header bevat standaard een niveauwaarde die bepaalt hoe het programma is opgebouwd en de inhoud ervan wordt weergegeven in het uiteindelijke document. Wetende dat u deze waarde kunt wijzigen om het kopniveau aan te passen.
Het volgende creëert bijvoorbeeld een niveau 2-adres net onder het bovenliggende item:
.TL Mijn eerste Troff-document .NH Mijn eerste kop .NH 2 Mijn eerste subkop .PP Dit is inhoud waarvan ik wil dat het eruitziet als een alinea in mijn laatste document.
Afgezien van de reguliere genummerde headers, kan Troff ook lege headers maken die nog steeds de hiërarchie op documentniveau volgen.
Vervang hiervoor .NH door het SH-commando:
.TL Mijn eerste Troff-document .SH Mijn eerste kop .SH 2 Mijn eerste subkop .PP Dit is inhoud waarvan ik wil dat het eruitziet als een alinea in mijn uiteindelijke document.
Tip: leer hoe Wijzig marges in Google Docs.
Maak lijsten in Troff
De eenvoud van Troff stelt je ook in staat haar gedrag te transformeren naar wat je maar wilt. Lijsten komen bijvoorbeeld niet standaard op Troff- of ms-macro's. Desondanks kun je toch een lijst maken door een paar ms-commando's te combineren.
Elke lijst in Troff bestaat uit drie delen: inspringen, opsommingstekens en inhoud. Gebruik de opdrachten .rs en .rs om een inspringing te maken. MET BETREKKING TOT. Hierdoor springt het huidige inspringingsniveau van elke tekst daarin met vier spaties in.
.RS Dit is mijn eerste item. .MET BETREKKING TOT
Maak vervolgens het opsommingsteken voor uw menu-item met de .IP. Dit is een opdracht Alinea-inspringing die de linkermarge van de tekst vastzet op een specifieke breedte.
Met de IP-opdracht kunt u ook een aangepast opsommingsteken instellen en de ruimte ertussen en uw tekst. In dit geval zou ik mijn opsommingsteken instellen op "[1]" en vier spaties geven.
.RS .IP [1] 4 Dit is mijn eerste item. .MET BETREKKING TOT
Kopieer en plak nu uw IP-opdracht om extra menu-items te maken.
.RS .IP [1] 4 Dit is mijn eerste item. .IP [2] 4 Dit is mijn tweede item. .IP [3] 4 Dit is mijn derde item. .MET BETREKKING TOT
Automatiseer ten slotte dit proces door een aangepaste macro te maken. Het volgende fragment koppelt bijvoorbeeld mijn IP-opdracht aan QW.
.de QW .IP [-] 4 .. .RS .QW Dit is mijn eerste item. .QW Dit is mijn tweede item. .QW Dit is mijn derde item. .MET BETREKKING TOT
Maak tabellen met preprocessors in Troff
Een van de vreemde dingen aan Troff is dat de meeste functies er zijn als "Primaire behandelingen". Voor het grootste deel zijn dit binaire bestanden buiten het programma die werken door te creëren "Preprocessor-containerscripts" en converteer het naar Troff-code op laag niveau.
Tbl is een goed voorbeeld van een Troff-preprocessor. Het is een programma dat tabellen in een document beheert. De standaard Tbl-container ziet er als volgt uit:
.TS allbox ; cc c. item 1 artikel2 artikel3 artikel4 artikel5 item6.TE
- De commando's .TS en .TE vertellen Tbl dat dit een omgeving is die het kan lezen.
- De tweede regel vertelt het programma hoe deze tabel moet worden opgemaakt.
- De derde regel is een door spaties gescheiden veld dat het aantal kolommen en de uitlijning van uw tabel definieert.
- De vierde en vijfde regel zijn door tabs gescheiden velden die de inhoud van uw tabel bevatten.
Een document samenstellen met Tbl is iets anders dan een gewoon Troff-bestand. Upload eerst uw bestand:
tbl mijn-eerste-document.ms > preprocessed.ms
Voer vervolgens de uitvoer van het programma naar Troff:
groff -ms -Tpdf ./preprocessed.ms > uitvoer.pdf
Automatiseer ten slotte dit proces met behulp van UNIX-pipes:
tbl mijn-eerste-document.ms | groff -ms -Tpdf > uitvoer.pdf
Veel Gestelde Vragen:
V1: Is het mogelijk om Troff in Windows te gebruiken?
antwoord. Troff en Groff zijn standaard niet officieel overgezet naar Windows. Desondanks kunt u Groff nog steeds gebruiken met andere GNU-tools door Installeer Windows-subsysteem voor Linux.
V2: Heeft Troff een functie voor het bijhouden van bibliografieën?
antwoord. Ja. Referral is een eenvoudige preprocessor die een extern bibliografiebestand gebruikt om automatisch referenties in een Troff-document bij te houden. U kunt meer leren over hoe het werkt door de man-pagina te bezoeken door man referrer uit te voeren.
V3: Hoe kan ik de "ontbrekende DESC"-fout oplossen bij het compileren van Troff?
antwoord. Dit probleem is waarschijnlijk te wijten aan een ontbrekende afhankelijkheid in uw systeem of een niet-overeenkomend versiebestand. Om dit op te lossen, installeert u het juiste groff-pakket uit de repository van uw distributie.