2016-08-09 240 views

Antwort

1

Ja, es gibt eine Möglichkeit, den Leader-Dots-Effekt in Praw zu erstellen.

Wenn Sie:

  1. die gesamte verfügbare Breite
  2. Breite des Inhaltsverzeichnis-Eintrag
  3. Breite der Seitennummer
  4. Breite eines einzelnen Führer dot

space_for_dots = 1. - 2. - 3.

dots = (space_for_dots/4) * '.'

toc_entry = entry_string + dots + entry_page_number


Um die Breite einer Zeichenkette in Garnelen zu berechnen, können Sie compute_width_of verwenden, die Teil der Schriftklassen ist.

Ein Beispiel für das Bild, das Sie wie folgt aussehen könnte hinzugefügt:

def build_toc_entry(left_text, right_text, available_width, text_size) 
    left_text_width = font(YOUR_FONT).compute_width_of(left_text, size: text_size) 
    right_text_width = font(YOUR_FONT).compute_width_of(right_text, size: text_size) 
    dot_width = font(YOUR_FONT).compute_width_of('.', size: text_size) 
    space_width = font(YOUR_FONT).compute_width_of(' ', size: text_size) 

    space_for_dots = available_width - left_text_width - right_text_width - space_width * 2 
    dots = '.' * (space_for_dots/dot_width) 

    "#{left_text} #{dots} #{right_text}" # return the finished toc entry 
end 

text 'Locate the information on the page indicated.' 
text build_toc_entry('Leader Dots', '3', 350, 8) 
text build_toc_entry('Dingbats', '5', 350, 8) 
text build_toc_entry('Bullets', '8', 350, 8) 
+0

, Dies scheint ein guter Anfang, aber die Punkte in Führung vertikal ausrichten müssen. Ich denke, das wird mehr Logik erfordern. – Gene

+0

Nun, ich bin mir nicht sicher, was du meinst. In dem Bild OP vorausgesetzt, beginnen die Leaderpunkte direkt nach dem ToC-Element und gehen bis vor die Seitennummer. Mein Beispiel tut genau das, wenn Sie möchten, dass jede ToC-Zeile dieselbe Länge hat, verwenden Sie einfach die gleiche 'available_width'. Es sei denn, Sie sprechen tatsächlich davon, dass jeder einzelne Punkt perfekt unter/über einem anderen Punkt platziert wird. Ich habe das nicht speziell in Betracht gezogen, aber ich denke, das Hauptproblem bei diesem Effekt besteht darin, dass man nicht über compute_width_of Bescheid weiß, und durch die Verwendung dieser Funktion kann man auch so etwas wie diese Art der Ausrichtung erreichen. – sLeitner

+0

Genau das meinte ich. Schau dir am besten jedes Inhaltsverzeichnis an. Die Punkte verschiedener Einträge werden in vertikalen Spalten ausgerichtet. Es ist eine jener Satzkonventionen, die so häufig vorkommen, dass sie unbemerkt bleiben, bis sie verletzt werden. Hier ein Beispiel: https://www.w3.org/Style/Examples/007/leaders.en.html Und wenn Sie sich das Bild des OP ansehen, werden Sie feststellen, dass die Punkte auch dort vertikal ausgerichtet sind. – Gene