Автор Гілка: BibTeX-стилі gost: лапки замість тире в англомовних джерелах  (Прочитано 106716 раз)

Відсутній basilio

  • Новачок
  • *
  • дописів: 30
Просте, ніби на перший погляд питання. Є список літератури. Є джерела англійською. І от в них усіх у роздільнику ставить перед тире лапки. Приблизно так це виглядає:
Цитата
Willer, H. The World of Organic Agriculture. Statistics and Emerging Trends [Text] / H. Willer, L. Kilcher. ”— Bonn, Frick : IFOAM & FiBL, 2011.
Офіційна документація стилю ГОСТ пише, що це автори навмисне так зробили (щоправда, не можу зрозуміти навіщо) і пропонують тим, хто не може обходитись лише кирилічними джерелами робити так:
\providecommand*{\BibDash}{}перед тим, як викликати:
\bibliography{mybibfile}Зробив. Але це, на жаль, не спрацювало. Ті лапки нікуди не ділись. Може в когось вже була подібна проблема?
Cтиль gost2003, unicode. Кирилицею, до речі, все прекрасно. Отак от я потрапив на гачок до ксенофобів. Допоможіть зіскочити. Заздалегідь дякую.

М.: Ця частина обговорення стосується певних BibTeX-стилів і особливостей їхньої взаємодії з LaTeX, але не спеціальних класів LaTeX для дисертації та автореферату. Тому виділив її в окрему гілку.
« Змінено: 2016-04-09 10:51:00 від ombaranovskyi »

astrsk

  • Гість
Просте, ніби на перший погляд питання. Є список літератури. Є джерела англійською. І от в них усіх у роздільнику ставить перед тире лапки. Приблизно так це виглядає:
Цитата
Willer, H. The World of Organic Agriculture. Statistics and Emerging Trends [Text] / H. Willer, L. Kilcher. ”— Bonn, Frick : IFOAM & FiBL, 2011.
Офіційна документація стилю ГОСТ пише, що це автори навмисне так зробили (щоправда, не можу зрозуміти навіщо) і пропонують тим, хто не може обходитись лише кирилічними джерелами робити так:
\providecommand*{\BibDash}{}перед тим, як викликати:
\bibliography{mybibfile}Зробив. Але це, на жаль, не спрацювало. Ті лапки нікуди не ділись. Може в когось вже була подібна проблема?
Cтиль gost2003, unicode. Кирилицею, до речі, все прекрасно.


Цв яирішується використанням стилю gost2008  (ugost2008 для unicode). Ймовірно, в стилі gost2003 ця ситуація не була коректно відпрацьована. Команда "--- в латех дає якесь особливе "кирилічне тире", але вона не парсилася латехом при подачі після обробки бібліографії в документ, якщо джерело не помічалося як кирилічне. Програмування стилю gost2008 вже відпрацьовує такі варіанти коректно. До того ж, там коректно працює і запропонована команда \providecommand*{\BibDash}{}[/code] (якщо треба усунути тире взагалі).
« Змінено: 2016-04-09 10:58:25 від ombaranovskyi »

Відсутній basilio

  • Новачок
  • *
  • дописів: 30
Цв яирішується використанням стилю gost2008  (ugost2008 для unicode).
Все це так, але для оформлення дисертацій має використовуватись ДСТУ 2006, який відповідає ГОСТу 2003. А отже, це рішення в даному випадку не працює, на превеликий жаль. Отже, питання залишається актуальним.
Втім, дякую, що знайшли хвилинку.
« Змінено: 2016-04-09 11:00:19 від ombaranovskyi »

Відсутній basilio

  • Новачок
  • *
  • дописів: 30
Вирішив для себе проблему ручним випилюванням the offending code безпосередньо зі стильового файлу. Питання закрите.

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 317
Залишок гілки відрізано, тепер він тут.
Організаційною системою УПА є трійкова система.
С. Ф. Хмель, «Українська партизанка»

Відсутній Novachok

  • Новачок
  • *
  • дописів: 3
Добрий день. Пишу дисертацію і потребую використання стилю gost2003, бо саме він відповідає вимогам ВАК. Завдяки цьому форуму, відредактувавши файл gost2003.bst, вдалося прибрати кому після Прізвищ на початку, а також видалити "[Текст]". А ось лапки в англомовних джерелах перед тире прибрати не виходить.
basilio або хто інший підкажіть як саме вирішити цю проблему. Де знаходиться це "the offending code"? Команда \providecommand*{\BibDash}{} у мене також не працює.

