Что значит отформатировать текст на фикбуке
Синхронизация текста с Фикбука на АТ. Практическое руководство
Некоторые из нас выкладывают один и тот же свой текст на нескольких ресурсах одновременно. Нередко я вижу здесь людей, как и я, перешедших на АТ с Фикбука (здесь и далее КФ, Книга Фанфиков), но всё ещё держащих свои тексты одновременно и на АТ, и на КФ, даром что политика обоих сайтов позволяет это делать без каких-либо санкций. Однако, в отличие от случая миграции с других литературных ресурсов, мы сталкиваемся с довольно неприятной ситуацией сильного различия в форматировании текста.
Если на большинстве ресурсов чтобы синхронизировать правки между текстами достаточно просто открыть встроенные редакторы и сделать банальное Ctrl+C, Ctrl+V, то с КФ такой номер попросту не прокатит. Кто был там, тот знает, почему. Потому что вот почему:
А ты думал, легко будет?
Да-да, она самая, html-подобная разметка, которая будет бесить вас временами до нервного тика.
КФ предоставляет нам практически уникальный среди литературных ресурсов инструмент, а именно – публичную бету (ПБ), возможность читателю ненавязчиво указать автору на ошибки в его тексте. Конечно, КФ – не единственный сайт, на котором есть подобная функция. Как минимум, аналогичное средство обратной связи с автором есть и на некоторых новостных ресурсах. В любом случае, КФ является в этом плане на данный момент наиболее удобным литературным ресурсом, поскольку позволяет спамить в ПБ в том числе и самому себе, таким образом существенно облегчая вычитку. И это плюс.
Но есть и огромный, жирный минус, и это – ужасное форматирование. Причём бесить оно вас будет в обе стороны, и когда вы переводите текст на КФ, и когда вы переводите текст с КФ.
Строго говоря, и не стоит этого делать. Мы, конечно, ведём речь о копировании собственных текстов, поэтому варианты копирования из режимов чтения даже не рассматриваются. Только из режима авторского доступа к исходному коду текста.
Итак. Вы, ваша бета и ваши читатели вычитали ваш текст до блеска? Ну или вы просто что-то капитально поправили себе в фикбучном варианте текста. Прекрасно, пришло время скопировать правки на АТ и.
Правильно. Начать громко материться. Потому что если ваш текст содержит форматирование, хоть сколько-нибудь сложнее дырки от бублика, то вас ждёт весёлый вечер. А если уж глав больше одной, то синхронизация правок сводится к «я займусь этим позже (не в этой жизни)». В итоге мы можем закончить тем, что на Фикбуке лежит более вычитанный и гладкий текст, чем на АТ. Потому что на АТ всё ещё не ввели функцию, существующую на «каком-то жалком фикрайтерском сайте» с незапамятных времён.
Но не будем о грустном. Давйте посмотрим, что мы можем сделать с нашей проблемой, чтобы облегчить себе жизнь.
Внимание
Все примеры ниже приведены для редактора MS Word 2016. Если вы работаете в другом редакторе, вам придётся искать эквивалентную замену следующим действиям. В данном примере мы разберём, как сделать макрос, автоматизирующий обратное форматирование нашего текста из редактора с Фикбука в текст здорового человека.
Убедительная просьба не использовать данную инструкцию для плагиата. Плагиат – это плохо.
ЛИКБЕЗ ДЛЯ НОВИЧКОВ ИЛИ КАК ПОЛЬЗОВАТЬСЯ АВТОЗАМЕНОЙ
Знающие, как быстро расставить табуляцию и пустые строки с помощью автозамены, могут данный раздел с чистой совестью пропустить. Он предназначен больше для демонстрации того, с чем мы сейчас будем работать прежде чем перейдём к макросам. Ну и для тех, кто до сих пор не знает, как оперативно отформатировать текст при портировании на КФ, а не с него.
Как вы, наверное, знаете, автозаменой можно находить не только слова и конкретные сочетания знаков, но и символы конца абзаца. Если вы всё ещё не в теме, то делается это следующим образом:
На вкладке «Главная» есть кнопка «Заменить», открывающая окно поиска и замены (есть ещё комбинация клавиш Ctrl+H для вызова того же окна). Думаю, следующее окно всем пользователям MS Word знакомо:
Типичный паттерн автозамены для тех, кто оформляет текст на КФ по тамошним правилам
В окне замены в строчке «Найти» вбейте: ^p
Это сочетание знаков эквивалентно символу конца абзаца. Убедитесь, что у вас не стоит галочка «использовать подстановочные знаки» (её можно увидеть, если нажать кнопку «Больше»).
Если вам необходимо использовать подстановочные знаки (о которых речь дальше и пойдёт), то вместо ^p используйте ^0013 – это то же самое.
Чтобы проставить табуляцию, в строчке «Заменить на» вбейте: ^p
Теперь ваш текст принял нужный вид.
Если мы хотим сделать двойные строки, то делается это тем же способом:
Если мы хотим сделать и двойную строку, и табуляцию, то мы используем всё ту же методику автозамены:
Результат показан ниже:
Да-да, именно это нам и нужно было
Но сейчас мы используем эти знания для того, чтобы сделать обратное колдунство: восстановить из отформатированного текста оригинальный. С учётом того, как мы красиво поиздевались над форматированием.
Ниже под спойлерами приведены примеры форматирования из моего текста, доставляющие больше всего неудобств при восстановлении исходника.
Пример взят из текста «Deadly Height» (на АТ он же идёт как «Смертельная Высота»).
Ну да, ну да. Успехов с восстановлением исходного текста.
А этот вариант актуален для любителей чередовать логи и текст. Счастливого форматирования x2
Сделать всё это нам требуется автоматически, не открывая постоянно окно автозамены. Для восстановления текста без отбивок пустыми строками между абзацами потребуется аж шесть разных автозамен, пять из которых требуют лезть в менюшки «Абзац» и «Шрифт». Нам оно надо, мучиться так с каждой главой? Ладно ещё если глава одна, а если их десять, двадцать, тридцать. Проще автоматизировать дело до одного клика, который сразу делает нам красиво.
Итак, давайте облегчим себе жизнь. И помогут в этом деле нам макросы.
КАК АВТОМАТИЗИРОВАТЬ ЗАДАЧУ В ВОРДЕ С ПОМОЩЬЮ МАКРОСОВ
Если коротко, макрос в Word’e – это такая классная штука, которая позволяет нам автоматизировать некоторую последовательность действий. Макросы здесь написаны на Бейсике, так что, если вы не шарите в Бейсике, можно не сношать себе мозг, а воспользоваться простой записью действий, после чего заняться стыковкой кода. В самом коде вам разбираться, на самом деле, не обязательно, потому что он генерируется автоматически.
Для препарирования возьмите любой ваш текст из редактора КФ, содержащий курсив, жирный шрифт, табуляции, центровки и прочие страшные вещи. Скопируйте его в отдельный документ, сейчас будем прямо на нём проводить операцию.
Шаг 1. Автозамена курсива
Откройте «Вид» → «Макросы» → «Запись макроса» (обратите внимание, там выпадающий список, если вы просто на иконку макроса нажмёте, вы перейдёте в меню с макросами), чтобы сделать свой первый макрос.
Обзовите его «Тест», чтобы не путать с остальным.
Позднее вы можете получить к нему доступ через «Вид» → «Макросы» → «Макросы». Как только вы нажимаете кнопку «ОК», начинается запись ваших действий. Записывается, конечно, не всё, а только конкретное взаимодействие с интерфейсом Word’a.
Переходим обратно в окошко автозамены и делаем следующие действия.
Нажимаем кнопку «Больше», ставим галочку напротив подстановочных символов.
Теперь в строке «Найти» вбиваем: [ ](*)[ ]
Да, именно так. В данном случае мы ищем точное совпадение каждого символа разметки, а (*) означает всё, что находится между ними. Включая другую разметку.
В строке «Заменить на» вбиваем: \1
\1 в данном случае будет означать конструкцию в круглых скобочках. Т.е. всё, что содержит теги курсива, будет заменено на то же самое, только без них. Однако нам нужно, чтобы это что-то ещё и вернуло нам наш курсив. Для этого мы, всё ещё держа курсор ввода в поле «Заменить на» (это важно, потому что мы заменяем на курсив, а не ищем курсив!), нажимаем кнопку «Формат», выбираем в выпадающем списке «Шрифт…» и жамкаем там курсив.
Конечный вид окна замены
После чего нажимаем заветную кнопку «Заменить всё» и закрываем окно автозамены.
В наш текст вернулся курсив, прекрасно.
Идём обратно в «Вид» → «Макросы» и жамкаем «Остановить запись».
Теперь проверим, какой код сгенерировался у нашего макроса. Для этого мы нажимаем «Макросы», выбираем наш макрос и нажимаем «Изменить».
Увидим мы вот это вот непотребство (см. ниже). Тут у меня уже конечный вариант макроса, но в идеале вы должны увидеть именно этот кусок кода:
Окно редактирования макроса
Знакомьтесь, так выглядит макрос, который будет автоматически заменять вам весь карнавал с курсивом. Но у нас в тексте есть не только курсив, у нас есть и всё остальное.
Создайте второй макрос (для этого вы можете просто включить и тут же отключить запись, это создаст вам пустой макрос) с уже более осмысленным названием и скопируйте в него сгенерированный код. Сейчас мы шаг за шагом соберём полную программу автозамены.
Шаг 2. Автозамена жирного и зачёркнутого шрифта
Собственно, участки для жирного и зачёркнутого шрифта мы препарируем таким же образом, только теперь у нас в строке «Найти» будут следующие конструкции:
Заменяется и то, и другое на всё тот же \1, как и в предыдущем примере, только теперь в разделе для форматирования в «Шрифте» вы выбираете, соответственно, жирный шрифт и обычный, но с одинарным зачёркиванием. Остальные действия под запись повторяете так же, а сгенерированные куски копируете в основной макрос (вы же не хотите сами этот код писать, верно?).
Не забывайте перед каждой новой операцией очищать форматирование из строки «Заменить на»!
После копирования ваш макрос будет выглядеть примерно так:
Теперь у нас в основной программе макроса есть три участка кода, которые в сумме при нажатии кнопки «Выполнить» на макросе сделают вам часть грязной работы.
Перейдём к немного более сложному делу – удаление чёртовой табуляции.
Шаг 3. Автозамена табуляции
Пока что не рассматриваем случай, когда нам нужно удалять ещё и пустые строки, это отдельная проблема, с которой мы разберёмся чуть дальше. Предположим, что в вашем тексте есть только табуляция, но нет отбивок каждого абзаца пустой строкой.
Не забудьте перед операцией очистить форматирование из строки «Заменить на»!
В строке «Найти» вбиваем следующую конструкцию: [ ](*)^0013
В строке «Заменить на» вбиваем: \2^p.
Обратите внимание, теперь в качестве 1-го слова используется (tab), а второе слово – это всё, что идёт после табуляции. ^0013 – это знак конца абзаца. Можно, конечно, его и не использовать, но тогда вычислительная нагрузка будет больше. Можете сами догадаться, почему. Также, в строке замены лучше использовать ^p вместо ^0013, чтобы вам не склеило абзацы ненароком (такое случается, хотя это эквивалентные символы).
Далее, удерживая курсор в поле «Заменить на», идём в меню «Формат» → «Абзац», и выставляем там отступ 0.7 (ну или любой удобный вам).
Вид окна замены показан ниже. Да, первая строка с 0.7 будет в окне замены отображаться как 0 пт., всё нормально, там просто десятичные дроби не отображаются. На деле оно вполне подхватывает форматирование.
Вид окна замены для табуляции
Зачем это нужно. Дело в том, что некоторые тексты могут содержать намеренное чередование отбитых и не отбитых табуляцией участков текста (а некоторые ресурсы – такое форматирование подхватывать). Чтобы после удаления табуляции продолжать видеть, где табуляция была, а где нет, мы перестраховываемся, вводя отступ. Конечно, для этого нам нужно, чтобы весь остальной документ до запуска макросов был скопирован в стиль без отступов или с отличающимся отступом. Также в поле «Выравнивание» не забудьте выставить «По ширине» или «По левому краю», по желанию.
Для данной операции кусок сгенерированного кода будет выглядеть так:
Следующим этапом мы разберём, что нам делать с тегами центр и вправо.
Шаг 4. Автозамена «центр» и «вправо»
Думаю, ни для кого не секрет, что теги «центр» и «вправо» на КФ в режиме чтения автоматом вставляют после себя пустую строку, даже если между отцентрованным текстом и следующим абзацем пустой строки не стоит. Если у вас отцентрованы одним тегом несколько абзацев подряд, между ними пустые строки автоматом вставляться не будут. То же и с тегом «вправо».
При реставрации текста надо этот момент учитывать. Поэтому сделаем мы всё это следующим образом.
Не забываем целиком очистить предыдущее форматирование перед новым действием!
Для тега «центр» в поле «Найти» вводим: [ ](*)[ ]
В поле «Заменить на» вводим: \2^0013
Оставляя курсор ввода в поле «Заменить на», нажимаем «Формат» → «Абзац».
В выпадающем списке «Выравнивание» выбираем «По центру».
Генерируем макрос из автозамены, получим нечто вроде вот этого:
По аналогии делаем для тега «вправо», после чего собираем полный макрос и запускаем тот на проверочном тексте.
Если у вас нет совсем хитрого форматирования, должно сработать.
Дополнительно. Как автоматически убрать из дока пустые строки
В самом простом случае это проблемы не составляет. Просто сгенерируйте участок кода с обратной заменой ^0013 <2>на ^0013. Правда, он вам и лишнего может отхапать, например, отбивку пустой строкой перед отцентрованным текстом. Чтобы этого не происходило, надо подбирать через подстановочные знаки условия, с которыми оно будет работать.
Для себя я сгенерировал два участка кода, которые должны стоять в самом начале макроса, до того, как будут реставрированы курсивные выделения.
Первый участок вводит замену: ^0013<2>([!\
В итоге убираются пустые строки перед всеми блоками текста, которые не начинаются с какого-либо тега, будь то центр, вправо или таб. Проблема в том, что оно не уберёт пустые строки перед не табулированным текстом, который, например, начинается с тега курсива. С этим придётся либо разбираться самостоятельно, либо подбирать нужную последовательность подстановочных знаков.
Второй участок выполняется с отключёнными подстановочными знаками и просто заменяет: ^p^p‹tab› → ^p‹tab›. Здесь всё просто, можете сами попробовать, это стандартная автозамена, обратная к той, с которой мы начали статью.
Конечно, такая замена всё равно может склеить вам переходы между табулированными и не табулированными участками текста, но, если вы не злоупотребляете такими переходами, вам будет несложно уже самостоятельно после макроса пройтись взглядом по тексту и подобрать «склейки» по необходимости.
Ну или выполнить домашнее задание и написать макрос, который справляется и с этой проблемой.
Спасибо за внимание.
Спросить у меня в личку. Ну или найти у меня в группе: https://vk.com/blackspiral15?w=wall-77379189_7030 – здесь версия макроса для текста без пустых строк. Установка макроса производится через меню импорта под окном редактирования кода макросов, это несложно.
А лучше и полезнее – сделать самим. Это несложно даже для людей, незнакомых с программированием.
UPD. Вариант решения задачи от комментатора Shoopes с КФ
Открываем текст нужной главы (не заходя в режим readfic), открываем консоль браузера и записываем туда:
Код для копирования, можно автоматизировать:
Проверил, работает. Остальное форматирование (вроде пустых строк и пр.) пофиксить уже по желанию, либо тоже через консоль, либо через всё ту же автозамену, кому что удобнее. Спасибо Shoopes за второй вариант решения задачи.