
Da ich ein ziemlicher LaTeX-Neuling bin, tut mir leid, ich weiß nicht, wie ich meine Frage stellen soll, ohne die ganze Geschichte zu erzählen:
In einem großen Dokument habe ich einen recht einfachen Befehl zum Zitieren (klassisch-lateinischer) Autoren erstellt, der anderen Konventionen folgt als ich sie zum Zitieren moderner Autoren verwende (wo ich BibTeX usw. verwende). Dies ist der Befehl, den ich verwende:
\newcommand{\citeCL}[3]{#1, \emph{#2}, \textbf{#3}}
%\citeCL{author}{text}{chapter}
Als erste zwei Argumente verwende ich noch weitere Befehle aus einer Liste von Autorennamen und Texttiteln (da ich jeden Namen mehrmals verwende und es inkonsistent sein kann, wenn ich ihn jedes Mal vollständig schreibe), z. B.
\newcommand{\Per}{N. Per.}
\newcommand{\PerRud}{Rud. gram.}
Innerhalb des Dokuments könnte ich den Cite-Befehl folgendermaßen aufrufen:
\citeCL{\Per}{\PerRud}{1117}
Diesen Zitierbefehl verwende ich sowohl in Fußnoten als auch in dieser Zitatumgebung:
\newcommand{\QuoteCL}[4]{
\vspace{5pt}
\begin{quote}\itemsep1pt\parskip0pt\parsep0pt\begin{spacing}{1}
#4 \par\hspace*{\fill}\footnotesize{\citeCL{#1}{#2}{#3}}
\end{spacing}
\end{quote}
\vspace{-20pt}
}
Im Dokument rufe ich den Befehl mit den gleichen drei Argumenten auf wie für den \citeCL
, und zusätzlich mit dem zu zitierenden Text, z. B.
\QuoteCL{\Per}{\PerRud}{§ 1119}{Quis maxime proponendus est quem studeant adolescentes imitari? Marcus Cicero.}
Das funktioniert alles gut und ich habe es in meiner gesamten Arbeit verwendet. Nun möchte ich zwischen der Schreibweise der Autorennamen und Titel in Fußnoten und in Zitaten unterscheiden, indem ich in Fußnoten die abgekürzte Form und in Zitaten eine neue, lange Form verwende. Mein intuitiver, naiver Ansatz war dieser:
\newcommand{\citeCL}[3]{#1, \emph{#2}, \textbf{#3}}
% Original command now used for footnotes
\newcommand{\citeCLLong}[3]{#1Long, \emph{#2Long}, \textbf{#3}}
% New command to be called by the \quoteCL command.
\newcommand{\Per}{N. Per.}
\newcommand{\PerLong}{Niccolò Perotti}
\newcommand{\PerRud}{Rud. gram.}
\newcommand{\PerRudLong}{Rudimenta grammatices}
% Duplicating the list of names and titles, adding a long version to be called by the \citeCLLong:
\newcommand{\QuoteCL}[4]{
\vspace{5pt}
\begin{quote}\itemsep1pt\parskip0pt\parsep0pt\begin{spacing}{1}
#4 \par\hspace*{\fill}\footnotesize{\citeCLLong{#1}{#2}{#3}}
\end{spacing}
\end{quote}
\vspace{-20pt}
}
% The command is changed to call the new \citeCLLong
\begin{document}
\QuoteCL{\Per}{\PerRud}{§ 1119}{Quis maxime proponendus est quem studeant adolescentes imitari? Marcus Cicero.}
\end{document}
Nun zu meiner Frage: Ich hatte gehofft, dass das Hinzufügen Long
der Argumente in \citeCLLong
( #1Long, \emph{#2Long}
) LaTeX z. B. dazu bringen würde, \PerLong
statt nur \Per
aus meiner Autorenliste zu wählen, obwohl ich den \quoteCL
Befehl mit dem Argument aufrufe \Per
. Dass der Long
Teil hinzugefügt würde, bevor entschieden wird, ob gelesen \Per
oder gelesen \PerLong
werden soll. Aber es schreibt z. B. „N. Per.Long“ statt choosing \PerLong
= „Niccolò Perotti“.
Kann man das irgendwie machen, oder gibt es eine andere, intelligentere Lösung, bei der ich nicht meine gesamte Arbeit durchgehen und alle Argumente in allen Zitaten ändern muss, sondern die Kontrolle bereits ab der Präambel möglich ist? Und bei der meine Zitate in den Fußnoten in ihrer ursprünglichen Form bleiben?
Antwort1
Verwenden Sie eine Bedingung; mit einem neuen Befehl können Sie auf zusammenhängende Weise Befehle mit "kurzen" und "langen" Formen definieren. Dann können \citeCL
Sie \citeCLLong
verwenden
\documentclass{article}
\usepackage[utf8]{inputenc}
\newif\ifCLLong
\newcommand{\citeCL}[3]{\CLLongfalse #1, \emph{#2}, \textbf{#3}}
\newcommand{\citeCLLong}[3]{\CLLongtrue #1, \emph{#2}, \textbf{#3}}
\newcommand{\QuoteCL}[4]{%
\begin{quote}
#4 \par\hspace*{\fill}\footnotesize\citeCLLong{#1}{#2}{#3}
\end{quote}
}
% Abstraction for easing the definition
\newcommand{\newshortlongcommand}[3]{\newcommand{#1}{\ifCLLong #3\else #2\fi}}
\newshortlongcommand{\Per}{N. Per.}{Niccolò Perotti}
\newshortlongcommand{\PerRud}{Rud. gram.}{Rudimenta grammatices}
\begin{document}
Testo introduttivo\footnote{\citeCL{\Per}{\PerRud}{§ 1119}}
\QuoteCL{\Per}{\PerRud}{§ 1119}{Quis maxime proponendus est quem studeant adolescentes imitari? Marcus Cicero.}
\end{document}
\end{document}
(Ich habe die Definition von \QuoteCL
„durchkommen mit“ spacing
und „unwesentlichen Dingen“ vereinfacht.)
Auf diese Weise können Sie auch Argumente ohne Bedenken direkt eingeben, zum Beispiel
\QuoteCL{Niccolò Perotti}{Rudimenta Grammatices}{§ 1119}{...}
würde genauso funktionieren.
Antwort2
Ändern Sie Ihre ersten beiden Argumente in reine Textzeichenfolgen und verwenden Sie die \csname
\endcsname
Konstruktion, um das gewünschte Ergebnis zu erzielen. (Hinweis: Ich habe die Leerzeichenumgebung deaktiviert, da ich nicht wusste, welches Paket sie enthält.)
\documentclass{article}
\usepackage[utf8]{inputenc}
\newcommand{\citeCL}[3]{\csname#1\endcsname, \emph{\csname#2\endcsname}, \textbf{#3}}
% Original command now used for footnotes
\newcommand{\citeCLLong}[3]{\csname#1Long\endcsname,
\emph{\csname#2Long\endcsname}, \textbf{#3}}
% New command to be called by the \quoteCL command.
\newcommand{\Per}{N. Per.}
\newcommand{\PerLong}{Niccolò Perotti}
\newcommand{\PerRud}{Rud. gram.}
\newcommand{\PerRudLong}{Rudimenta grammatices}
% Duplicating the list of names and titles, adding a long version to be called by the \citeCLLong:
\newcommand{\QuoteCL}[4]{
\vspace{5pt}
\begin{quote}\itemsep1pt\parskip0pt\parsep0pt%
%\begin{spacing}{1}%
#4 \par\hspace*{\fill}\footnotesize{\citeCLLong{#1}{#2}{#3}}
%\end{spacing}
\end{quote}
\vspace{-20pt}
}
% The command is changed to call the new \citeCLLong
\begin{document}
\QuoteCL{Per}{PerRud}{§ 1119}{Quis maxime proponendus est quem studeant adolescentes imitari? Marcus Cicero.}
\vspace{6em}
\citeCL{Per}{PerRud}{§ 1119}
\end{document}