Попытка добиться следующего заставила меня задуматься:
Конвертировать вывод Unix cal
в код латексной таблицы, используя короткий и приятный однострочный (или многострочный).
Например, cal -h 02 2012 | $magicline
должно дать
Mo &Tu &We &Th &Fr \\
& & 1 & 2 & 3 \\
6 & 7 & 8 & 9 &10 \\
13 &14 &15 &16 &17 \\
20 &21 &22 &23 &24 \\
27 &28 & & & \\
Единственное разумное решение, которое я мог найти до сих пор, было
cal -h | sed -r -e '1d' -e \
's/^(..)?(...)?(...)?(...)?(...)?(...)?(...)?$/\2\t\&\3\t\&\4\t\&\5\t\&\6\t\\\\/'
... и я очень старался.Хорошая вещь о том, что это несложно и легко для понимания, плохая вещь о том, что он «негибкий» (он не может справиться с 8-недельной неделей) и немного многословно.Я ищу альтернативные решения, чтобы учиться; -)
РЕДАКТИРОВАТЬ: Нашел другое, которое кажется приемлемым
cal -h | tail -n +2 |
perl -ne 'chomp;
$,="\t&";
$\="\t\\\\\n";
$line=$_;
print map {substr($line,$_*3,3)} (1..5)'
РЕДАКТИРОВАТЬ: Хороший:
cal -h | perl \
-F'(.{1,3})' -ane \
'BEGIN{$,="\t&";$\="\t\\\\\n"}
next if $.==1;
print @F[3,5,7,9,11]'