Asciidoctor'da Türkçe Sözdizimi Vurgulama Hatası

Asciidoctor’la html dosyasını oluştururken Sol Resimdeki bir durumla karşılaşıyorum. Asciidoctor Python kodunda Türkçe karakterleri Pygments ile vurgularken bir sorunla karşılaştığı için karakteri class=“tok-err” niteliğinde ayrı bir html elementine alıyor (Sağ Resim), css kodu ise bu elementi kırmızı sınırla çiziyor (Alt Resim). Bu problem css dosyasındaki kodu yorum içerisine alarak çözebiliyoruz fakat söz konusu birden fazla html dosyası ise yeterli bir çözüm değil. Hatanın ne olduğunu hakkında yardımcı olabilir misiniz?

cmdpycmdpyhtmlcmdpycss

pygments.rb versiyon 1.2.1
Asciidoctor versiyon:

Asciidoctor 1.5.6.1 [http://asciidoctor.org]
Runtime Environment (ruby 2.4.3p205 (2017-12-14 revision 61247) [x64-mingw32]) (lc:IBM437 fs:Windows-1252 in:- ex:IBM437)

adoc kodunun bir kısmı:

= Python Belgeleri
YazBel Topluluğu
0.1, 13 Mayıs, 2017, YazBel Python Belgeleri
:version-label: Sürüm
:last-update-label: Son güncelleme
:icons: font
:source-highlighter: pygments
:source-language: python
:toc: left
:toc-title: İçindekiler

// Font simgelerinin çalışması için eklenmiştir.
++++
<script src="https://use.fontawesome.com/c38eb8c034.js"></script>
++++
// Burda içerik var
olmasıdır, özellikle de parametreler çok olunca:
[source,python]
----
>>> ad = "YazBel"
>>> yıl = 2018
>>> ay = "Şubat"
>>> gun = 12
>>> "Bu sitenin adı {ad}, bu yazı {yıl} yılının, {ay} ayının {gün}'sinde yazıldı".format(ad=ad, ay=ay, yıl=yıl, gün=gün)
"Bu sitenin adı YazBel, bu yazı 2018 yılının, Şubat ayının 12'sinde yazıldı"
----
Fakat f-string ile:
//Burda içerik var

kodun tüm içeriği githubda: https://raw.githubusercontent.com/yazbel/belgeler/master/python/index.adoc

Merhaba.

Sorun Asciidoctor’dan mı yoksa Pygments’ten mi bilemiyorum ama araştırdığım zaman Pygments ile ilgili şöyle bir belge buldum: http://pygments.org/docs/unicode/
Faydası olur mu emin değilim. Tabii bunu Asciidoctor’a uyarlamak da lazım.

Aslında en başta Pygments’i seçmemin nedeni, diğer sözdizimi renklendiricilerden çok daha sözdizimini desteklemesiydi. Ancak diğer renklendiricilerde piyasadaki gözde programlama dillerini destekliyorlar. Bu durumda en sorunsuz olan seçilip onunla yola devam edilebilir. Şu aşamada Asciidoctor’a a uygun olarak Rouge renklendiricisini denemenizi önerebilirim. Asciidoctor’da kod renklendirme ile ilgili daha fazla bilgi için şu bölüme bakabilirsiniz: https://asciidoctor.org/docs/user-manual/#source-code-blocks

İyi çalışmalar.

Pygments için verdiğiniz linkten yararlanmaya çalıştım fakat başaramadım. Rouge ile de aynı durumla karşılaştım. Bir Sphinx kullanıcısı da Pygments ile aynı durumla karşılaşmış: https://github.com/sphinx-doc/sphinx/issues/4225. Yani sorun Adoc’ta değil. Coderay için encoding-aware olduğu yazıyordu, denedim ve sorun yok. Şimdilik Coderay ile devam edebiliriz, teşekkür ederim.

1 Like

Merhaba.

Asciidoctor’da Coderay ile kod renklendirmesi yaptığımda şöyle bir çıktı alıyorum:

Ekran%20Al%C4%B1nt%C4%B1s%C4%B1

Gördüğünüz gibi ş ve ğ karakterleri diğer karakterlere göre daha küçük görünüyor. HTML’i incelediğimde bunun fonttan kaynaklandığını görüyorum; sırasıyla “Droid Sans Mono”, “DejaVu Sans Mono” ve monospace fontları kullanılıyor. Muhtemelen ilk iki fontta bu karakterler yer almıyor, bu sebeple tanımlı bir başka monospace fonttan bu karakterler alınıyor. Ancak son olarak başvurulan bu fonttaki karakterler daha küçük boyutta. En başta bu monospace fontunu kullanarak sorunu çözebiliyorum ancak bu sefer de kodlar metinlere göre oldukça küçük görünüyor. Metnin fontu ile de oynamak istemiyorum.

Yukarıda açıklamaya çalıştığım gibi takıldım. @Ven-Zallow, sizin yukarıdaki resimde böyle bir sorun görünmüyor. Bu sorunu nasıl çözdüğünüzü paylaşabilir misiniz?