Изменение (т.е. частичное изменение) настроек выступания символов микротипа для определенных символов

Изменение (т.е. частичное изменение) настроек выступания символов микротипа для определенных символов

Я хотел бы отключить или изменить выдвижение символов (включенное с помощью microtype) для определенных символов.

Позвольте мне проиллюстрировать проблему с коротким тире, которое, на мой взгляд, выступает слишком широко:

без выступа с выступом

(слева: без выступа; справа: с выступом)

Однако я не могу отключить выпячивание с помощью \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}

Я также получаю следующее предупреждение:

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

В соответствии сКак вызвать \SetProtrusion микротипа в преамбуле?, включение строки \LoadMicrotypeFile{ptm}непосредственно перед \SetProtrusionпомогает; если я попробую это, это, похоже, решит проблему для --( \textendash), но (1) раздражающее предупреждение останется и (2) мой код отключитвсевыступ (переопределяя весь список значений выступания моим коротким списком). Каков правильный способ частично переопределить настройки выступания символов по умолчанию? В идеале должен быть способ, который уберет все предупреждения, не отключая при этом важную microtypeфункциональность.

решение1

Вот как можно расширить или изменить существующие настройки:

  1. Убедитесь, что настройки, которые вы хотите изменить, уже загружены; в преамбуле это не гарантируется, поэтому вам понадобится \LoadMicrotypeFile.

  2. Создайте новые настройки, которые загружают настройки по умолчанию с помощью loadключа.

  3. Если вы хотите установить выступ для любого глифа равным нулю, вам придется сделать это явно — объявление пустых значений выступа (например, \textendash = {,}) ничего не изменит.

  4. Если полученное предупреждение вас беспокоит, вы можете отключить его, загрузив пакет с помощью verbose=silent; однако учтите, что это также отключит все остальные microtypeпредупреждения. (Думаю, что-то вроде overrideключа для настроек было бы полезно, но пока все как есть.) РЕДАКТИРОВАТЬ: Начиная с версии 2.7 вы больше не будете получать предупреждение, если переопределенный список совпадает с загруженным.

Итак, чтобы превратить это в код:

\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
    }

Чтобы настроить параметры для более чем одного шрифта, вам придется сделать то же самое еще раз (загрузить настройки и создать новые), т.е. выполнить \SetProtrusion(with \LoadMicrotypeFile) несколько раз:

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

Другой, более простой, но менее детальной возможностью может быть загрузка пакета с factorменее чем 1000; это масштабирует значения выступа для всех глифов всех шрифтов. Например,

\usepackage[factor=500]{microtype}

уменьшит вдвое все значения выступания.

решение2

В настоящее время я загружаю microtypeс корректировками выступа следующим образом. Возможно, кто-то заинтересован в использовании моих значений, особенно для Times ( ptm), которые, по моему скромному мнению, имеют слишком большой выступ.Обратите внимание, что мой выбор корректировок не претендует на исчерпывающий характер.

\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

Связанный контент