Traducerea liniilor

Avansul de linie , sau ruptura de linie , este continuarea tipăririi textului de pe o linie nouă, adică de la marginea din stânga la linia de mai jos sau deja pe pagina următoare. Pe computere, acest lucru se face cu tasta Enter .

Separatorul de linie , care indică locul întreruperii de linie, în datele text este unul sau o pereche de caractere de control , iar în textul marcat este și o anumită etichetă (în HTML -  eticheta  <br> , din engleză  break  - „ pauză"). Separatorul de linii este numit și doar o nouă linie atunci când nu este nevoie să le distingem.

Alături de alte acțiuni, se efectuează și un avans de linie înainte de următorul paragraf sau pagină.

Terminologie

Fluxul de linie este abreviat ca NEL (din limba engleză  următoarea linie  - „de la următoarea linie, mergeți la următoarea linie”, sau newline  - „de la o nouă linie, mergeți la o nouă linie”).

Carriage return ( CR ) esteun caracter de control ASCII  ( 0x 0D , 13 10 , '\r') care mută cursorul la marginea stângă a câmpului. Acest caracter de control este introdus cu tasta Enter . Când este scris într- un fișier , acesta este tratat ca o linie nouă în sine numai pe sistemele Macintosh .

Feed per line sau Translation per line (din limba engleză  line feed , LF  - „feed [paper] per line”) este un caracter de control ASCII ( 0x0A , 10 în notație zecimală, „\n”), când este afișat, cursorul se mișcă la rândul următor. În cazul unei imprimante , aceasta înseamnă mutarea hârtiei în sus, în cazul unui afișaj , mutarea  cursorului în jos dacă mai este loc și derularea textului în sus dacă cursorul se afla pe linia de jos. Dacă acest lucru întoarce cursorul la marginea stângă sau nu, depinde de implementare.

Astfel, ieșirea secvenței CR + LF în semantica terminalului garantează acțiunea „creați o nouă linie”.

Terminalele (și emulatorii lor) pot efectua și diverse transformări de caractere (de exemplu LF → CR + LF , CR → CR + LF ) la introducerea și ieșirea textului.

Hard return , uneori o returnare hardware  , este un separator de linie furnizat de utilizator. În reprezentarea automată a textului, o întoarcere dură este exprimată în mod explicit, de obicei prin caractere de control sau o etichetă .

O revenire soft  este un avans de linie efectuat de un procesor de text în punctul din text pe care l-a ales. O returnare soft separă linii de text în reprezentarea sa vizuală (vizibilă de utilizator), dar nu poate fi exprimată în niciun fel în reprezentarea mașină a textului respectiv.

În ASCII

Sistemele bazate pe ASCII sau un set de caractere compatibil folosesc fie LF (line feed, 0x 0A ) fie CR (carriage return, 0x0D ) singur, fie secvența CR + LF ; vezi mai jos pentru motivul istoric al convenției CR + LF . Aceste nume se bazează pe comenzile imprimantei: un avans de linie avansează tamburul cu o linie, iar o întoarcere a carului înseamnă că carul imprimantei ar trebui să se întoarcă la începutul liniei curente.

În Unicode

În mod standard, orice aplicație compatibilă cu Unicode ar trebui să trateze fiecare dintre următoarele caractere ca o nouă linie:

Secvența CR + LF ( U+000D U+000A ) ar trebui tratată ca o nouă linie, nu două [1] .

Dificultăți

Nu există abrevieri general acceptate pentru termenii rusi. VK ( Back to the carriage ) coincide în ortografie cu abrevierea din engleză.  BreaK („break [line]”, - la fel ca line feed), iar PS nu face distincție între Feed from the line și Transfer from the line .

Diferența de reprezentări

Lipsa unei singure reprezentări general acceptate de avans de linie în diferite sisteme de operare complică schimbul de date text între ele. Unicode încearcă să reconcilieze această diferență prin egalizarea CR , LF și CR + LF , dar intră în conflict cu ASCII moștenit atunci când tratează secvența LF + CR care nu este precedată de CR : conform ASCII, aceasta este o nouă linie și conform Unicode , Două.

Alimentarea de linie la introducerea de la tastatură este reprezentată uniform în toate sistemele - prin caracterul CR , iar în sistemele cu o reprezentare diferită a avansului de linie, datele text trebuie recodificate în formatul necesar.

Istorie

Pe sistemele de stocare cu carduri perforate , pe un card perforat era scrisă o linie, deci linia avea o lungime dată, în funcție de numărul de coloane (de obicei 80). Liniile mai scurte au fost realizate cu spații, iar liniile mai lungi au fost tăiate. Nu a existat un separator de linii și a fost presupusă o nouă linie implicită la fiecare 80 de caractere. Unele sisteme de operare mainframe timpurii au adoptat acest lucru pentru a stoca text în fișiere în care nu mai exista o limită naturală a lungimii liniei.

CR + LF

Mașinile de scris mecanic aveau o pârghie care readucea trăsura la marginea stângă a paginii și învârtea axul, deplasând hârtia pe o linie. La teletipuri și mai târziu dispozitivele de imprimare alfanumerice (ATsPU), în loc de cărucior, era un cap, la imprimantele laser a încetat să mai fie material, dar în termenul de retur de cărucior , toate acestea au continuat să fie numite cărucior pentru a nu se schimba aceasta. Pe aparatele de scris, returul carușului și avansul de linie au fost separate, de unde tradiția reprezentării fluxului de linie ca CR + LF a trecut la fișierele text.

Sfârșitul rândului

Teletipurile au fost prima dată tipărite pe rolă de hârtie, iar mesajele începeau și se terminau cu un avans de linie, astfel încât fiecare începe cu siguranță pe o linie nouă. De aici obiceiul de a include un separator de mesaje în mesajul în sine.

Un mod de operare interactiv a apărut pe computere, când mesajele de control de intrare ale utilizatorului și mesajele programului de răspuns erau tipărite pe rând. Utilizatorul după mesaj a tradus întotdeauna linia, deoarece în același timp a însemnat comanda de executat, dar programele uneori nu au tradus linia după mesajul lor, în ciuda prescripției. Dispozitivul de ieșire nu a fost adaptat inițial pentru a se asigura că terminalul poate monitoriza întreruperile de linie și a fost dificil de implementat acest lucru, prin urmare, pentru ca intrarea utilizatorului să înceapă pe o linie nouă, terminalul care controlează dialogul ar traduce, de asemenea, rând după mesajul programului. De asemenea, a fost prescris să se plaseze o întrerupere de linie la sfârșitul fișierului text.

Îngrijorarea cu privire la separarea mesajelor a căzut pe terminal și au încetat să se mai gândească la asta, iar avansul de linie de la sfârșitul textului a fost regândit ca sfârșit al ultimei rânduri, alături de care, ca sfârșit de rând, toate rupturile de rând. în general, au fost regândite, ceea ce a fost facilitat de comoditatea de a lucra cu linii completate regulat din punct de vedere al programării, asemănătoare șirurilor terminate nul . Deci obiceiul de a include separatorul de mesaje în mesaj a trecut în obiceiul de a include separatorul de linii în șir.

O linie suplimentară la sfârșitul unui fișier nu este, de obicei, o bătaie de cap, așa că avansul de linie este încă numit sfârșitul liniei, iar separatorul de linie este caracterul de sfârșit de linie (EOL, engleză  final de linie ).

Fluxul unui separator într-o remorcă și înapoi nu este doar un flux de linie. De exemplu, un punct și virgulă termină comenzile în C , dar le separă în Pascal . În vorbirea scrisă, după mai multe propoziții, aproape întotdeauna se pune un punct , iar după o singură propoziție, de cele mai multe ori nu. Această ezitare este clar vizibilă în liste , unde propozițiile individuale încep uneori cu o literă majusculă, iar uneori cu o literă mică.

Paragraf

La teletipuri, și apoi la primele editoare, împărțirea textului în paragrafe nu avea o reprezentare specială proprie, pentru aceasta se foloseau linii goale sau o indentare de mai multe spații, iar rupturile de rând în cadrul unui paragraf erau introduse manual.

Mai târziu, în editori a apărut împachetarea automată, care se realizează din mers când desenați textul din nou de fiecare dată. Pentru a-l deosebi de unul manual, s-a numit retur soft, iar unul manual s-a numit retur greu (transferul a fost numit și simplu retur, vezi secțiunea Diferență de reprezentare ). În același timp, separatorul de linii s-a transferat ca și înainte, dar a căpătat și sensul de separator de paragraf - pentru acele rânduri în care a funcționat auto-silabarea și care au devenit paragrafe. Comutatorul pentru acest mod se numește împachetare cuvinte .  Cu silabarea automată, separarea manuală a rupt paragraful, spațierea dintre paragrafe s-a făcut ca înainte (în termeni noi - prin intercalare cu un paragraf gol), dar s-a atins principala calitate a paragrafului - independența față de spargerea rândului.

Modul de transfer automat a fost activat și dezactivat manual de către utilizator, a fost dificil să se determine acest lucru în mod programatic, adică, scăpând de transferul manual, am primit o altă operație manuală. A devenit clar că spațierea mai automată a separatorului de linii și a separatorului de paragrafe era indispensabilă, adică aveau nevoie de două caractere diferite.

Pentru a nu le pesa de compatibilitatea cu separatorul de linie/paragraf deja existent în ASCII , dezvoltatorii nu au folosit caractere ASCII pentru separatorul de linii și separatorul de paragrafe. În HTML s-au folosit etichetele <br /> și <p> ​​, în Unicode  , caracterele U+2028 și , respectiv, U+2029 . În Wikipedia, paragrafele pot fi separate prin linii goale, care sunt afișate cu spațiere completă.

Vezi și

Note

  1. Unicode Standard Anexa #14: Unicode Line Breaking Algorithm Arhivat 17 februarie 2009 la Wayback Machine 

Link -uri