Ändern (d. h. teilweises Außerkraftsetzen) der Zeichenvorsprungseinstellungen von Microtype für bestimmte Zeichen

Ändern (d. h. teilweises Außerkraftsetzen) der Zeichenvorsprungseinstellungen von Microtype für bestimmte Zeichen

Ich möchte die Zeichenhervorhebung (aktiviert durch microtype) für bestimmte Zeichen deaktivieren oder ändern.

Lassen Sie mich das Problem mit dem Halbgeviertstrich veranschaulichen, der für meinen Geschmack viel zu weit hervorsteht:

ohne Überstand mit Vorsprung

(links: ohne Überstand; rechts: mit Überstand)

Ich kann den Vorsprung jedoch nicht deaktivieren mit \SetProtrusion:

\documentclass{memoir}
\usepackage{mathptmx}
\usepackage[T3,T1]{fontenc}
\usepackage{microtype}
%\usepackage[protrusion=false]{microtype}
\SetProtrusion
  { encoding = T1,
    family   = ptm }
  { \textendash = {,0} }


\begin{document}

Word word word word word word word word word word word word word word -- word
word word word word word word word word word word word word word word word
word word word word word word word word word word word word word word word
word word word word word word ...

\end{document}

Ich erhalte außerdem folgende Warnung:

Package microtype Warning: protrusion codes list `ptm-T1' will override list
(microtype)                `q.tex/9' for font `T1/ptm///' on input line 105.

EntsprechendWie rufe ich \SetProtrusion von Microtype in der Präambel auf?, das Einfügen einer Zeile \LoadMicrotypeFile{ptm}direkt davor \SetProtrusionhilft; wenn ich das versuche, scheint das Problem für --( \textendash) zu beheben, aber (1) die lästige Warnung bleibt bestehen und (2) mein Code deaktiviertalleVorsprung (indem ich die gesamte Liste der Vorsprungswerte mit meiner kurzen Liste überschreibe). Was ist die richtige Art, die Standardeinstellungen für den Zeichenvorsprung teilweise zu überschreiben? Idealerweise gibt es eine Möglichkeit, bei der alle Warnungen vermieden werden, ohne wichtige microtypeFunktionen zu deaktivieren.

Antwort1

So können Sie bestehende Einstellungen erweitern oder ändern:

  1. Stellen Sie sicher, dass die Einstellungen, die Sie ändern möchten, bereits geladen sind. In der Präambel ist dies nicht garantiert, daher benötigen Sie \LoadMicrotypeFile.

  2. Erstellen Sie über den loadSchlüssel neue Einstellungen, die die Standardeinstellungen laden.

  3. Wenn Sie den Vorsprung für ein beliebiges Glyph auf Null setzen möchten, müssen Sie dies explizit tun – das Deklarieren leerer Vorsprungswerte (z. B. \textendash = {,}) ändert nichts.

  4. Wenn Sie die Warnung stört, die Sie erhalten, können Sie sie unterdrücken, indem Sie das Paket mit laden verbose=silent. Beachten Sie jedoch, dass dadurch auch alle anderen microtypeWarnungen unterdrückt werden. (Ich denke, so etwas wie ein overrideSchlüssel für die Einstellungen wäre nützlich, aber im Moment ist es so, wie es ist.) BEARBEITEN: Seit Version 2.7 erhalten Sie keine Warnung mehr, wenn die überschriebene Liste mit der geladenen Liste identisch ist.

So wandeln Sie dies in Code um:

\usepackage[verbose=silent]{microtype}
\LoadMicrotypeFile{ptm}
\SetProtrusion
    [ name = ptm-adapted, % the name is optional
      load = ptm-T1 ]
    { encoding = T1,
      family   = {ptm,ptmx,ptmj} }
    { 
      \textendash = { ,0},      % left protrusion will remain untouched, 
                                % right protrusion set to zero
     %\textendash = {150,150},  % this would set protrusion on both sides to 150
    }

Um die Einstellungen für mehr als eine Schriftart anzupassen, müssen Sie den gleichen Vorgang (Laden der Einstellungen und Erstellen neuer Einstellungen) erneut durchführen, d. h. \SetProtrusion(mit \LoadMicrotypeFile) mehrfach ausführen:

\LoadMicrotypeFile{ppl}
\SetProtrusion
    [ load = ppl-T1 ]
    { encoding = T1,
      family   = {ppl,pplx,pplj} }
    { ... }

Eine andere, einfachere, aber weniger feinkörnige Möglichkeit könnte darin bestehen, das Paket mit einem Wert factorkleiner als 1000 zu laden. Dadurch werden die Protrusionswerte für alle Glyphen aller Schriftarten skaliert. Zum Beispiel:

\usepackage[factor=500]{microtype}

würde alle Protrusionswerte halbieren.

Antwort2

Ich lade derzeit microtypemit Protrusionsanpassungen wie folgt. Vielleicht ist jemand daran interessiert, meine Werte zu verwenden, insbesondere für Times ( ptm), das meiner Meinung nach zu viel Protrusion hat.Bitte beachten Sie, dass meine Auswahl der Anpassungen keinen Anspruch auf Vollständigkeit erhebt.

\usepackage[verbose=silent]{microtype}
    \LoadMicrotypeFile{ptm}
    \SetProtrusion
      [ name = ptm-adapted,
        load = ptm-T1 ]
      { encoding = T1,
        family   = {ptm,ptmx,ptmj} }
      { f = { ,-200},
        r = { ,-100},
        \textquoteleft     = {300, }, % default uses 500
        \textquoteright    = { ,300}, % default uses 500
        \textquotedblleft  = {75, }, % default uses 300
        \textquotedblright = { ,75}, % default uses 400
        \textendash = {0,0}, % default is 300/300
        \textemdash = {0,0}, % default is 200/200
        /           = { ,-100}, % default uses 200
        (           = {67, }, % default uses 100
        )           = { ,67}, % default uses 200
        {,}         = { ,167}, % default uses 500
        :           = { ,167}, % default uses 500
        ;           = { ,100}, % default uses 300
        .           = { ,233}, % default uses 700
        ?           = { ,33} } % default uses 100
    \SetProtrusion
      [ name = ptm-it-adapted,
        load = ptm-it-T1 ]
      { encoding = T1,
        family   = {ptm,ptmx,ptmj},
        shape    = {it,sl} }
      { f = { ,-300},
        : = { ,0}, % default uses 500
        . = { ,233} } % default uses 700
    \LoadMicrotypeFile{ppl}
    \SetProtrusion
      [ name = ppl-adapted,
        load = ppl-T1 ]
      { encoding = T1,
        family   = {ppl,pplx,pplj} }
      { \textquoteleft     = {150, }, % default uses 500
        \textquoteright    = { ,150}, % default uses 700
        \textquotedblleft  = {75, }, % default uses 300
        \textquotedblright = { ,75}, % default uses 400
        \textendash = {0,0}, % default is 300/300
        \textemdash = {0,0}, % default is 200/200
        /           = { ,100}, % default uses 300
        (           = {50, }, % default uses 100
        )           = { ,150}, % default uses 300
        {,}         = { ,250}, % default uses 500
        :           = { ,250}, % default uses 500
        ;           = { ,250}, % default uses 500
        .           = { ,350}, % default uses 700
        ?           = { ,100} } % default uses 200
    \SetProtrusion
      [ name = txtt ]
      { encoding = T1,
        family   = txtt,
        shape    = {it,sl} }
      { f = { ,-120},
        - = { ,300} } % in order to match ordinary hyphens' protrusion in body text

verwandte Informationen