2/10/2014

Как написать статью в LaTeX

Результатом любого приличного исследования являются публикации. Вы делаете что-то новое, и это по идее должно немного (или значительно) двинуть научное знание вперёд. А так как научные тексты удобнее писать в LaTeX, специально для этого созданным не абы кем, а Дональдом Кнутом, то возникает непраздный вопрос: как же написать статью в LaTeX?!

Вернее, вопросов два: как написать научную статью и как это сделать в ЛаТеХе?


Как написать научную статью
В Сети есть много хороших и правильных постов о том, как следовало бы писать статьи. Там вам скажут, что сначала придумывается заглавие, потом аннотация (abstract), потом красивое введение, потом, собственно, результаты исследований и, как апофеоз экзистенциального катарсиса, заключение.

В жизни всё несколько иначе. Обычно стоит большая задача, которую нужно решить. Мы сидим, чещем затылок и листаем журналы в поисках намёков на решение. Пробуем то и это, и чаще всего либо оно не работает вообще, либо работает, но не так, как надо. Потом иногда приходит какая-нибудь хорошая и свежая мысль, и внутренний голос говорит "О! Это интересно", а внешний - "Ахххаааа!".

После прихода этого самого "Аха!" вместе с хорошей идеей автор начинает что-то быстро писать на бумаге, прикидывать, покрякивать и энергично потирать ручонки. Далее, в состоянии полного угара творчества что-то ваяется, вычисляется, математически выводится, разливается по колбам, экспериментируется, программируется и численно симулируется. Это самое счастливое время, когда забываешь обо всём на свете и делаешь что-то занятное - за это, собственно, научным сотрудникам и платят деньги.

Через некоторое время угар творчества проходит и автор видит наброски, куски кода, булькающие колбы, вереницы данных, таблицы и графики. Работа принимает более организованный характер: нужно сравнить с имеющимися методами, провести дополнительные эксперименты или расчёты. Если это что-то, чего ещё никто не делал - самое время приступать к написанию статьи.

Основная часть таким образом у автора в том или ином виде уже есть, так что статья начинается с середины, а именно - с полученных данных. Всё, что написано про оформление диплома или курсового проекта в LaTeX, полностью справедливо и здесь.

В основной части считается хорошим тоном привести математическую формулировку или модель, которая соответствует процессам. Сравнение численной модели с реальным экспериментом тоже добавляет веса и доверию статье. Также стоит упомянуть, на каком компьютере проводились симуляции (особенно если вы предлагаете новый алгоритм и сравниваете с предыдущими), какое оборудование использовали и что булькало в пробирках.


Заглавие обычно выбирается из пары десятков нагенерированных коллегами и автором вариантов. Как правило, заглавие статьи должно содержать некие ключевые слова, которые описывают содержимое статьи. Это важно, так как позволяет быстрее и проще вашу статью потом найти другим людям в поисковых системах.


После этого пишется обычно одна из самых занудных частей статьи - Заключение. Дело это непростое и обычно приходит с опытом и набитием шишек. Так как люди обычно читают аннотацию (abstract), введение и заключение к статье, то они должны быть отполированы до зеркального блеска.

Обычно заключение отвечает на три вопроса:
  1. Что за проблема решалась в статье?
  2. Какие результаты были получены в статье?
  3. Ну и что!?
Для ответа на эти вопросы, в особенности на последний, хорошо поиграть в игру "Ну и что?!". То есть представьте, что вы беседуете с редактором журнала, и он вас спрашивает: "ну и что в статье интересного-то?" или "почему я должен обратить на это внимание?".


Введение это вторая по трудности часть после заключения. Введение обычно даёт формулировку целей исследования и достаточный обзор существующей литературы. Но это легко сказать, а что писать-то? Ну, например, автор этих строк пользуется следующей болванкой:
  1. Почему это исследование вообще проводилось?
  2. Какая литература уже существует по этому вопросу? Здесь можно провести обзор и показать ту брешь, которую вы хотите заткнуть своей статьёй.
  3. Какова конкретная цель исследований? Это теоретическое обоснование чего-то, или экспериментальная работа, или численные симуляции.
  4. В чём новизна работы?
После написания введения и заключения можно писать аннотацию (abstract).


Аннотация (abstract) это короткое описание цели работы, результатов и что в работе сообщается. В целом, аннотация пишется обычно из надёрганных предложений из Введения и Заключения. Обычно аннотации короткие и должны быть не длиннее, скажем, 250 слов (у журналов и конференций по этому поводу свои правила).






Как написать научную статью в LaTeX
Эпиграф:
LaTeX is capable of most things 
but not always in the most obvious manner.

Собственно, как уже говорилось выше, почти всё, что нужно для этого, есть в постах о написании диплома в LaTeX:
Есть одно НО: у каждого журнала или конференции есть свой собственный, не имеющий аналогов в мире, стилевой файл  LaTeX разной степени корявости и тухлости. Как правило, там содержится рабочий пример статьи, так что лучше попробовать сначала собрать пример.

Но если вы думаете, что отправленную вами в журнал статью примут "с колёс" и без редакции, то вы либо крутой нобелевский лауреат, либо большой оптимист. И поэтому скорее всего вам предстоит общение с рецензентами и редактором журнала. Вот тут-то LaTeX нам и сослужит добрую службу....


Рецензии и правки научных статей в LaTeX
Ещё до того, как вы отправите статью, лучше всего использовать одноколоночный набор и включить нумерацию строк, чтобы рецензенты ссылались не просто на страницу, а сразу на конкретную строку.


Нумерация строк в LaTeX
Нумерация строк включается пакетом lineno, который можно скачать здесь. В преамбуле документа добавляем
\usepackage[mathlines]{lineno}% Enable numbering 
Отлично, теперь вставляем команду:
\linenumbers\par %%% <---- turn on the numeration of lines
там, где мы хотим начать нумерацию линий. Если нужно оборвать нумерацию в конце статьи перед, скажем, списком литературы, команда выглядит так:
\nolinenumbers %%% do not use line numbers any more.
Важно то, что пакет lineno позволяет не только автоматически проставлять номера строк, но ещё и ссылаться на них. Автор настоятельно рекомендует использовать эту возможность, чтобы не сойти с ума самому при правках и не злить рецензентов.

Для этого в том месте, которое вы обещаете рецензенту поправить (и делаете это), ставим ссылку:
\linelabel{review:1R1}
Как и везде в ЛаТеХе, ссылки стоит ставить разумные: например, здесь написано, что это ответ на замечание 1 от рецензента 1 (они обычно анонимные).

Далее в тексте ответа на замечания рецензентов пишем что-то типа:
We clarified this on page~\pageref{review:1R1} line~\ref{review:1R1}.

Наступает счастье: здесь мы приводим не только ссылку на строку (\ref{review:1R1}) но и сразу на страницу (\pageref{review:1R1}).

Вместо конструкции $$ ..... $$  следует использовать \[ ... \] или \begin{displaymath} ....\end{displaymath}, тогда пакет lineno правильно проставит номера строк в тексте с математическими формулами.

Больше о нумерации строк вам расскажет весьма толковая документация к пакету lineno.


Ссылка на сноски в LaTeX
Допустим, вы сказали, что угоняете часть тектса в сноску. Об этом лучше написать рецензенту прямо, чтобы он не искал кусок пропавшего текста по всему документу.

