我正在尝试在命令内打印,但打印后我看到要打印的文本(命令的参数)的长度发生了变化......
我想知道这其中有什么原因以及我该如何避免这种情况。
我会尽力回答我的问题...但可能不会给出最好的答案...所以,如果你愿意,你可以尝试回答...
梅威瑟:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\setlength\parskip{10pt}
\setlength\parindent{0pt}
\newcommand{\myprint}[1]{
#1
}
\begin{document}
\section{In a section}
This is a text that will occupy one full line and some more, I hope I can show it
\myprint{This is a text that will occupy one full line and some more, I hope I can show it}
\end{document}
输出:
答案1
删除虚假空格(标记为)。我还删除了和<--
的虚假参数。如果您不想缩进单个段落,请使用。如果您不想缩进\parskip
\parindent
\noindent
每一个段落,使用该parskip
包,但这会使印刷工的眼睛流血。
\documentclass{article}
\usepackage[utf8]{inputenc}
\newcommand{\myprint}[1]{% <--
#1% <--
}
\begin{document}
\noindent This is a text that will occupy one full line and some more, I hope I can show it
\noindent\myprint{This is a text that will occupy one full line and some more, I hope I can show it}
\end{document}
答案2
编辑:长答案以了解发生了什么
(欲了解更简短的答案,请参阅@Henri Menke 的回答)
许多 LaTeX 用户也是程序员,作为 LaTeX 用户,您会成为某种程序员。编码对于结构样式有一些规则,因此编写 C 程序时,我们可以在以下样式之间进行选择:
1.
#include <stdio.h>
int main(void)
{
int i=0;
for (i=0;i<10;i++)
{
printf("Loop Count i=%d",i);
}
return 0;
}
2.
#include <stdio.h>
int main(void){
int i=0;
for (i=0;i<10;i++){
printf("Loop Count i=%d",i);
}
return 0;
}
或 3.
#include <stdio.h>
int main(void){
int i=0;
for (i=0;i<10;i++){printf("Loop Count i=%d",i);}
return 0;
}
在 C 编程中结果完全相同,但在 LaTeX 编码中类似的结果不会相同。
空行
一个原因是,在 LaTeX 编码中,空行相当于 \par 命令并插入一个段落。因此,下一个示例将生成以下输出:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{parskip}
\setlength{\parindent}{8pt}
\setlength{\parskip}{15pt}
\newcommand{\myprint}[1]{
#1
}
\begin{document}
\section{In a section}
First line in first section
\def\mymaintext{This is my text that will occupy a big part of remaining line.}
Test before.\mymaintext
Test line after.
Test before.\myprint{\mymaintext}
Test line after.
\end{document}
空间
通过删除空行,我们从打印命令中删除了 \par 命令,但没有删除空格:
\newcommand{\myprint}[1]{
#1
}
上述命令将在我们的参数前生成一个额外的空格(那里会有一个空格)并在其后生成一个额外的空格(后面有两个空格)。
以下更改是等效的:
\newcommand{\myprint}[1]{#1}
或者
\newcommand{\myprint}[1]{%
#1%
}
并且我们已经删除了多余的空白处。
更多内容请查看主题太空代币@TH. 在问题的评论中给了我这个信息。
以下答案是我在了解到底发生了什么之前的第一个答案,我把它留在这里,供那些会阅读评论的人参考
我确实不知道为什么会发生这种情况,但我发现一个解决方案是在 width=\linewidth 的小页面中打印。
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\setlength\parskip{10pt}
\setlength\parindent{0pt}
\newcommand{\myprint}[1]{
\begin{minipage}{\linewidth}
#1
\end{minipage}
}
\begin{document}
\section{In a section}
This is a text that will occupy one full line and some more, I hope I can show it
\myprint{This is a text that will occupy one full line and some more, I hope I can show it}
\end{document}
输出: