
Ich versuche, titlesec zu verwenden und meine Kapitel so zu formatieren, dass die Beschriftung „Kapitel“ in GROSSBUCHSTABEN wiedergegeben wird. Wenn ich \MakeUppercase verwende, erhalte ich das gewünschte Ergebnis.
\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
Aber wenn ich \uppercase verwende, erhalte ich eine Missing { inserted. \chapter{The First Chapter}
Fehlermeldung.
\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
Ich verwende pdfTeX 3.14159265-2.6-1.40.19 (TeX Live 2018/W32TeX). Ich erhalte den gleichen Fehler, wenn ich MikTeX 2.9.7100 x64 verwende. Dies ist unter Windows 7.
Ich kann herausfinden, warum ich \uppercase nicht verwenden kann. Ich frage das, damit jeder, der dieses Problem hat, nicht viel Zeit mit der Fehlerbehebung verbringt.
Danke schön!
Mein ganzes Dokument ist
\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}
Antwort1
Latex bietet \MakeUppercase
, weil \uppercase
es viel Text zerstört, fast den gesamten Text, wenn Sie UTF-8 mit Nicht-ASCII-Buchstaben verwenden. Der spezifische Fehler hier ist jedoch
\uppercase\chaptertitlename
Die Klammern sind nicht optional, sie müssen
\uppercase{\chaptertitlename}
daher der von Ihnen angezeigte Fehler „Fehlende Klammer“.
Wie oben jedoch angemerkt wird dadurch die UTF-8-Kodierung aller Texte mit Akzentbuchstaben zerstört, da \uppercase
einfach die ASCII-Tabelle für Großbuchstaben verwendet und auf die UTF-8-Bytes angewendet wird, was zu einem Ergebnis führt, das kein gültiges UTF-8 ist.
Antwort2
Versuche dies:
\documentclass{article}
\newcommand{\test}{{abc}def}
\begin{document}
\uppercase\test
\end{document}
Die Ausgabe ist
Lustig? Ein bisschen.
Tatsache ist, dass es \uppercase
sich um ein TeX-Grundelement handelt, daserfordert {
danach. Zu diesem Zweck erweitert es Token danach; jedes \relax
Token oder Leerzeichen wird ignoriert und die Erweiterung wird fortgesetzt. Dieser Erweiterungsprozess endet, sobald ein weiteres nicht erweiterbares Token gefunden wird: Wenn dies der Fall ist {
, fährt TeX mit der Ausführung fort \uppercase
; andernfalls wird ein Fehler ausgegeben, {
das Token wird eingefügt und erneut gelesen.
Dies sollte die lustige Ausgabe oben erklären: Die Erweiterung von \test
ergibt {abc}def
, {abc}
wird also von verarbeitet \uppercase
und wir erhalten „ABCdef“.
Im Gegenteil, \MakeUppercase
es handelt sich um ein Makro mit einem Argument.
Vermeiden Sie das Weglassen von Klammern um Argumente. Und vermeiden Sie dies \uppercase
bei LaTeX.