No it isn't. The reason is that any computer that gets your library installed on it now has two copies of LiquidCrytal.h and LiquidCrystal.cpp.

While this may not seem like a big deal, what happens if the LiquidCrystal library gets updated? Now, the two copies are not the same. A sketch that uses LiquidCrystal (why couldn't that have been called LQ? Much easier to type) and needs the new behavior will work, until the owner tries using your library.

Consider, too, what happens if someone wants to derive from your library. Now, there need to be 3 copies of LiquidCrystal on the computer.

Soon, it becomes a nightmare to try to keep all the copies of LiquidCrystal up-to-date.

In my opinion, it is better to be up front about that fact that your library depends on LiquidCrystal.

#include "LiquidCrystal.h"only because LiquidCrystal is not in the core libraries and therefore cannot be found at compile time. It would have been nice if the path to non-core libraries such as LiquidCrystal was included in the default library search path at compile time.

Perhaps this can be corrected in future versions of Arduino software? Or is there a better way?