Відсутній Novachok

  • Новачок
  • *
  • дописів: 3
Справа в тому, що згідно вимогам ВАК джерело повинно бути сформоване наступним чином:

Валеев К. Г. О метрической теории алгоритма / К. Г. Валеев, Е. Д. Злебов. // Укр. мат. журн. – 1975. – №27. – С. 64–69.

Стиль gost2003 саме так його і формує, а ось використання стилю gost2008 дає результат:

Валеев К. Г., Злебов Е. Д. О метрической теории алгоритма // Укр. мат. журн. – 1975. – №27. – С. 64–69.

Тобто стиль gost2008 формує список авторів не так як вимагає ВАК. Усе інше однакове.

Відсутній Novachok

  • Новачок
  • *
  • дописів: 3
Деякий вихід знайшов. У сгенерованому LaTex файлі "xampl-thesis.bbl" зробити заміну ["---] на [---] для всіх елементів. Потім в Tex-редакторі виконати "швидке збирання" (без повторної генерації списку літератури) і отримаємо бажаний результат. Але такий спосіб  хоч і працює і не викликає проблем, та все ж, на мою думку, не ідеальний. Хотілося б відредагувати саме стильовий файл gost2003.bst і щоб він самостійно коректно генерував список англомовних джерел як це було зроблено для усунення коми після прізвищ на початку і видалення слова "[Текст]".

Тому якщо хтось знає як відредагувати стильовий файл gost2003.bst для вимог ВАК або знає інший стильовий файл який відповідає вимогам ВАК напишіть будь ласка.
« Змінено: 2016-02-23 10:30:11 від Novachok »

Відсутній Василь Черлінка

  • Новачок
  • *
  • дописів: 37
По перше, хочу подякувати п.Олександру за його роботу над класами та відповіді.
Тепер по суті останніх питань щодо списку літератури, де у джерелах латиницею у роздільнику ставить перед тире лапки. Це мене теж турбувало. Рекомендація використовувати \providecommand*{\BibDash}{} призвела до того, що зникли і оті злощасні лапки і одночасно всі тире в списку літератури. Вже було змирився з напівручним видаленням цього за bbl-файлу згідно попереднього повідомлення. Одночасно я хвилювався з приводу наявності шрифту подібного до Times New Roman, оскільки в класах п.Барановського рідний шрифт таки відрізняється від TNR: він "худіший" і розрідженіший. Математикам простіше, в них так не зациклюються над  цими питаннями. Отож, я пішов шляхом використання PSCyr, а не XeLaTex. Налаштування здійснював під Віндоуз 7 та TeXLive 2015. Це виявилося досить нетривіальним завданням, інструкцій обмаль в інтернетах саме для цієї комбінації програмних засобів, але таки знайшов - http://www.tune-it.ru/web/korg/home/-/blogs/latex-%D0%BF%D0%BE%D0%BB%D0%BE%D0%BD-%D1%83%D1%82%D0%B5%D1%85-%D0%B8%D0%BB%D0%B8-pscyr-%D0%BD%D0%B0-windows-%D0%B4%D0%BB%D1%8F-tex-live?p_p_auth=UdYu3JqR, цю інформацію продублював і в себе в блозі, про всяк випадок. Наголошу, що в преамбулі для використовуваних нами класів потрібно прописати лише \usepackage{pscyr}, але Б Е З \renewcommand{\rmdefault}{ftm} як часто рекомендують, оскільки останнє ламає багато чого у форматуванні п.Олександра. Після компіляції все виглядає "класично" і дуже подібно до MS Word, відрізнити, що це не документ MS Word пересічному користувачу важко.

ТЕПЕР саме цікаве: коли використовується PSCyr, оті лапки перед тире у джерелах латиницею зникають. Я далеко не фахівець, щоб це пояснити (хіба що можу припустити, що у автора The GOST bundle: gost2003.bst Ігоря Котельникова стоїть PSCyr, і ця проблема з лапками в нього відсутня), але факт залишається фактом - лапок немає.
А тому використання стилю gost2003 для оформлення робіт залишається найбільш обґрунтованим.

Водночас помітив невелику помилку саме в стилі gost2003. Коли набираємо один з типів джерел, а саме Techreport, то коли описуємо український звіт, отримуємо замість Керівн. - Рук., а при багатьох виконавцях - "виконавець" без скорочення, хоча російською все гаразд - "исполн.".  

Хто може порадити, як це лікується?
 
P.S.
Пройшло трохи часу, чистою логікою, і навіть без гугління  ;) , знайшов вирішення проблеми. Описую тут, а потім і авторам запропоную виправити в дистрибутиві. А вся проблема від незнання ними української мови/неуважності. Отож, потрібно поправити кілька файлів gost*.bst, підозрюю, що може й усі (якщо ця помилка є всюди, але я не досліджував, за браком часу). Оскільки я використовую наразі лише 2 стилі gost2003 та gost2003s, і мені їх поки вистачає, то покажу все на їх прикладі. А почну з ugost2003 та ugost2003s. Весь цей набір знаходимо (нагадую, це описано для Віндоуз 7 та TeXLive 2015, накоченого оновленням на 2014) по такому шляху  c:\texlive\2014\texmf-dist\bibtex\bst\gost\

