En körning av mallen för flerkällresearch producerade en bra rapport om investeringsinstrument, och skrev sedan ut den dåligt. Nittiofem markörer på formen [^1] fanns mitt i texten, och nio rader på formen [^1]: staplades nedanför. Både på webben och på telefonen.
Orsaken är att fotnoter inte är en del av markdown. Det är en utökning, och ingen av de två markdown-motorerna vi levererar — en på webben, en annan på mobilen — implementerar den. Vi bad modellen om exakt den formen, och renderade den sedan som bokstavlig text.
En omskrivare, två motorer
I stället för att lära båda renderarna samma utökning skrivs markörerna om innan någon av dem ser dem, till en enkel länk som båda redan renderar identiskt. Definitionerna extraheras och returneras separat, och det som följde dem finns kvar som dokumentets svans. Hakparenteserna finns kvar i länktexten, så staplade citat läses som [1][2], inte 12.
På webben ritas citatet som upphöjd text, definitionerna renderas som en lista med riktiga ankare, ett klick på en scrollar dit och får raden att blinka, och numret i listan hoppar tillbaka till första platsen där det citerades. Att hovra visar definitionen utan att flytta sig. På telefonen ritas samma markörer i accentfärgen, och ett tryck på en scrollar panelen till motsvarande rad. Länkar som inte är citat fortsätter att öppnas i en webbläsare som förut.
Källkorten under en rapport har aldrig påverkats — de kommer från ett annat håll och har alltid varit korrekta.
Och i nedladdningen
En rapport du laddar ner som .docx, .pdf eller .md gick genom en annan konverterare, som skrev ut de råa markörerna direkt i dokumentet. En dokumentspecifikation har ingen upphöjd text, så ett citat skrivs ut som [3], och varje definition öppnar sin egen rad som börjar med [3]. Indragna fortsättningsrader ansluts till sin definition. Siffrorna i filen är samma som siffrorna på skärmen.
Första försöket var fel på ett sätt vi redan hade skydd mot
Den första versionen gjorde fotnotsnumren till vanliga fragmentlänkar — href="#fn-3". Under det <base href="/"> en enkelsidig applikation behöver löses ett naket fragment upp mot webbplatsens rot, så länken pekar på startsidan. Klickhanteraren avbröt navigeringen, så det fungerade — och skulle fortsätta fungera tills någon rörde vid den hanteraren.
En kontroll vi redan hade exakt för detta mönster blev röd vid den lokala körningen innan push. Numren är nu knappar; de scrollar, flyttar fokus, och respekterar läsarens inställning för minskad rörelse.