Jak opravit předložky na konci řádku
Stále se setkávám s problémem, kdy při psaní textů ve Wordu někdy vyjde předložka nebo jednopísmenná spojka na konci řádku. Pokud vám záleží na tom, aby na konci řádku nebyla, musí se posunout na další řádek, ale nikolik mezerníkem ani enterem! Jak to udělat správně, bez rozhození odstavců, se dočtete v tomto článku. Pokud vám návod pomohl, staňte se fanoušky na Facebooku a doporučte tyto stránky vašim známým, může se jim také hodit.
Předložky by se rozhodně neměly zobrazovat na konci řádků. Vždy je proto pojíme se slovem následujícím. Aby byla předložka společně s následujícím slovem, musíme ji z konce řádku posunout. Mnoho lidí se mylně domnívá, že jim k tomu pomůže vícekrát stisknutý mezerník, tabulátor nebo dokonce enter. Ale pozor, např. enter ukončuje odstavec a začíná odstavec nový. Vznikl by tak zcela samostatný kus textu, který by při budoucích úpravách akorát dělal neplechu.
Níže popsané klávesové zkratky fungují ve všech verzích Wordu a i v některých jiných Office aplikacích. Případné příkazy a ikony popisované níže fungují pro verzi 2007 a novější.
- Pokud je již text ve finální podobě a nebudeme v budoucnu upravovat jeho formát jako např. typ nebo velikost písma, je možné využít tzv. zalomení řádku klávesou Shift+Enter. Umístíme kurzor myši bezprostředně před předložku na konci řádku a stiskneme Shift+Enter. Text za kurzorem se posune na další řádek k následujícímu slovu. Zapneme-li zobrazení skrytých znaků (netisknutelných) volbou na kartě Domů, ikonka řeckého písmene „pí„, bude se zalomení řádku projevovat jako zalomená šipka na konci řádku. Takto můžeme v budoucnu zjistit, kde jsme zalomení řádku vložili a případně ho vymazat.
- Druhý postup, ten nejlepší, je tzv. pevná mezera. Tento znak, zapsaný místo původní mezery mezi slovy pomocí kláves Ctrl+Shift+Mezerník, natrvalo spojí tato slova a už nikdy se tato slova nerozdělí koncem řádku – budou tedy vždy společně, a to i po změně formátů písma. Pevnou mezeru Word vkládá automaticky po každé jednopísmenné předložce. Je to zajištěno díky nastavení Automatických oprav. Pevná mezera je v režimu zobrazení netisknutelných znaků rozpoznatelná jako kolečko mezi slovy.
Fungující postup pro nahrazení všech mezer za jednopísmennými slovy (předložky a spojky), je:
- otevřít okno nahrazování pomocí Ctrl+H
- do pole “Najít” zadat “<(?)> ” (bez uvozovek); kde <(?)> vyhledá právě jedno písmeno a za ním mezeru
- do pole “Nahradit čím” zadat “\1^s” (bez uvozovek); kde \1 zastupuje ono hledané písmeno a ^s znak pro pevnou mezeru
- stisknout tlačítko “Více” a zaškrtnout políčko “Použít zástupné znaky”
- stisknout tlačítko “Nahradit vše”
Máte-li otázky nebo vlastní zkušenosti, napište je do komentářů nebo si vše nechte rovnou vysvětlit na konzultaci.
27 komentáře
Snažil jsem se pomocí Wordu vysázet knihu o rozsahu 150 stran a po hromadné náhradě normálních mezer za pevné za všemi jednopísmennými předložkami obsahovaly některé řádky vizuálně příliš velké mezery. To kvůli tomu, že pevné mezery mají ve Word pevnou šířku. Začal jsem tedy experimentovat a výsledkem je následující makro, které nahradí jen normální mezery jen tam, kde by zůstala předložka na konci řádku.
Postup použití je následující:
1) Vložit makro do Wordu.
2) Nahradit všechny pevné mezery normálními.
3) Spustit makro – u 150 stránkové knihy to trvá asi 10 minut.
Kód makra:
=========
Sub vlozeniPevnychMezer()
Application.ScreenUpdating = False
Dim AscA, AscE, AscI, AscK, AscO, AscS, AscU, AscV, AscZ As Integer
AscA = Asc(„A“)
AscE = Asc(„E“)
AscI = Asc(„I“)
AscK = Asc(„K“)
AscO = Asc(„O“)
AscS = Asc(„S“)
AscU = Asc(„U“)
AscV = Asc(„V“)
AscZ = Asc(„Z“)
AscSpace = Asc(“ „)
Dim doc As Document
Set doc = ActiveDocument
Dim prevWord As Range
Set prevWord = doc.Range.Words.First
Dim prevLine As Integer
prevLine = prevWord.Information(wdFirstCharacterLineNumber)
Dim currWord As Range
For Each currWord In doc.Range.Words
Dim currLine As Integer
currLine = currWord.Information(wdFirstCharacterLineNumber)
If (prevLine currLine) Then
Dim prevWordChars As Characters
Set prevWordChars = prevWord.Characters
If (prevWordChars.Count = 2) Then
If (Asc(prevWordChars.Last) = AscSpace) Then
Select Case (Asc(UCase(prevWordChars.First.Text)))
Case AscA, AscE, AscI, AscK, AscO, AscS, AscU, AscV, AscZ
prevWordChars.Last.Text = Chr$(160)
End Select
End If
End If
End If
prevLine = currLine
Set prevWord = currWord
Next
Application.ScreenUpdating = True
End Sub
Problém „nejlepšího postupu“ je ten, že ona pevná mezera má fixní šířku, takže když je zvoleno zarovnání do bloku a, tak ona mezera vypadá často nepřirozeně, když je i několikanásobně menší, než mezera obyčejná. Předpokládám, že nejde udělat, aby se i její šířka přizpůsobovala?
Po nekonečném procházení anglického webu mě napadlo vyhledat to česky a ejhle…
Wow, díky moc za tenhle článek i Adamovi. Funguje to parádně! 🙂 (Jinak to makro mi přijde zbytečné. Postupem, který je zmíněný v článku a upravený Adamem to máte sotva za dvě minuty.)
Provedla jsem vše přesně podle toho tzv. fungujícího postupu pro nahrazení všech mezer za jednopísmennými slovy. Výsledkem toho je, že mám za všemi jednopísmennými předložkami a spojkami mezery dvě, přičemž problém s umístěním na konci řádku to nijak nevyřešilo. Naopak se mi utvořily mezery i za slovy, které na koncích řádků nejsou a nebyly míněny ani jako předložky či spojky (nýbrž třeba citoslovce). Co dělám špatně?
Vypadá to, jako byste zapomněla u bodu: do pole “Najít” zadat “<(?)> ” (bez uvozovek), nekonec dát mezeru nebo bod: stisknout tlačítko “Více” a zaškrtnout políčko “Použít zástupné znaky”.
Bože Vy jste genius! Použila jsem tu poslední možnost a je perfektní! Hrozně moc Vám děkuji!
Děkuji mnohokrát 🙂 Jste frajer. Odkaz na Vaše webovky šířím s radostí dál.