Беремо Notepad++ (1000 зручностей в роботі + нумерує рядки - не розцінюйте за рекламу) і в ньому редагуємо:
в UTF-файлах ugost2003.bst і ugost2003s.bst замінюємо рук. на кер. у рядках 695 та 705 відповідно.
У цих же файлах замінюємо виконавець на викон. у рядках 707 та 717 відповідно.

Трохи складніше, але не надто, процедура виглядає для кодування windows-1251. Тут назви записано кодами, але ми не ликом шиті, отож:
в файлах gost2003.bst і gost2003s.bst замінюємо \cyrr\cyru\cyrk. на \cyrk\cyre\cyrr. у рядках 699 та 709 відповідно.
У цих же файлах замінюємо \cyr\cyrv\cyri\cyrk\cyro\cyrn\cyra\cyrv\cyre\cyrc\cyrsftsn на \cyr\cyrv\cyri\cyrk\cyro\cyrn. у рядках 711 та 721 відповідно.

При компіляції, все тоді стає таким як потрібно. Успіхів!

P.S.S. Таки глянув на всі гостовські файли. І у всіх та сама помилка/фіча. Лікується, певна річ, аналогічно. Дивно, що стільки років ніхто не помічав/не звертав уваги на це.
« Змінено: 2016-02-29 22:54:24 від eucrariano »

Відсутній Novachok

  • Новачок
  • *
  • дописів: 3
У мене не вийшло. Пробував підключати PSCyr із \renewcommand{\rmdefault}{ftm} і без нього - результат однаковий - лапки залишаються, але в мене і тире не зникає. Працюю на XP+MikTex2.9+TexMaker. Пробувати TeX Live вже часу не має.

Відсутній Василь Черлінка

  • Новачок
  • *
  • дописів: 37
Не знаю, в мене їх немає, причому зникли саме після описаних маніпуляцій в попередньому пості. Я вже мав намір глибше копати, а тепер і причини ніби як і немає, все й так добре. Для вирішення цієї проблеми, треба ще подлубатися в коді. Ще одне, що могло би бути, це, як варіант, кодування. Я мав цю проблему з лапками, і база тоді могла бути в UTF-8. На якомусь етапі я базу перекодував в 1251, але чи це було до встановлення PSCyr чи опісля точно не скажу. Але вже після PSCyr, я примітив, що лишніх лапок немає, тому пов'язав їх з PSCyr. Може й пов'язано з некоректною роботою з кирилицею в GOST2003 при кодуванні UTF-8.

P.S. Оце перевів все щойно в UTF-8, зачіпило... Повитирав з преамбули все про титульну сторінку, бо в цьому кодуванні не компілюється через неї , викидає з помилками. Так от, все одно без лапок в мене результат. Містика?

P.P.S. Прогнав оригінальні файли п.Барановського, щоправда з одним списком. Все гаразд, лапок немає. До речі, щоб ВІДОБРАЖАЛАСЬ кількість сторінок у книжок (@Book), необхідно додати ще одне поле до бази даних - pagetotal, інакше вони не відображаються ну ніяк.
Що порадити, вже й не знаю...  Відпишіться, якщо щось вийде.
« Змінено: 2016-03-04 21:42:21 від eucrariano »

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 317
Мої експерименти показали, що проблема не специфічна для vakthesis, BibTeX-стилів gost, певного кодування чи шрифтів PSCyr. Такий результат буде завжди, якщо використовувати кириличне тире в англомовному середовищі (а не в україномовному). Наприклад, все працює у такій ситуації:
Код: LaTeX
  1. \documentclass{vakthesis}% або {article}
  2.  
  3. \usepackage[T2A]{fontenc}
  4. \usepackage[utf8]{inputenc}% або [cp1251]
  5. \usepackage[english,ukrainian]{babel}
  6.  
  7. \begin{document}
  8.  
  9. Example --- English emdash.
  10.  
  11. Example "--- Cyrillic emdash.
  12.  
  13. \end{document}
