Das Antwortbeispiel aus einer Frage von mir erzeugt einen Warnhinweis:

Latex reported missing or unavailable character(s).

Im Logfile erscheint dann

Missing character: There is no + in font nullfont!
Missing character: There is no 0 in font nullfont!
Missing character: There is no . in font nullfont!
Missing character: There is no 1 in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no + in font nullfont!
Missing character: There is no 0 in font nullfont!
Missing character: There is no . in font nullfont!
Missing character: There is no 1 in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no t in font nullfont!

Hierzu nochmals das Antwortbeispiel:

\documentclass[12pt]{article}

\usepackage{tikz}
\usetikzlibrary{patterns}

\makeatletter
\pgfdeclarepatternformonly[\LineSpace]{my north east lines}{\pgfqpoint{-1pt}{-1pt}}{\pgfpoint{\LineSpace+0.2pt}{\LineSpace+0.2pt}}{\pgfqpoint{\LineSpace}{\LineSpace}}%
{
  \pgfsetcolor{\tikz@pattern@color}
  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
  \pgfpathlineto{\pgfqpoint{\LineSpace + 0.1pt}{\LineSpace + 0.1pt}}
  \pgfusepath{stroke}
}
\newdimen\LineSpace
\tikzset{
  line space/.code={\LineSpace=#1},
  line space=3pt
}
\makeatother

\begin{document}
  \begin{tikzpicture}
    \draw[red,fill,pattern color=blue,line space=10pt,pattern=my north east lines] (0,0) rectangle (2,3);
  \end{tikzpicture}
\end{document}

Das ganze lässt sich auf die Zeile

\pgfpathlineto{\pgfqpoint{\LineSpace+0.1pt}{\LineSpace+0.1pt}}

zurückführen. Wenn man dort jeweils "+0.1pt" entfernt, kommen die Warnhinweise nicht mehr.

Woran liegt das und gibt es eine Lösung dafür?

gefragt 23 Sep '19, 15:21

tom75's gravatar image

tom75
2.2k187884
Akzeptiert-Rate: 57%


Die Meldung kam schon im Beispiel aus der Frage selbst und liegt daran, dass an der Stelle kein +0.1pt erlaubt ist. Wie der Erklärung zu tikzpicutre in Abschnitt 12.2.1 der Anleitung zu entnehmen ist, schaltet TikZ für tikzpicture temporär den Font auf \nullfont um, damit alle Textausgaben außerhalb von den Stellen, an denen sie erlaubt sind, unterbunden werden. So würde beispielsweise mit:

  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}Butter
  \pgfpathlineto{\pgfqpoint{\LineSpace+0.1pt}{\LineSpace+0.1pt}}
  \pgfusepath{stroke}

ebenfalls kein Butter ausgegeben, sondern in der log-Datei:

Missing character: There is no B in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!

gemeldet.

Beseitigen kann man das einfach, indem man das wirkungslose +0.1pt an der Stelle weglässt oder beispielsweise

\documentclass[12pt]{article}

\usepackage{tikz}
\usetikzlibrary{patterns}

\makeatletter
\pgfdeclarepatternformonly[\LineSpace]{my north east lines}{\pgfqpoint{-1pt}{-1pt}}{\pgfpoint{\LineSpace+0.2pt}{\LineSpace+0.2pt}}{\pgfqpoint{\LineSpace}{\LineSpace}}%
{
  \pgfsetcolor{\tikz@pattern@color}
  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
  \pgfpathlineto{\pgfqpoint{\dimexpr\LineSpace+0.1pt}{\dimexpr\LineSpace+0.1pt}}
  \pgfusepath{stroke}
}
\newdimen\LineSpace
\tikzset{
  line space/.code={\LineSpace=#1},
  line space=3pt
}
\makeatother

\begin{document}
  \begin{tikzpicture}
    \draw[red,fill,pattern color=blue,line space=10pt,pattern=my north east lines] (0,0) rectangle (2,3);
  \end{tikzpicture}
\end{document}

verwendet. Besser wäre vermutlich, die Coordinaten erst mit \pgfmathparse zu berechnen und einer Variablen zuzuweisen und dann diese zu verwenden. Aber ich kenne mich mit TikZ nicht so besonders aus.

Permanenter link

beantwortet 23 Sep '19, 15:46

der_zornige_juergen's gravatar image

der_zornige_...
1.3k210
Akzeptiert-Rate: 33%

bearbeitet 24 Sep '19, 08:59

gast3's gravatar image

gast3
(ausgesetzt)

1

Danke! Ich habe in \pgfqpoint das "q" übersehen und mich gewundert, warum oben im Beispiel \pgfpoint{\LineSpace+0.2pt} keine Probleme verursacht.

(23 Sep '19, 15:57) tom75

Die Analyse der Ursache ist sehr gut. Als Lösung würde ich allerdings, wie von tom75 vorgeschlagen, die Verwendung von \pgfpoint an Stelle von \pgfqpoint empfehlen. Das erlaubt (auf Kosten der Ausführungsgeschwindigkeit) Berechnungen.

(24 Sep '19, 08:56) gast3
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728
×27

gestellte Frage: 23 Sep '19, 15:21

Frage wurde gesehen: 5,125 Mal

zuletzt geändert: 24 Sep '19, 08:59