%20%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BA%20%D0%B2%D1%8B%D1%81%D1%82%D1%83%D0%BF%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2%20%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D1%82%D0%B8%D0%BF%D0%B0%20%D0%B4%D0%BB%D1%8F%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D1%85%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2.png)
Я хотел бы отключить или изменить выдвижение символов (включенное с помощью 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
Вот как можно расширить или изменить существующие настройки:
Убедитесь, что настройки, которые вы хотите изменить, уже загружены; в преамбуле это не гарантируется, поэтому вам понадобится
\LoadMicrotypeFile
.Создайте новые настройки, которые загружают настройки по умолчанию с помощью
load
ключа.Если вы хотите установить выступ для любого глифа равным нулю, вам придется сделать это явно — объявление пустых значений выступа (например,
\textendash = {,}
) ничего не изменит.Если полученное предупреждение вас беспокоит, вы можете отключить его, загрузив пакет с помощьюРЕДАКТИРОВАТЬ: Начиная с версии 2.7 вы больше не будете получать предупреждение, если переопределенный список совпадает с загруженным.verbose=silent
; однако учтите, что это также отключит все остальныеmicrotype
предупреждения. (Думаю, что-то вродеoverride
ключа для настроек было бы полезно, но пока все как есть.)
Итак, чтобы превратить это в код:
\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