Посты за Март 2017

Экспорт bibTeX

13 Марта, 2017
Комментарии

Заметка, чтобы не забыть. При написании TeXовских документов, я использую общий для всех файл biblatex. В основном потому что удобно иметь один шаблон и не думать об этом. Но посылать огромную библиографию в редакцию как-то некрасиво.

Простой способ получить biblatex-файл, в котором содержатся только использованные в документе ссылки возможно следующим образом:

  • bibexport -o outfile.bib ${document}.aux при использовании непосредственно bibtex
  • biber --output-format=bibtex ${document}.bcf при использовании biber

Определить использование последнего можно по факту наличия bcf-файла после сборки документа.

Кстати, пока не забыл, беспроблемная сборка:

latexmk --outdir=build -f -pdf $document

Closure-Compiler и ghcjs

13 Марта, 2017
Комментарии

Ghcjs оказывается иногда незаменим если хочется Хаскеля в JavaScript-окружении. Однако его выдача имеет нередко просто чудовищные размеры.

Решить (или по крайней мере уменьшить) проблему размера возможно с помощью гугловского closure-compiler. Однако в случае сборки под node.js возникает трудность: ADVANCED_OPTIMIZATIONS ломают названия нодовских функций. И все, привет. Есть, само собой, https://github.com/dcodeIO/ClosureCompiler.js, но он отмечен как outdated.

В общем, можно достичь нужного эффекта руками. Для этого следует клонировать https://github.com/dcodeIO/node.js-closure-compiler-externs и включить параметром --externs все *.js файлы оттуда. Вручную это, конечно, грустно. Поэтому я набросал вот такой вот скрипт:

#!/bin/bash
closure-compiler $1.jsexe/all.js --compilation_level=ADVANCED_OPTIMIZATIONS $(ls node.js-closure-compiler-externs/*.js | sed 's/^/--externs=/') --externs=$1.jsexe/all.js.externs > $1.js

Он, само собой, ужасен, но нужного эффекта достичь позволяет.

Замечание: гарантий, что extern’ы корректные, ни у кого нет. Поэтому что-то в каких-то случаях может ломаться совершенно случайным образом. Используйте на свой страх и риск.