Я настроил документ для отображения слова определенным образом. Я также использовал пакет times, чтобы задать шрифт документа, как показано.
\documentclass[a4paper,11pt,openany,oneside]{sphinxmanual}
\usepackage[T1}{fontenc}
\usepackage[english]{babel}
\usepackage{times}
\usepackage{color}
\definecolor{myred}{RGB}{165,0,33}
\DeclareRobustCommand\accuroam{%
\usefont{OT1}{cmr}{m}{n}Accu%
\usefont{OT1}{cmss}{m}{n}\textcolor{myred}{ROAM}
}%
\begin{document}
...
\end{document}
Все это, кажется, работает, пока не встретится команда \accuroam
. Затем она меняет текст, следующий за ней, на нормальный вес cmss (такой же, как ROAM в \accuroam).
Как это исправить, чтобы изменилось только слово, а весь остальной текст остался прежним?
Примечание: в настоящее время я использую pdflatex в качестве конструктора и пока не могу воспользоваться xelatex.
Любая помощь будет оценена по достоинству.
решение1
Я не уверен, что вам стоит переходить на Computer Modern, особенно если основным шрифтом документа является Times.
Проблема, как уже было сказано, в том, что \usefont...
TeX с этого момента использует выбранный шрифт (с учетом группировки).
Мое предложение:
\DeclareRobustCommand\accuroam{%
\textnormal{Accu\color{myred}\sffamily ROAM}%
}
С помощью \textnormal
вы выбираете основной шрифт документа (текущего размера); внутри него вы можете изменить цвет и семейство шрифтов; закрывающая фигурная скобка \sffamily
завершит его область действия.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{mathptmx}
\usepackage{color}
\definecolor{myred}{RGB}{165,0,33}
\DeclareRobustCommand\accuroam{%
\textnormal{Accu\color{myred}\sffamily ROAM}%
}
\begin{document}
We describe \accuroam{} which is a very bright idea.
\end{document}
решение2
Команды изменения шрифта:выключателькоманды. То есть они применяются ко всему последующему контенту до тех пор, пока не встретится другой переключатель или группа не закончится.
Исправьте проблему, поместив каждый специальный шрифт в группу с текстом, который он должен стилизовать. Я также добавил завершающий символ %
к строке, содержащей красный текст, чтобы предотвратить появление ложных пробелов в выводе:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{mathptmx} % `times' is obsolete
\usepackage{color}
\definecolor{myred}{RGB}{165,0,33}
\DeclareRobustCommand\accuroam{%
{\usefont{OT1}{cmr}{m}{n}Accu}%
{\usefont{OT1}{cmss}{m}{n}\textcolor{myred}{ROAM}}%
}%
\begin{document}
Test\dots \accuroam{}\dots Test.
\end{document}
Также обратите внимание, чтоtimes
Пакет устарел. Более новые альтернативы — это либоmathptmx
пакет или newtxtext
/ newtxmath
.
решение3
Я не вижу смысла возвращаться к кодировке OT1, поскольку вы все равно используете T1:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}% `times' is obsolete
\usepackage[scaled=.90]{helvet}
\usepackage{courier}
\usepackage{color}
\definecolor{myred}{RGB}{165,0,33}
\DeclareRobustCommand\accuroam{%
{%
\fontencoding{T1}%
\fontfamily{cmr}%
\fontseries{m}%
\fontshape{n}%
\selectfont Accu%
\fontfamily{cmss}%
\selectfont\textcolor{myred}{ROAM}%
}%
}%
\begin{document}
Test\dots \accuroam{}\dots Test.
\end{document}
Я использовал более длинные команды спецификации шрифта (вместо \usefont...
), чтобы просто прояснить, что происходит. Обратите внимание, что второй переключатель требует только спецификации семейства, поскольку первый переключатель уже гарантирует, что кодировка, форма и серия верны.