
titlesec을 사용하고 'Chapter' 라벨이 ALLCAPS로 렌더링되도록 챕터의 형식을 지정하려고 합니다. \MakeUppercase를 사용하면 원하는 결과를 얻을 수 있습니다.
\titleformat
{\chapter} % command
[display] % shape
{\bfseries\Large\itshape} % format
{\sffamily\huge\MakeUppercase\chaptertitlename{ }\thechapter} % label
{0.5ex} % sep
{
\rule{\textwidth}{1pt}
\vspace{1ex}
\centering
} % before-code
[
\vspace{-0.5ex}%
\rule{\textwidth}{0.3pt}
] % after-code
하지만 \uppercase를 사용하면 Missing { inserted. \chapter{The First Chapter}
오류가 발생합니다.
\titleformat
{\chapter} % command
[display] % shape
{\bfseries\Large\itshape} % format
{\sffamily\huge\uppercase\chaptertitlename{ }\thechapter} % label
{0.5ex} % sep
{
\rule{\textwidth}{1pt}
\vspace{1ex}
\centering
} % before-code
[
\vspace{-0.5ex}%
\rule{\textwidth}{0.3pt}
] % after-code
저는 pdfTeX 3.14159265-2.6-1.40.19(TeX Live 2018/W32TeX)를 사용하고 있습니다. MikTeX 2.9.7100 x64를 사용하면 동일한 오류가 발생합니다. 이것은 Windows 7에 있습니다.
왜 대문자를 사용할 수 없는지 알아낼 수 있습니다. 다른 사람이 이 문제를 겪고 있다면 디버깅하는 데 많은 시간을 소비하지 않기 위해 이렇게 묻습니다.
감사합니다!
내 전체 문서는
\documentclass[a4paper,12pt]{book}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{titlesec}
\titleformat
{\chapter} % command
[display] % shape
{\bfseries\Large\itshape} % format
{\sffamily\huge\uppercase\chaptertitlename{ }\thechapter} % label
{0.5ex} % sep
{
\rule{\textwidth}{1pt}
\vspace{1ex}
\centering
} % before-code
[
\vspace{-0.5ex}%
\rule{\textwidth}{0.3pt}
] % after-code
\begin{document}
\author{TeXstudio Team}
\title{Simple Book Example}
\date{January 2013}
\frontmatter
\maketitle
\tableofcontents
\mainmatter
\chapter{The First Chapter}
And now for something completely new
\chapter{The Second Chapter}
\backmatter
% bibliography, glossary and index would go here.
\end{document}
답변1
latex는 ASCII가 아닌 문자로 UTF-8을 사용하는 경우 많은 텍스트, 거의 모든 텍스트를 파괴하기 \MakeUppercase
때문에 제공합니다. \uppercase
그러나 여기서 구체적인 오류는 다음과 같습니다.
\uppercase\chaptertitlename
교정장치는 선택사항이 아니고 필수입니다
\uppercase{\chaptertitlename}
따라서 표시되는 중괄호 누락 오류입니다.
그러나 위에서 언급한 것처럼 단순히 ASCII 대문자 테이블을 사용하고 이를 UTF-8 바이트에 적용하므로 악센트 문자를 사용하는 텍스트의 UTF-8 인코딩이 중단되어 \uppercase
유효한 UTF-8이 아닌 항목이 생성됩니다.
답변2
이 시도:
\documentclass{article}
\newcommand{\test}{{abc}def}
\begin{document}
\uppercase\test
\end{document}
출력은 다음과 같습니다
재미있는? 약간.
사실은\uppercase
TeX 프리미티브입니다.필요하다 {
그 후에. 이를 위해 이후에 토큰을 확장합니다. 모든 \relax
토큰이나 공간 토큰은 무시되고 확장이 재개됩니다. 이 확장 프로세스는 확장할 수 없는 또 다른 토큰이 발견되자마자 종료됩니다. 만약 그렇다면 {
TeX는 실행을 진행합니다 \uppercase
. 그렇지 않으면 오류가 발생하고 {
해당 토큰을 삽입하고 다시 읽습니다.
\test
이것은 위의 재미있는 출력을 설명해야 합니다. 결과 의 확장은 에 의해 처리되고 {abc}def
" ABCdef"를 얻습니다.{abc}
\uppercase
반대로 는 \MakeUppercase
인수가 하나인 매크로입니다.
인수 주위에 중괄호를 생략하지 마세요. 그리고 \uppercase
LaTeX는 피하세요.