SM pic - рисует элемент линии или переход между станциями (когда две разных станции связаны переходом) и принимает параметры:
1 - цвет (по умолчанию черный)
2 - конфигурация - возможные варианты соответствуют списку существующих файлов, например файлу SMicon S-X.png соответствует значение параметра S-X; не рекомендуется использовать значения O и X, потому что для этих двух файлов есть более развитые шаблоны SM dot и SM cross соответственно
SM dot - рисует кружок, обозначающий станцию (одна станция может обслуживать несколько линий) и раскрашенный горизонтальными полосками в разные цвета, и принимает параметры:
1..5 - до 5 цветов
link - название статьи, на которую этот кружок должен служить линком (рекомендуется делать линки и здесь, и через текст, см. ниже, либо только через текст); если это текущая статья, то вокруг кружка будет нарисован черный контур
type - разновидность кружка (продолжение имени файла после буквы O, по умолчанию самый простой кружок без продолжения имени)
title - текст всплывающей подсказки
SM dotv - точно как SM dot, но полоски не горизонтальные, а вертикальные
SM cross - изображает пересечение двух линий и принимает параметры:
1 - цвет "задней" линии
2 - идет ли "передняя" линия вертикально или горизонтально (буква V или H)
3 - цвет "передней" линии
type - разновидность пересечения (продолжение имени файла после буквы X, по умолчанию самое простое пересечение без продолжения имени)
SM text - изображает текст и принимает параметры:
1 - цвет текста
2 - сам текст
3 - выравнивание текста - left (по умолчанию) или right
4 - ширина ячейки в пикселях и т.п., например 100px (как правило можно не задавать)
link - название статьи, на которую этот текст должен служить линком
td - дополнительное форматирование для ячейки таблицы, которую строит шаблон, например colspan=3
SM empty - создает пустую клетку таблицы и принимает один параметр:
1 - ширина клетки в столбцах (для HTML-параметра colspan). Если параметр не задан, шаблон не возвращает ничего; даже значение 1 надо задавать явно; это требуется для корректной работы шаблона при его вызове из SM smart
SM smart - соединяет в себе SM dot, SM text и SM empty, изображая станцию и подпись при ней, и принимает параметры:
1..5 - до 5 цветов (если цвет всего один, то им же пишется и подпись; если больше, то подпись пишется черным)
link - название статьи, на которую строится линк; линк появляется и у кружка, и у подписи
text - текст подписи; подпись строится поверх таблицы и не занимает отдельных клеток; для отмены текста надо задать параметр side=none; тот же текст появляется и в качестве всплывающей подсказки
type - разновидность кружка
side - с какой стороны от кружка находится текст - right (по умолчанию), left или none
X - смещение подписи вправо в столбцах при side=right или влево при side=left (начальное положение 10 пикселей от кружка до ближайшего конца подписи)
Y - смещение подписи вниз в строках (может быть отрицательным; начальное положение подписи в одной строке с кружком)
dir - можно поставить значение v, чтобы полоски у кружка шли по вертикали
SM head - предназначен для первой строки таблицы. Рисует клетки, задающие форматирование для всех последующих строк. Поддерживает до 10 клеток; если нужно больше, то надо поставить этот шаблон несколько раз подряд. Шаблон принимает один параметр:
1 - количество клеток (по умолчанию 10)
SM before - ставится в самом начале схемы, когда она оформляется как отдельный шаблон, и принимает параметры:
1 - продолжение текста заголовка после слова "Станции" (например: "Московского метрополитена")
2 - CSS style для внешнего div'а шаблона
3 - CSS style для таблицы, образующей собственно схему
SM after - ставится в самом конце схемы, когда она оформляется как отдельный шаблон
SM call - вызывает одну из схем, построенных при помощи вышеописанных шаблонов, и принимает параметры:
1 - название шаблона со схемой
side - left или (по умолчанию) right, с какой стороны страницы должен быть показан шаблон
Все файлы
станция с остановкой на всех путях; станция со сквозными путями; обозначение текущей станции; ссылка на статью, но не про станцию
O
OO
Cur
OQ
прямой участок линии, пересечение линий
NS
WE
X
изогнутый участок линии
NE
SE
SW
NW
Т-образный перекресток
3-N
3-E
3-S
3-W
развилка на 3 направления
N-X
E-X
S-X
W-X
развилка налево и направо
N-WE
E-NS
S-WE
W-NS
развилка прямо и налево
N-SE
E-WS
S-NW
W-EN
развилка прямо и направо
N-SW
E-WN
S-NE
W-ES
прямой переход
T-WE
T-NS
изогнутый переход
T-NE
T-SE
T-SW
T-NW
Примечания
Эта серия шаблонов принимает описание цвета через параметры, в самих файлах нет никаких цветов, кроме белого цвета, который воспринимается как фон схемы. Поэтому есть возможность строить схемы для любых городов с любыми цветами, даже если код цвета в свою очередь задается через шаблон. Платой за эту гибкость служит необходимость включить распечатку фона при распечатывании схем, построенных таким образом.
Следует не путать пересадочную станцию, обозначаемую полосатым кружком, и две станции с переходом между ними. При этом для пересадочного узла, состоящего из нескольких соединенных станций, не обязательно показывать, какая станция с какой соединена и какая с какой нет, - достаточно произвольным образом связать все нужные станции между собой.
Каждый из шаблонов образует ячейку таблицы, начиная с символа |. Начало таблицы (и еще кое-что) создается шаблоном SM before, а конец (и еще кое-что) шаблоном SM after. Схема состоит из шаблонов в следующем порядке:
SM before
SM head нужное число раз в соответствии с шириной таблицы
строки таблицы, начинающиеся с |- каждая
SM after
Для схемы с надписями: если ячейка образована шаблоном SM text без текста, то можно внутрь ее (просто следующими строчками под этим шаблоном) вставить вложенную таблицу, образованную по тем же правилам.
Заменить вычисление надписи на ее прямую передачу через параметр. Функции работы со строками едят ресурсы. Сделано, заодно на схеме Нью-Йорка добавлены к надписям обозначения маршрутов
Перевести файлы в svg и заменить фон на белый. Сделано, большое спасибо Hellerick
Привести все цвета линий к стандартным. Сделано
Пока не сделано
Показать названия на том варианте схемы, где их нет. Сделано почти, надпись показывается только при поиске в браузере, но пока с проблемами...
Придумать более внятное обозначение для текущей станции.
Не сделано и скорее всего не будет
Оптимизировать код. Сейчас на примере схемы Москвы получается примерно 200K на примерно 200 ссылок, т.е. 1K на станцию, и это надо уменьшить на порядок.
Во-первых, это вряд ли возможно. Один кружочек со ссылкой на статью в результирующем HTML'е выглядит так:
Здесь первый выделенный кусок текста является ссылкой на статью, а три следующих ссылками на три версии графического файла. Всё генерится автоматически, и это уже 0,5K, и уменьшить это нельзя.
Во-вторых, я не уверен, что это является проблемой.
Во-вторых-вторых, схема Московского метро, которая стоит в статье (причем не сам файл, а всего лишь превьюшка, на которой не то что кликнуть по конкретной станции, даже разглядеть ничего нельзя) весит 74K. Поэтому полагаю, что 200K для полноценной интерактивной схемы очень даже немного.