Видео смотреть бесплатно

Смотреть гиг видео

Официальный сайт rostobrnadzor 24/7/365

Смотреть видео бесплатно

24.04.10 21:30 h0rr0rr_drag0n

СкриптыСкрипт, подсвечивающий исходный код для LaTeX'а.

В одном прошлом посте был найден нормально работающий способ, позволяющий вставлять расцвеченный код в LaTeX документ при помощи утилиты source-highlight. Но есть один недостаток - приходится самому вызывать эту утилиту для множества исходных файлов, а затем копировать вывод утилиты или путь к полученному tex-файлу в свой основной LaTeX документ.
В результате, как тру-ленивый линуксоид, я написал скрипт, который делает часть основной работы за меня.

Скрипт ищет исходники в текущем каталоге, создает "подсвеченные" tex-файлы и выводит на консоль команды, которые стоит вставить в LaTeX документ, чтобы получить расцвеченные исходники.
При наличии в текущем каталоге одного файла main.c, мы получим следующий вывод:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

main.c : C source file

==============================================================

Insert this commands to your LaTeX document:

% Listing for main.c
\begin{tabular}{p{130mm}}
\rowcolor[gray]{0.7} \textbf{Листинг:} main.c \\
\end{tabular}
\input{/home/drag0n/test/latex-colorized/main.c.tex}


==============================================================

insert this string to LaTeX preamble:
\usepackage[usenames,dvipsnames]{color}
\usepackage{colortbl}
 


В текущем каталоге, будет создан каталог latex-сolorized, с расцвеченным кодом. При вставке соответствующих строк в LaTeX документ, мы получим это:
=latex-output

В данный момент, скрипт поддерживает обработку исходников на C, Java и Bash. Добавить поддержку других языков достаточно просто путем добавления еще одной ветки в единственное условие выбора case/esac в скрипте.

Код скрипта:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

#!/bin/bash

SH=source-highlight
DIR=latex-colorized

if [ ! -d "$DIR" ]; then
    mkdir $DIR &> /dev/null
fi

for SOURCEFILE in *; do
    EXTENSION=`echo $SOURCEFILE | sed -r 's/.+\.(.*)/\1/g'`
    case $EXTENSION in
        "c")
        echo "$SOURCEFILE : C source file"
        $SH --src-lang=c --out-format=latexcolor --input=$SOURCEFILE \
        --output=$DIR/$SOURCEFILE.tex --line-number
        ;;
        "h")
        echo "$SOURCEFILE : Header file"
        $SH --src-lang=c --out-format=latexcolor --input=$SOURCEFILE \
        --output=$DIR/$SOURCEFILE.tex --line-number
        ;;
        "java")
        echo "$SOURCEFILE : Java source file"
        $SH --src-lang=java --out-format=latexcolor --input=$SOURCEFILE \
        --output=$DIR/$SOURCEFILE.tex --line-number
        ;;
        "sh")
        echo "$SOURCEFILE : Bash script file"
        $SH --src-lang=bash --out-format=latexcolor --input=$SOURCEFILE \
        --output=$DIR/$SOURCEFILE.tex --line-number
        ;;
    esac
done

echo
echo "=============================================================="
echo
echo "Insert this commands to your LaTeX document:"
echo
cd $DIR
for FILE in *; do
    echo '% Listing for '"`echo $FILE | sed -r 's/(.*)\.tex/\1/g'`"
    echo '\begin{tabular}{p{130mm}}'
    echo '\rowcolor[gray]{0.7} \textbf{Листинг:} '"`echo $FILE | sed -r 's/(.*)\.tex/\1/g'`"' \'
    echo '\end{tabular}'
    echo '\input{'`pwd`'/'$FILE'}'
    echo
done

echo
echo "=============================================================="
echo
echo "insert this string to LaTeX preamble:"
echo '\usepackage[usenames,dvipsnames]{color}'
echo '\usepackage{colortbl}'
echo
 


Теги:

digiwhite 24.04.10 22:13 # +2
Раскройте для меня, для подготовки чего это используется? Создание в конечном итоге бумажной документации по коду?
chemikadze 25.04.10 10:19 # +0
А для чего же еще?)
digiwhite 25.04.10 10:29 # +0
А подсветка синтаксиса тогда зачем? Хотя... в pdf сконвертировать же можно потом, так?
chemikadze 25.04.10 10:35 # +1
Или PostScript, по вкусу. Потом печатаем, получаем няшненькие исходники, препод/шеф/RMS доволен.
kstep 25.04.10 02:36 # +3
В коде нарушен принцип DRY. Надо как минимум вынести операцию:
1
2
3
echo  "$SOURCEFILE : Bash script file"
$SH --src-lang=bash --out-format=latexcolor --input=$SOURCEFILE \
    --output=$DIR/$SOURCEFILE.tex --line-number
в отдельную процедуру.
cblp 25.04.10 13:10 # +1
Поддерживаю. И "--out-format=latexcolor --line-number" в $SH вписать.
chemikadze 25.04.10 10:21 # +2
Аффтар, спасибо. Как раз собирался в LaTeX верстать лабу, все думал как код подсвечивать.

Лучшие блоги (все 113)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 2170 из 161 города)
Топ пользователей Топ блогов
welinux.ru

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн