![如何避免 \NewDocumentEnvironment 中出现不需要的空格?](https://linux22.com/image/264723/%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%20%5CNewDocumentEnvironment%20%E4%B8%AD%E5%87%BA%E7%8E%B0%E4%B8%8D%E9%9C%80%E8%A6%81%E7%9A%84%E7%A9%BA%E6%A0%BC%EF%BC%9F.png)
我尝试制作自己的“引文”环境,并希望第一个字母加粗,并且比其他字母稍大一些。由于\lettrine
无法按我想要的方式工作,我尝试自己编写代码。
L
一切都按预期进行,除了一件事:我在和之间得到了一个空白orem Ipsum
,我不知道它是从哪里来的
\documentclass[12pt,a4paper,listof=totoc,oneside]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{xcolor}
\definecolor{citecolor}{HTML}{6495ED}
% Weil ich parameter im end-teil haben will
\usepackage{xparse}
% Eigene Quotes
\usepackage{csquotes}
\NewDocumentEnvironment{myquote}{m o}{%
\begin{samepage}%
\list{}{%
\setlength{\leftmargin}{1.5em}%
\setlength{\rightmargin}{1.5em}%
\setlength{\topsep}{0em}%
\setlength{\parsep}{0pt}%
\setlength{\partopsep}{0pt}%
\setlength{\parskip}{0pt}%
}%
\item\relax%
\begin{itshape}%
% Anführungszeichen
\begin{large}\textbf{\textcolor{citecolor}{\flqq}}\end{large}
% Großer Buchstabe (wenn angegeben)
\IfNoValueTF{#2}{}{{\Large{\textbf#2}}}%
}{%
\begin{large}\textbf{\textcolor{citecolor}{\frqq}}\end{large}
\end{itshape}%
\endlist%
% Quelle
\hspace*{\fill}\mbox{\footnotesize\textcolor{citecolor}{\cite{#1}}}%
\vspace{1.5em}%
\end{samepage}%
}%
\begin{document}
% Calling the Environment
\begin{myquote}{WIKI1}[L]
orem Ipsum...
\end{myquote}
\end{document}
答案1
后面的空格是行尾\begin{myquote}{WIKI1}[L]
,因为“开始部分”开始了一个段落,并且这个空格不会被忽略。解决方案是添加\ignorespaces
。
我对你的定义做了一些其他更改;避免\begin{itshape}
或\begin{large}
:\itshape
和\large
是不带参数的声明。
\documentclass[12pt,a4paper,listof=totoc,oneside]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{xcolor}
\definecolor{citecolor}{HTML}{6495ED}
% Weil ich parameter im end-teil haben will
\usepackage{xparse}
% Eigene Quotes
\usepackage{csquotes}
\NewDocumentEnvironment{myquote}{m o}
{%
\par
\begin{samepage}%
\list{}{%
\setlength{\leftmargin}{1.5em}%
\setlength{\rightmargin}{1.5em}%
\setlength{\topsep}{0em}%
\setlength{\parsep}{0pt}%
\setlength{\partopsep}{0pt}%
\setlength{\parskip}{0pt}%
}%
\item\relax
\itshape
% Anführungszeichen
{\large\bfseries\textcolor{citecolor}{\flqq}}%
% Großer Buchstabe (wenn angegeben)
\IfNoValueTF{#2}{}{{\Large\bfseries#2}}%
\ignorespaces
}
{%
{\large\bfseries\textcolor{citecolor}{\frqq}}%
\endlist
% Quelle
\hspace*{\fill}\mbox{\footnotesize\textcolor{citecolor}{\cite{#1}}}%
\vspace{1.5em}%
\end{samepage}%
}
\begin{document}
% Calling the Environment
\begin{myquote}{WIKI1}[L]
orem Ipsum...
\end{myquote}
\end{document}
答案2
后面的空格来自文档中的L
换行符。您可以通过添加到定义中来忽略那里的空白。还有一些缺失会导致灰色后面出现额外的空格[L]
\ignorespaces
%
<<
\begin{large}\textbf{\textcolor{citecolor}{\flqq}}\end{large}%<<
% Großer Buchstabe (wenn angegeben)
\IfNoValueTF{#2}{}{{\Large{\textbf#2}}}%
\ignorespaces}{%
%%%%%%%%%%
\begin{large}\textbf{\textcolor{citecolor}{\frqq}}\end{large}%<<