Strona Ansel jest zbudowana przy użyciu Hugo 0.146 . Jest to generator statycznych stron internetowych, który pozwala budować bardzo szybkie strony z plików Markdown. Dla Ansel stworzono niestandardowy szablon oraz wiele niestandardowych shortcode’ów. Najpierw musisz zainstalować rozszerzoną wersję Hugo na swoim komputerze, choć drobne zmiany można wprowadzać bezpośrednio w plikach Markdown bez budowania całej strony.
Pobieranie kodu źródłowego
Ta strona
Dokumentacja Ansel
Dokumentacja Ansel jest ważną częścią strony Ansel, ale ponieważ podlega innej licencji i jest forkiem dtdocs na licencji GNU/GPL, nie może znajdować się w tym repozytorium. Chcemy edytować obie jako pakiet, ale musimy mieć możliwość commitowania ich osobno do różnych repozytoriów. Oto rozwiązanie.
Dokumentacja Ansel jest pobierana automatycznie jako moduł tej strony na Twój dysk w ramach skryptu build-modules.sh powyżej, który również automatycznie generuje przetłumaczone strony za pomocą plików .po. Znajdziesz ją w lokalnym folderze strony, w _vendor/github.com/aurelienpierreeng/ansel-doc/. Żaden plik nie powinien być tam edytowany ręcznie, to wyłącznie treść generowana automatycznie.
Aby edytować dokumentację Ansel, wykonaj
A następnie edytuj (angielską) treść w ansel-doc/content.
Edycja interaktywna / podgląd na żywo
Uruchamianie serwera deweloperskiego
Hugo pozwala otworzyć wyrenderowaną wersję strony na lokalnym serwerze deweloperskim, aby podejrzeć wprowadzane zmiany w przeglądarce internetowej.
Jeśli chcesz edytować tylko tę stronę, uruchom z katalogu ./ansel-website:
1hugo server --disableFastRenderJeśli chcesz edytować dokumentację i widzieć wyniki w czasie rzeczywistym jako część tej strony, po sklonowaniu dokumentacji (patrz poprzedni krok) uruchom z katalogu ./ansel-website:
1env HUGO_MODULE_REPLACEMENTS="github.com/aurelienpierreeng/ansel-doc -> ../../ansel-doc/" hugo server --disableFastRenderTa sztuczka spowoduje dynamiczne wczytanie modułu dokumentacji z Twojego lokalnego folderu, a nie z GitHuba, co oznacza, że lokalne zmiany wprowadzone w dokumentacji natychmiast pojawią się na głównej stronie za pośrednictwem Twojego serwera deweloperskiego.
Aktualizowanie tłumaczeń stron internetowych
Zobacz Tłumaczenie.
Edytowanie plików
Otwieranie Obsidian
Otwórz ./ansel-website/content jako sejf (vault) Obsidian. Obsidian potrafi rozwiązywać dowiązania symboliczne folderów tak, jakby były folderami lokalnymi, więc w zasadzie widzimy stronę jako całość, co ułatwia tworzenie w edytorze wewnętrznych odnośników między dokumentacją a stroną.
Praca w Obsidian jest znacznie przyjemniejsza niż praca w VS Code przy edytowaniu „zwykłego" tekstu (w przeciwieństwie do tekstu kodu pisanego czcionką o stałej szerokości), ponieważ edytor jest mniej przeładowany, a czcionki o stałej szerokości męczą wzrok po kilku godzinach przy całych akapitach.
- Markdown w Hugo nie obsługuje call-outów Obsidian . Musisz używać pokazanych powyżej ramek alertów jako shortcode’ów Hugo, ale nie będą się one renderować w Obsidian,
- Hugo nie obsługuje wikilinków Obsidian , więc będziesz musiał trzymać się zwykłych odnośników Markdown ze ścieżkami względnymi. Warto dodać, że Obsidian zapewnia dla nich autouzupełnianie ścieżek.
- Obsidian nie obsługuje list definicji Markdown , ale i tak możesz ich używać (po prostu nie będą renderowane w podglądach),
- Obsidian nie obsługuje identyfikatorów nagłówków Markdown ,
Jednak:
- Obsidian obsługuje tagi Hugo w nagłówku YAML (frontmatter) i implementuje je w znacznie przyjemniejszy sposób, który nadaje o wiele więcej sensu poziomemu linkowaniu treści,
- Obsidian obsługuje aliasy Hugo do przekierowywania stron,
Radzenie sobie z uszkodzonymi odnośnikami
Istnieje do tego rozszerzenie: https://github.com/graydon/obsidian-dangling-links . Po zainstalowaniu pokazuje ono odnośniki, które nie wskazują na żaden istniejący plik w całym sejfie, w tym na głównej stronie i w dokumentacji:

W widoku grafu węzłów uszkodzone odnośniki pojawiają się również według swojej ścieżki ../../stuff.md, a nie według nazwy pliku.
W edytorze każdej strony można zobaczyć, które strony linkują do aktualnie otwartej strony, wraz z kotwicą nagłówka, co jest przydatne przed zmianą nagłówków, a tym samym zniszczeniem wewnętrznych odnośników:

Poprawianie powiązania treści
Linkowanie poziome, poprzez tagi i wewnętrzne odnośniki, jest równie ważne jak linkowanie pionowe, podążające za hierarchicznymi drzewami.
Obsidian potrafi pokazać dostępne w całym sejfie tagi do ponownego wykorzystania:

Potrafi również pokazać najlepszych kandydatów na wewnętrzne odnośniki dla każdego słowa kluczowego na stronie, w rozwijanej sekcji „Unlinked mentions":

Sprawdzanie organizacji treści
Często trudno jest śledzić kolejność nagłówków na stronie Markdown przy korzystaniu z typowego edytora kodu. Obsidian ma widżet „outline", który pozwala mieć spis treści na oku podczas pisania, aby zapewnić spójność hierarchii nagłówków:

Wytyczne
Dokumentacja nie jest podręcznikiem ani kursem. Powinna odpowiadać na pytania:
- „co robi GUI?"
- „jak mogę skonfigurować oprogramowanie?"
- „jakie są wąskie gardła, zastrzeżenia, ograniczenia i pułapki?".
Dokumentacja oczekuje, że czytelnik wie, co ma zrobić, i wyjaśnia, jak to zrobić. Kompletne procesy pracy od początku do końca, samouczki, tło naukowe itd., czyli co i dlaczego, trafiają na stronę (zasoby, procesy pracy).
Folder z treścią
Folder z treścią znajduje się w katalogu content/, a struktura folderów i podfolderów wygeneruje strukturę sekcji i podsekcji na stronie. Pliki są pisane w Markdown i mają rozszerzenie .md. Każdy plik powinien mieć następujący nagłówek (frontmatter):
- Tytuł jest obowiązkowy. Używaj wielkich liter na początku, jak w prawdziwym języku.
- Data jest ustawiana raz na zawsze przy tworzeniu strony i nie powinna się już nigdy zmieniać.
- Aktualizuj datę
lastmodna dzisiejszą za każdym razem, gdy aktualizujesz plik, i dodaj ją, jeśli jej nie ma. W internecie każda treść jest nietrwała, a to pomaga czytelnikom domyślić się, czy strona jest nadal aktualna w chwili czytania, czy nie. draftustawione natrueoznacza, że strona będzie w repozytorium (w kodzie źródłowym), ale nie pojawi się na froncie strony. Ustawione nafalse, strona jest widoczna na froncie.tagssą opcjonalne, ale mile widziane. Treść jest domyślnie zorganizowana pionowo (hierarchicznie). Tagi pomagają tworzyć poziome (tematyczne) powiązania między stronami. Trafne tagi to na przykład „film processing", „HDR", „monochrome" itd. W pierwszej kolejności wykorzystuj istniejące tagi. Tagi powinny zawsze być listą, nawet gdy jest tylko jeden (w przeciwnym razie budowanie Hugo się psuje).
Odnośniki wewnętrzne
Odnośniki wewnętrzne powinny w miarę możliwości używać ścieżek względnych od bieżącego pliku, co nie jest domyślnym zachowaniem Hugo. Celem jest możliwość podążania za względnymi odnośnikami w lokalnym systemie plików z dowolnego nowoczesnego edytora tekstu, jak w każdym pliku README.md. Używamy własnego kodu, aby ponownie połączyć te względne odnośniki z plikami zgodnie ze strukturą strony Hugo (po kompilacji).
Podczas budowania strony odnośniki wewnętrzne są sprawdzane i zostanie zgłoszony błąd krytyczny (przerywający kompilację), jeśli nie można znaleźć strony wskazywanej przez odnośnik wewnętrzny. Musisz mieć je na oku. W konsoli mogą pojawiać się również błędy niekrytyczne (czyli WARNING [languages] REF_NOT_FOUND), ponieważ przekształcamy linker Hugo w niestandardowy sposób, ale te można zignorować.
Przykład odnośników wewnętrznych:
Kotwice stron
Jeśli tworzysz odnośniki do kotwic stron, jak /my-post.md#some-heading, upewnij się, że nie wstawiasz ukośnika / między slug strony a hasztag # w swoim kodzie Markdown, bo inaczej plik zostanie potraktowany jako katalog i nie zostanie znaleziony.
Odnośniki bezwzględne
Załóżmy, że chcesz utworzyć odnośnik do strony wsparcia. Oto wszystkie możliwości utworzenia odnośnika do tej strony:
[support](/support/)-> poprawne dla Hugo, ale działa dopiero po skompilowaniu strony, więc nie da się go łatwo debugować w edytorze kodu. proszę unikać[support](/support.md)-> niepoprawne dla Hugo, zadziała jako efekt uboczny naszego niestandardowego przetwarzania odnośników, ale w ogóle nie da się go debugować w edytorze kodu. proszę unikać[support](./support.md)-> niepoprawne dla Hugo, działa zgodnie z zamierzeniem naszego niestandardowego przetwarzania odnośników, jeśli jest wywoływane na przykład ze strony indeksu. proszę tego używać[support](../support.md)-> niepoprawne dla Hugo, działa zgodnie z zamierzeniem naszego niestandardowego przetwarzania odnośników, jeśli jest wywoływane z podfolderu witryny, jak/contribute. proszę tego używać
Jeśli strona znajduje się w czymś, co Hugo nazywa pakietem strony lub sekcji , użyj odnośnika do jej pliku index.md lub _index.md.
- Rób:
- Nie rób (nawet jeśli technicznie działa):
Odnośniki zewnętrzne
Odnośniki zewnętrzne nie są sprawdzane, ponieważ zajmowałoby to zbyt dużo czasu podczas budowania, a budowanie i tak może odbywać się bez dostępu do sieci. Zawsze używaj https:// w zewnętrznych adresach URL, gdy to możliwe.
Tytuły (nagłówki)
Tytuły H1 (zakodowane jako # Tytuł w Markdown) są zarezerwowane dla tytułów stron i każda strona powinna mieć dokładnie jeden H1. darktable-doc mocno tu zawaliła, używając H1 jako tytułów sekcji — to błąd zarówno pod względem SEO, jak i dostępności. Sieć jest semantyczna, ponieważ jest projektowana dla robotów indeksujących i czytników ekranu tak samo, jak dla ludzi.
Pamiętaj, że Hugo automatycznie generuje kotwice odnośników dla nagłówków, używając tekstu nagłówka. Dlatego powstrzymaj się od używania symboli w nagłówkach, zwłaszcza (od)ukośników, które zepsują kotwice odnośników.
Pamiętaj również, że te kotwice nagłówków mogą być używane na innych stronach do tworzenia bezpośrednich odnośników. Zmiana tekstu nagłówka zepsuje jego kotwicę i może zepsuć odnośniki zewnętrzne. Aby uniknąć psucia kotwic w odnośnikach zewnętrznych, możesz zmienić tekst nagłówka, wymuszając jego identyfikator na poprzedni, w ten sposób:
1### My New Heading {#my-old-heading}To zachowa odnośniki zewnętrzne do /my-post/#my-old-heading. Zobacz szczegóły…
Osadzanie obrazów
Hugo traktuje obrazy jako zasoby strony. Istnieją zasoby globalne, dla obrazów wykorzystywanych ponownie na kilku stronach, przechowywane w podfolderze assets/ głównego folderu kodu źródłowego, oraz zasoby lokalne, przechowywane w tym samym folderze co strona, która ich używa.
Podobnie jak w przypadku odnośników wewnętrznych, wszystko musi być linkowane względnie do kodu źródłowego w wersji hostowanej w lokalnym systemie plików, a nie względnie do skompilowanego HTML.
Zobacz jak tłumaczyć obrazy.
Zrzuty ekranu
Zrzuty ekranu są podstawą każdej dokumentacji oprogramowania z interfejsem graficznym. Opiekunowie darktable-doc odrzucają je pod pretekstem, że nie da się ich przetłumaczyć i wkrótce staną się przestarzałe z powodu częstotliwości zmian w GUI, ale to ogromny błąd pedagogiczny. Nawet w niewłaściwym języku zrzuty ekranu pomagają zobaczyć, czego szukać w oknie. Używaj ich. Staną się przestarzałe i mogą nie zostać przetłumaczone, tak samo jak reszta tekstu.
Informacje, ostrzeżenia, alerty
Motyw Ansel z głównej strony udostępnia shortcode’y do tworzenia alertów i ramek informacyjnych z użyciem systemu szablonów Hugo. Oto kod:
Treść ramek również może korzystać z Markdown.
Suwaki przed/po
Ponownie, korzystając z systemu szablonów Hugo, możesz wyświetlać suwaki przed/po, gdzie oba obrazy są nałożone na siebie. Przypomina to funkcję migawki (snapshot) ciemni w Ansel i darktable i potrafi skutecznie wyjaśnić działanie modułów i ustawień w sposób, który użytkownicy mogą odtworzyć w GUI. Oba obrazy, przed i po, muszą mieć ten sam rozmiar w pikselach.
Matematyka
Dokumentacja obsługuje MathJax skonfigurowany pod obsługę składni LaTeX. Choć celem nie jest pisanie literatury naukowej, istnieją pewne algorytmy złożone z mnożeń i dodawań, które łatwiej pokazać jako równania niż zapisywać w blokach tekstu.
Wbudowany LaTeX powinien być ujęty w $, a równania blokowe ujęte w $$. Jeśli używasz LaTeX, musisz poinformować Hugo, aby dołączył skrypt MathJax na stronie, ustawiając latex: true w nagłówku/frontmatterze strony Markdown.
Grafy Mermaid
Ansel intensywnie korzysta z potoków (pipeline), a te najlepiej opisywać za pomocą schematów blokowych. Mermaid.js jest teraz natywnie obsługiwany na GitHubie oraz w Visual Studio Code i świetnie się do tego nadaje. Możesz wypróbować go wizualnie tutaj i skopiować kod grafów do bloków kodu Markdown w ten sposób:
To renderuje się jako:
graph TD
A[Christmas] -->|Get money| B(Go shopping)
B --> C{Let me think}
C -->|One| D[Laptop]
C -->|Two| E[iPhone]
C -->|Three| F[fa:fa-car Car]
Ikony z Font Awesome v5 są obsługiwane przez główną stronę i dokumentację Ansel, z użyciem składni fa:fa-YOUR-ICON-CODE, jak pokazano w przykładzie powyżej. Użyj wyszukiwarki Font Awesome v5 , aby uzyskać kod fa- ikon, których chcesz użyć.
Grafy Mermaid są renderowane po stronie klienta w SVG w rozmiarze wyświetlania i mogą być tłumaczone jako tekst. Hugo jest skonfigurowany tak, aby automatycznie wykrywać te grafy i ładować bibliotekę JavaScript tylko wtedy, gdy jest potrzebna. GitHub również potrafi natywnie renderować grafy Mermaid podczas wyświetlania plików Markdown.
Zmiana adresów URL stron
Czasami ma sens reorganizacja treści i zmiana ścieżki niektórych stron. Aby nie zepsuć odnośników zewnętrznych, musisz zapisać stary adres URL nowej strony jako alias, w frontmatterze nowej strony, w ten sposób:
Uwagi
Kanał RSS
Dokumentacja ma zlokalizowany kanał RSS, na razie:
Jest to rozwiązanie nietypowe i ma pomóc użytkownikom śledzić zmiany oraz zmiany rozwojowe poprzez subskrypcję kanału RSS lub połączenie go z botami.
Datą stron dokumentacji ustawianą w kanale RSS jest parametr lastmod, czyli czas ostatniej modyfikacji. Ponieważ RSS nie posiada jast modified date, jest to najlepsze rozwiązanie, jakie na razie znalazłem.
Translated from English by : Claude. In case of conflict, inconsistency or error, the English version shall prevail.