Але достатньо змінити порядок мов у виклику babel — і отримуємо гібрид «лапки-тире» ("—) замість кириличного тире. Можна використовувати різні класи і різні кодування; у мене працює однаково. Також видно, що тут немає залежності від BibTeX-стилів. І PSCyr у моїй системі не встановлено.

Зазвичай немає жодних проблем, бо ніхто не використовує кириличне тире в англомовному тексті. Аж поки не виникає потреба зробити багатомовний список літератури з BibTeX-стилями gost. Навіть якщо у .bib-файлі всі записи мають правильні значення у полях language, той спосіб, який використовує gost для перемикання мов, схоже, не перемикає скорописи (\languageshorthands у babel). Тому якщо основна мова документа — не українська, LaTeX не розуміє українських скорописів (зокрема "---) у списку літератури.

Отже, проблема мала би вирішитися просто встановленням ukrainian як основної мови документа (тобто вона має бути останньою у виклику babel). Але я сумніваюся, що так багато людей натрапили на цю проблему і таку просту річ не зробили. Мабуть, є щось таке, чого я не помітив. І, звісно, цей простий рецепт не допоможе, якщо з певних причин англійська має бути основною мовою документа, але в списку літератури є джерела українською.

Я спробую ще щось порадити для обходу проблеми, але треба більше інформації (мінімальний приклад, що демонструє проблему, дуже допоміг би). Якщо це питання ще актуальне для учасників дискусії, звісно.

Ще зауважу, що команду \BibDash пропонують тільки стилі *gost2008*.bst. А в *gost2003*.bst жорстко прописано "--- на тих самих місцях. \BibDash на вигляд дає такий самий результат, що й "---. Але \BibDash працює і з українською, і з англійською, а "--- не працює з англійською. Чому розробники так зробили, я не зрозумів; але так є.

Як наслідок, хто хоче використовувати \BibDash разом зі стилем типу gost2003, має (як рекомендували вище) або внести відповідні зміни у файл стилю, або після генерування .bbl-файла вручну міняти в ньому "--- на \BibDash (чи на інший зручний варіант).
« Змінено: 2016-04-09 16:03:15 від ombaranovskyi »
Організаційною системою УПА є трійкова система.
С. Ф. Хмель, «Українська партизанка»

Відсутній basilio

  • Новачок
  • *
  • дописів: 30
basilio або хто інший підкажіть як саме вирішити цю проблему. Де знаходиться це "the offending code"? Команда \providecommand*{\BibDash}{} у мене також не працює.


Звісно, що той offending code (отой квот) знаходиться у стильовому файлі. Сам стильовий файл правити - не дуже вдала ідея - при оновленні системи все зникне. Краще зробити локальну копію, але там, де система буде її бачити. І використовувати змінений стиль. На жаль, буде втрачено сумісність для компіляції на різних системах. Але це шлях найменших втрат, як на мене. Ось патч, з нього ідея має бути зрозумілою, змін не багато, можна й руками вбити:

--- /usr/share/texlive/texmf-dist/bibtex/bst/gost/gost2003.bst  2012-09-11 02:02:52.000000000 +0300
+++ /home/my-home-dir/texmf/bibtex/bst/gost2003m.bst   2015-11-07 01:39:13.287229021 +0200
@@ -107,7 +107,7 @@
     { ", " * write$ }
     { output.state after.block =
         { add.period$ write$
-          " " quote$ "--- " * *  write$
+          "--- " write$
           newline$
           "\newblock " write$
         }
@@ -838,7 +838,7 @@
     }
     { month empty$
         'year
-        { year ". " quote$ "--- " month * * * * }
+        { year ".--- " month * * }
       if$
     }
   if$

PS Маємо надію, що невдовзі будуть дозволені й інші стилі оформлення бібліографії, а отже можна буде перейти або на ГОСТ-2008 (де цієї проблеми нема), або на АРА, або на кому що більше подобається...
« Змінено: 2016-07-04 18:16:22 від basilio »