From 4e492610fc7d071f7554e37d250495c14d4c4f55 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Wed, 19 Oct 2016 23:28:50 +0300 Subject: [PATCH] =?utf8?q?Texinfo=20=D0=B8=20=D0=BF=D1=80=D0=B0=D0=B2?= =?utf8?q?=D0=BA=D0=B0=20=D0=B5=D0=B3=D0=BE=20HTML-=D0=B2=D1=8B=D1=85?= =?utf8?q?=D0=BB=D0=BE=D0=BF=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D1=80=D1=83?= =?utf8?q?=D1=81=D1=81=D0=BA=D0=BE=D0=B3=D0=BE=20=D1=8F=D0=B7=D1=8B=D0=BA?= =?utf8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Texinfo мне ОЧЕНЬ нравится как формат. Я местами "задрот" в плане документации и за годы перепробовал всякое и Texinfo мне пока однозначно больше всего остального нравится. Но кроме его HTML представления. Точнее HTML результата для не-английского языка. Проблема в том что он создаёт навигационные панели на каждой странице, которые содержат названия нод. Эти же названия нод в виде кириллицы преобразуются в названия файлов. И тут вот проблема: либо мы имеем английские названия файлов (contacts, links, overview) и имеем английский язык в меню навигации, либо мы имеем русский язык в меню навигации и транслитерируемые файлы (kontakty, ssylki, obzor). Можно сделать @anchor{}-ы и у нас появятся английские файлы ссылающиеся на русскоязычные ноды. Но штатно "перемещаясь" по сайту нельзя просто так взять текущий URL и иметь в нём Links.html, только если заранее знать что там есть Links файл. Ничего лучше не придумал как просто пост-обработать весь HTML результат. Само преобразование из Texinfo в HTML производится Perl скриптом... на почти 8000 тысяч строк кода. Это перебор и я не смог в нём как-то разобраться чтобы понять что надо подправить чтобы он в навигацию вместо названия нод подставлял названия секций. Сам скрипт получился очень простым и вроде как отлично делающим то что надо. Сайты http://www.cypherpunks.ru и http://cryptoparty.ru уже пост-обрабатываются им. #!/usr/bin/env perl use strict; use warnings; my %rels; my $header = 0; my $printed = 0; while(){ ($rels{$2} = $1) if /^$/){ print "$_

"; if(defined $rels{"prev"}){ print "[<<<]"; }; if(defined $rels{"up"}){ print "[^^^]"; }; if(defined $rels{"next"}){ print "[>>>]"; }; $header++; }; if($header && /^<.div>$/){ print "

$_"; $header--; }; next if $header; print; }; -- 2.48.1