Portál AbcLinuxu, 8. května 2025 16:28

Dotaz: Nahrazení přímé řeči v uvozovkách za \uv v TeX souboru

Honza Balák avatar 20.11.2010 21:19 Honza Balák | skóre: 23 | blog: Jaxův linuxový zápisník | Předklášteří
Nahrazení přímé řeči v uvozovkách za \uv v TeX souboru
Přečteno: 784×
Odpovědět | Admin
Zdravím, už asi 2 hodiny se tu snažím zbastlit jeden skript a pořád nic. Kdybych to udělal ručně, tak to mám rychleji :-D. Mám TeX soubor, kde jsou texty zapsány jako "text přímé řeči" a já bych to potřeboval nahradit za \uv{text přímé řeči}. Zkoušel jsem něco jako
sed 's/\("[^\"]*\"\)/\\\uv\{\1\}/g'
a jediné, co na mě sed v lepším případě plive je
znak 29: chybný odkaz \1 na pravé straně příkazu „s“
<null>
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.11.2010 22:06 Atrament
Rozbalit Rozbalit vše Re: Nahrazení přímé řeči v uvozovkách za \uv v TeX souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
s/\"\([^"]*\)"/\\uv\{\1\}/g

ale bacha pokud ti někde chybí nebo přebývá uvozovka tak se ti ouvozovkuje něco co nechceš :)

wamba avatar 21.11.2010 13:45 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Nahrazení přímé řeči v uvozovkách za \uv v TeX souboru

přibližně totéž v Perlu:

perl -00pe 's/ " ( ?<text_v_uvozovkach> [^"]* ) " /\\uv{$+{text_v_uvozovkach}}/xg'

This would have been so hard to fix when you don't know that there is in fact an easy fix.
Honza Balák avatar 21.11.2010 19:10 Honza Balák | skóre: 23 | blog: Jaxův linuxový zápisník | Předklášteří
Rozbalit Rozbalit vše Re: Nahrazení přímé řeči v uvozovkách za \uv v TeX souboru
Funguje to pouze částečně jen na začátku dokumentu... :-(
<null>
Honza Balák avatar 21.11.2010 19:16 Honza Balák | skóre: 23 | blog: Jaxův linuxový zápisník | Předklášteří
Rozbalit Rozbalit vše Re: Nahrazení přímé řeči v uvozovkách za \uv v TeX souboru
Tak jinak. Vypadá to, že skript funguje, v další části dokumentu jsou již uvozovky typu 66 99. Teď ještě potřebuju tyto uvozovky nahradit. Ale nechápu, jak tento uváděný skript funguje. Nikde tam nevidím ty druhé (uzavírací) uvozovky...
<null>
22.11.2010 06:05 deadmail
Rozbalit Rozbalit vše Re: Nahrazení přímé řeči v uvozovkách za \uv v TeX souboru
treba si tiez dat pozor, ze to funguje len ak je vzdy cela priama rec v jednom riadku.
sed -r 's_"([^"]*)"_\\uv{\1}_g'
Ak su tam aj ine typy zatvoriek, tak spustit viackrat a nahradit " prisluchajucimi znakmi (otvaracia zatvorka a dvakrat zatvaracia).
Nicky726 avatar 22.11.2010 11:40 Nicky726 | skóre: 56 | blog: Nicky726
Rozbalit Rozbalit vše Re: Nahrazení přímé řeči v uvozovkách za \uv v TeX souboru
Nebylo by lepší nahrazovat , "` za \uv{ a ," ` za }? Tj. dva sedy a pak už jen doladit případy, kdy vyšlo něco jako: ... \uv{aaa".?
Enjoy the detours. There you’ll find the things more important than what you want. (Hunter x Hunter)
23.11.2010 16:08 deadmail
Rozbalit Rozbalit vše Re: Nahrazení přímé řeči v uvozovkách za \uv v TeX souboru
A preco dva?
sed -e 's_"\<_\\uv{_g' -e 's_"_}_g'
Nicky726 avatar 23.11.2010 20:47 Nicky726 | skóre: 56 | blog: Nicky726
Rozbalit Rozbalit vše Re: Nahrazení přímé řeči v uvozovkách za \uv v TeX souboru
No vida, tak to jde i jedním. :-) Já vím, že sed zrovna moc neovládám. :-)
Enjoy the detours. There you’ll find the things more important than what you want. (Hunter x Hunter)
28.11.2010 20:14 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Nahrazení přímé řeči v uvozovkách za \uv v TeX souboru
"dva sedy" pochopil rovnou jako sed -e jedna -e dva :) takže si každý přijde na své.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.