Для этого пишем в преамбуле документа:
\newcommand{\footnoteremember}[2]{\footnote{#2} \newcounter{#1} \setcounter{#1}{\value{footnote}}} \newcommand{\footnoterecall}[1]{\footnotemark[\value{#1}]}
Теперь в тексте можно написать:

The Finite Element Analysis was perfomed on a crappy computer\footnoteremember{footnotelatitude}{Simulations were run on the Dell Latitude E5400 notebook with Intel Celeron 2.2 GHz processor, 2GB DDR2 SDRAM, 120 GB SATA HDD 5400 rpm under Debian GNU/Linux v 5.0 with MATLAB v2007b for UNIX.}.

Так что у нас есть ссылка footnotelatitude которая ведёт на сноску. Теперь сослаться на неё можно так:
(see footnote\footnoterecall{footnotelatitude})
И вы теперь сможете видеть номер сноски, на которую вы ссылаетесь. Трюк позаимствован отсюда.


Перевод PDF в простой текст
Сгенерированные ЛаТеХом документы часто переводятся в PDF, но иногда требуется перевести всё в простой текст. Часто это следует делать с сохранением структуры, и тут нам поможет pdftotext:
pdftotext -layout  -nopgbrk   reviewnotes_12-0238_MS.pdf
где ключи означают:
 -layout           : maintain original physical layout
 -nopgbrk          : don't insert page breaks between pages
Если нужно перевести в текст только со страницы 5 по страницу 10, даём команду:
pdftotext  -f 5 -l 10 reviewnotes_12-0238_MS.pdf
После этого текст можно вставлять в веб-форму для ответа рецензентам.




Ссылка название раздела или главы в LaTeX
Тоже часто используется, особенно если вы при правках радикально меняете структуру статьи (скажем, рецензенты вам это настоятельно советуют). Делается ссылка на название раздела с помощью пакета nameref и который входит в пакет hyperref - он входит в стандартный набор TexLive и потому уже должен быть установлен.

Включаем пакет в преамбуле:
\usepackage{nameref}

Ставим метку для раздела (section):

\section{Introduction}\label{intro}
И ссылемся в тексте:
See more details in the \nameref{intro} section that has number \ref{intro}.
Вместо этого мы при компиляции увидим:
See more details in the Introduction section that has number 1.
Этот удобный и простой трюк подсмотрен тут.


Вместо заключения
Собственно, этот пост - небольшая зарубка на память и собрание нескольких рецептов из моего уже порядком разросшегося черновика. Полностью приведённый пример можно посмотреть на моей странице в Google Code.

17 комментариев:

  1. LyX в помощь чайникам

    ОтветитьУдалить
  2. Последняя ссылка на гугль-код немного кривая.

    ОтветитьУдалить
  3. Согласен с Сергеем — ссылку нужно исправить на https://code.google.com/p/exampleofarticle/source/browse/

    P.S. А не думали о том, чтобы перенести проект на GitHub? Он как-то попопулярнее нынче будет.

    ОтветитьУдалить
  4. @Анонимный комментирует... 10 февр. 2014 г., 4:50:00

    LyX в помощь чайникам

    Не могу согласиться. LyX добавляет своих специфических проблем и геморроя с импортом латеховского текста внутрь себя. Когда что-то идёт не так с латехом - по крайней мере легко выяснить, кто виноват. В LyX это сделать сложнее: это может быть его собственный косяк, независимый от латеха.

    И вообще, инженер/исследователь, не способный выучить такой простой язык программирования как ЛаТеХ, ставит под сомнение свою компетентность. Гуманитариям это можно простить, но не технарям.

    @Сергей Азаркевич комментирует...
    Последняя ссылка на гугль-код немного кривая.

    Поправил. Спасибо.

    @Andrey Akinshin комментирует...
    А не думали о том, чтобы перенести проект на GitHub?

    Нет. В гитхабе меня отталкивают две вещи:
    1. стремление сделать из VCS какой-то недофейсбук. Мне не нравится, когда суют соцсети во все дыры.
    2. отвратительное стремление гитхабовцев нажиться на пользователям любой ценой. BitBucket куда щедрее в плане места для репозиториев.

    Он как-то попопулярнее нынче будет.
    Ну, Windows тоже популярнее, чем Debian, но что ж с того? :-)

    ОтветитьУдалить
  5. Больше о нумерации строк вам расскажет весьма толковая документация к пакету lineno и из поста сего учёного мужа.

    К сожалению, блог, который вы искали, не существует. Вы можете зарегистрировать название simenhag на себя.

    ОтветитьУдалить
  6. @Basil Orlov комментирует...
    К сожалению, блог, который вы искали, не существует. Вы можете зарегистрировать название simenhag на себя

    Всё течёт, всё меняется. Убрал ссылку. Жаль, пост там был толковый.

    ОтветитьУдалить
  7. >пакет несколько косяковый и, например,
    >абзац с ненумерованными формулами
    >(в окружении $$ ..... $$) пронумерован не будет.

    пакет в полном порядке. а вот ваша конструкция $$ ..... $$ косяковая, и объявлена устаревшей.

    следует вместо неё использовать \[ ... \] или \begin{displaymath} ....\end{displaymath}, тогда пакет lineno проставит номера строк, как следует.

    ОтветитьУдалить
  8. а вот ваша конструкция $$ ..... $$ косяковая, и объявлена устаревшей
    угу: "Мы наш, мы новый мир построим..."

    ОтветитьУдалить
  9. В российских реалиях нужна еще пост "Где опубликовать статью в LaTeX"

    ОтветитьУдалить
  10. @ Анонимный комментирует...

    пакет в полном порядке. а вот ваша конструкция $$ ..... $$ косяковая, и объявлена устаревшей.

    В общем-то она гораздо логичнее всяких перлоидных скобочек, и уж тем более проще писать, чем \begin{displaymath}.

    Текст, тем не менее, поправил, за что Анонимусу спасибо.

    @Basil Orlov комментирует...
    угу: "Мы наш, мы новый мир построим..."
    Ну да, "мы пионеры - дети рабочих" :-))

    @yanchick комментирует...
    В российских реалиях нужна еще пост "Где опубликовать статью в LaTeX"
    Я что-то не заметил, чтобы IEEE, Elsevier, SPIE и Springer перестали принимать статьи в ЛаТеХ или дискриминировали кого-то по географическому признаку.

    ОтветитьУдалить
  11. @yanchick комментирует...
    В российских реалиях...
    Судя по последним тенденциям в наших министерствах, печататься надо в иностранных научных журналах, имеющих неплохие рейтинги. Так что делайте выводы :)

    ОтветитьУдалить
  12. Пост хорош во всех отношениях. И моей благодарности не было бы предела, если бы уважаемый автор сотворил из всей этой горы информации структурированную pdf-ку. Наподобие славного "Debian CookBook". Сделаешь, virens? Пожаа-аалуйста!

    ОтветитьУдалить
  13. @redVi комментирует...
    если бы уважаемый автор сотворил из всей этой горы информации структурированную pdf-ку. Наподобие славного "Debian CookBook".

    Есть проблема: в посте много ссылок на другие посты внутри блога. Долго придётся всё это сливать в один файл. Потом, пост сравнительно короткий.

    Или хочется видеть что-то типа шпаргалки: один лист А4 и основные трюки?

    Сделаешь, virens? Пожаа-аалуйста!
    Пожелания трудящихся - дело святое. Попробуем.

    ОтветитьУдалить
  14. что-то типа шпаргалки
    Пожалуй, это даже лучше. Спасибо!

    ОтветитьУдалить
  15. @Nikita Lyalin комментирует...
    Где новые статьи?
    Ну, я статью писал вот сюда, и её таки приняли. Так что мне было немного не до блога.

    Скоро и сюда доберутся мои ручонки что-нибудь запостить.

    ОтветитьУдалить
  16. как на счет написания кандидатских и докторских диссертаций в ЛаТеХе?

    ОтветитьУдалить