So ändern Sie die Reihenfolge in neuen Befehlen

So ändern Sie die Reihenfolge in neuen Befehlen

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 Longder Argumente in \citeCLLong( #1Long, \emph{#2Long}) LaTeX z. B. dazu bringen würde, \PerLongstatt nur \Peraus meiner Autorenliste zu wählen, obwohl ich den \quoteCLBefehl mit dem Argument aufrufe \Per. Dass der LongTeil hinzugefügt würde, bevor entschieden wird, ob gelesen \Peroder gelesen \PerLongwerden 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 \citeCLSie \citeCLLongverwenden

\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“ spacingund „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.

Bildbeschreibung hier eingeben

Antwort2

Ändern Sie Ihre ersten beiden Argumente in reine Textzeichenfolgen und verwenden Sie die \csname \endcsnameKonstruktion, 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}

Bildbeschreibung hier eingeben

verwandte Informationen