
Я заметил, что заглавная буква, за которой следует знак препинания, заставляет последующий склеивающий элемент вести себя как обычный межсловный склеивающий элемент и не меняет фактор пробела. Это в основном нормально, когда за заглавной буквой следует точка, поскольку инициалы встречаются довольно часто (например, D. E. Knuth
), но не нормально, когда за заглавной буквой следует восклицательный знак, вопросительный знак, запятая, точка с запятой или запятая.
Я предоставил MWE, который отображает фактор пробела, когда за знаком препинания ( .
, !
, ?
, :
, ;
, ,
) следует )
, ]
, или }
для трех случаев: когда знак препинания следует за (a) строчной буквой, (b) заглавной буквой, (c) заглавной буквой с \@
перед следующим знаком препинания. Я знаю, что csquotes
пакет уже обрабатывает фактор пробела после закрывающей кавычки.
Вместо добавления \@
после каждой заглавной буквы вышеупомянутых знаков препинания, я сейчас думаю о добавлении макроса в мои документы, который будет обрабатывать все заглавные буквы как строчные с учетом пробела. Смотрите код egreg:Отключение межсловного интервала для точек после заглавных букв
Мне интересно узнать мнение сообщества LaTeX по этому вопросу.
\documentclass{article}
\usepackage[fontsize=9pt]{fontsize}
\usepackage{geometry}
\usepackage{multicol}
\setlength{\columnseprule}{0.5pt}
\raggedright
\usepackage{stix2}
%
%The following macro makes all uppercase letters behave like the lowercase with respect to the space factor.
%Source: https://tex.stackexchange.com/questions/60876/disabling-interword-spacing-for-periods-following-capital-letters
%\count255=`A
%\loop
% \ifnum\count255<`Z
% \sfcode\count255=1000
% \advance\count255 by 1
%\repeat
%
\begin{document}
%
\begin{multicols}{4}[\section*{LaTeX Space Factors After Punctuation}]
Period
\par
\verb|abc.|
abc.
\the\spacefactor
\par
\verb|ABC.|
ABC.
\the\spacefactor
\par
\verb|ABC\@.|
ABC\@.
\the\spacefactor
%
\par
\bigskip
Exclamation Mark
\par
\verb|abc!|
abc!
\the\spacefactor
\par
\verb|ABC!|
ABC!
\the\spacefactor
\par
\verb|ABC\@!|
ABC\@!
\the\spacefactor
%
\par
\bigskip
Question Mark
\par
\verb|abc?|
abc?
\the\spacefactor
\par
\verb|ABC?|
ABC?
\the\spacefactor
\par
\verb|ABC\@?|
ABC\@?
\the\spacefactor
%
\par
\bigskip
Colon
\par
\verb|abc:|
abc:
\the\spacefactor
\par
\verb|ABC:|
ABC:
\the\spacefactor
\par
\verb|ABC\@:|
ABC\@:
\the\spacefactor
%
\par
\bigskip
Semicolon
\par
\verb|abc;|
abc;
\the\spacefactor
\par
\verb|ABC;|
ABC;
\the\spacefactor
\par
\verb|ABC\@;|
ABC\@;
\the\spacefactor
%
\par
\bigskip
Comma
\par
\verb|abc,|
abc,
\the\spacefactor
\par
\verb|ABC,|
ABC,
\the\spacefactor
\par
\verb|ABC\@,|
ABC\@,
\the\spacefactor
%
\par
.)
\par
\verb|abc.)|
abc.)
\the\spacefactor
\par
\verb|ABC.)|
ABC.)
\the\spacefactor
\par
\verb|ABC\@.)|
ABC\@.)
\the\spacefactor
%
\par
\bigskip
!)
\par
\verb|abc!|
abc!
\the\spacefactor
\par
\verb|ABC!|
ABC!
\the\spacefactor
\par
\verb|ABC\@!|
ABC\@!
\the\spacefactor
%
\par
\bigskip
?)
\par
\verb|abc?)|
abc?)
\the\spacefactor
\par
\verb|ABC?)|
ABC?)
\the\spacefactor
\par
\verb|ABC\@?)|
ABC\@?)
\the\spacefactor
%
\par
\bigskip
:)
\par
\verb|abc:)|
abc:)
\the\spacefactor
\par
\verb|ABC:)|
ABC:)
\the\spacefactor
\par
\verb|ABC\@:)|
ABC\@:)
\the\spacefactor
%
\par
\bigskip
;)
\par
\verb|abc;)|
abc;)
\the\spacefactor
\par
\verb|ABC;)|
ABC;)
\the\spacefactor
\par
\verb|ABC\@;)|
ABC\@;)
\the\spacefactor
%
\par
\bigskip
,)
\par
\verb|abc,)|
abc,)
\the\spacefactor
\par
\verb|ABC,)|
ABC,)
\the\spacefactor
\par
\verb|ABC\@,)|
ABC\@,)
\the\spacefactor
%
\par
.]
\par
\verb|abc.]|
abc.]
\the\spacefactor
\par
\verb|ABC.]|
ABC.]
\the\spacefactor
\par
\verb|ABC\@.]|
ABC\@.]
\the\spacefactor
%
\par
\bigskip
!]
\par
\verb|abc!|
abc!
\the\spacefactor
\par
\verb|ABC!|
ABC!
\the\spacefactor
\par
\verb|ABC\@!|
ABC\@!
\the\spacefactor
%
\par
\bigskip
?]
\par
\verb|abc?]|
abc?]
\the\spacefactor
\par
\verb|ABC?]|
ABC?]
\the\spacefactor
\par
\verb|ABC\@?]|
ABC\@?]
\the\spacefactor
%
\par
\bigskip
:]
\par
\verb|abc:]|
abc:]
\the\spacefactor
\par
\verb|ABC:]|
ABC:]
\the\spacefactor
\par
\verb|ABC\@:]|
ABC\@:]
\the\spacefactor
%
\par
\bigskip
;]
\par
\verb|abc;]|
abc;]
\the\spacefactor
\par
\verb|ABC;]|
ABC;]
\the\spacefactor
\par
\verb|ABC\@;]|
ABC\@;]
\the\spacefactor
%
\par
\bigskip
,]
\par
\verb|abc,]|
abc,]
\the\spacefactor
\par
\verb|ABC,]|
ABC,]
\the\spacefactor
\par
\verb|ABC\@,]|
ABC\@,]
\the\spacefactor
%
\par
.\}
\par
\verb|abc.\}|
abc.\}
\the\spacefactor
\par
\verb|ABC.\}|
ABC.\}
\the\spacefactor
\par
\verb|ABC\@.\}|
ABC\@.\}
\the\spacefactor
%
\par
\bigskip
!\}
\par
\verb|abc!|
abc!
\the\spacefactor
\par
\verb|ABC!|
ABC!
\the\spacefactor
\par
\verb|ABC\@!|
ABC\@!
\the\spacefactor
%
\par
\bigskip
?\}
\par
\verb|abc?\}|
abc?\}
\the\spacefactor
\par
\verb|ABC?\}|
ABC?\}
\the\spacefactor
\par
\verb|ABC\@?\}|
ABC\@?\}
\the\spacefactor
%
\par
\bigskip
:\}
\par
\verb|abc:\}|
abc:\}
\the\spacefactor
\par
\verb|ABC:\}|
ABC:\}
\the\spacefactor
\par
\verb|ABC\@:\}|
ABC\@:\}
\the\spacefactor
%
\par
\bigskip
;\}
\par
\verb|abc;\}|
abc;\}
\the\spacefactor
\par
\verb|ABC;\}|
ABC;\}
\the\spacefactor
\par
\verb|ABC\@;\}|
ABC\@;\}
\the\spacefactor
%
\par
\bigskip
,\}
\par
\verb|abc,\}|
abc,\}
\the\spacefactor
\par
\verb|ABC,\}|
ABC,\}
\the\spacefactor
\par
\verb|ABC\@,\}|
ABC\@,\}
\the\spacefactor
\end{multicols}
%
\end{document}
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
решение1
Меня в первую очередь беспокоят две вещи: (a) Мое предложение нарушит другие желаемые функции LaTeX, классы документов и пакеты (b) Мое предложение не является лучшей практикой (хотя, возможно, мое предложение будет проще для новых пользователей)
Да, это главная проблема. Если вы создадите класс документа, который использует это соглашение, то, хотя вы можете считать правило "проще", поведение не будет таким, как описано в любом руководстве по (la)tex, и любые фрагменты latex, скопированные из других документов или сгенерированные стандартными стилями библиографии, не будут иметь защитных знаков, поэтому A. N. Other
получат пробел в конце предложения. Поэтому, хотя технически то, что вы предлагаете, будет работать, я бы не считал это хорошей практикой для класса документа для общего использования.